summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrigoriy Orlov <gluk@cvs.openbsd.org>2002-08-30 16:21:44 +0000
committerGrigoriy Orlov <gluk@cvs.openbsd.org>2002-08-30 16:21:44 +0000
commit2e38499cf7af3d26f705d646ba0fcafb43d71257 (patch)
tree558388ab0859995a6edacf1997ed285e2495b264
parent307bf53d7b9f1d9e1ea1f4b281bd2ae624cce60b (diff)
Support for PDC20271 and PDC20276.
Enable UDMA6 for Ultra133 chips (PDC20269, PDC20271 and PDC20276). PDC20271 and PDC20276 not tested, but Free/NetBSD's source code claims that they works the same as the PDC20269. from Alexander Yurchenko <grange@rt.mipt.ru> csapuntz@ ok.
-rw-r--r--sys/dev/pci/pciide.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c
index c733b9741ac..da5952d31e2 100644
--- a/sys/dev/pci/pciide.c
+++ b/sys/dev/pci/pciide.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pciide.c,v 1.89 2002/08/09 20:26:45 jsyn Exp $ */
+/* $OpenBSD: pciide.c,v 1.90 2002/08/30 16:21:43 gluk Exp $ */
/* $NetBSD: pciide.c,v 1.127 2001/08/03 01:31:08 tsutsui Exp $ */
/*
@@ -467,6 +467,14 @@ const struct pciide_product_desc pciide_promise_products[] = {
{ PCI_PRODUCT_PROMISE_PDC20269,
IDE_PCI_CLASS_OVERRIDE,
pdc202xx_chip_map,
+ },
+ { PCI_PRODUCT_PROMISE_PDC20271,
+ IDE_PCI_CLASS_OVERRIDE,
+ pdc202xx_chip_map,
+ },
+ { PCI_PRODUCT_PROMISE_PDC20276,
+ IDE_PCI_CLASS_OVERRIDE,
+ pdc202xx_chip_map,
}
};
@@ -3732,11 +3740,19 @@ hpt_pci_intr(arg)
(sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20267 || \
(sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20268 || \
(sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20268R || \
- (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20269)
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20269 || \
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20271 || \
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20276)
#define PDC_IS_268(sc) \
((sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20268 || \
(sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20268R || \
- (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20269)
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20269 || \
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20271 || \
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20276)
+#define PDC_IS_269(sc) \
+ ((sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20269 || \
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20271 || \
+ (sc)->sc_pp->ide_product == PCI_PRODUCT_PROMISE_PDC20276)
void
pdc202xx_chip_map(sc, pa)
@@ -3780,7 +3796,9 @@ pdc202xx_chip_map(sc, pa)
}
sc->sc_wdcdev.PIO_cap = 4;
sc->sc_wdcdev.DMA_cap = 2;
- if (PDC_IS_265(sc))
+ if (PDC_IS_269(sc))
+ sc->sc_wdcdev.UDMA_cap = 6;
+ else if (PDC_IS_265(sc))
sc->sc_wdcdev.UDMA_cap = 5;
else if (PDC_IS_262(sc))
sc->sc_wdcdev.UDMA_cap = 4;