summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2002-05-03 13:25:31 +0000
committerMarc Espie <espie@cvs.openbsd.org>2002-05-03 13:25:31 +0000
commit41d54f3c757a338b66ced17516ab16b540d852fe (patch)
treee1382395bc183d629cfb3daf01b7bd2476d79d93 /sys
parent5663c2c00132f817c1500c1853797be8fca3c6b6 (diff)
82801CA/CAM works like previous models.
Suggested by csapuntz@, tested to work. Okay csapuntz@
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/pciide.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c
index 841b372cc95..665e5a0b465 100644
--- a/sys/dev/pci/pciide.c
+++ b/sys/dev/pci/pciide.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pciide.c,v 1.82 2002/04/01 16:57:54 gluk Exp $ */
+/* $OpenBSD: pciide.c,v 1.83 2002/05/03 13:25:30 espie Exp $ */
/* $NetBSD: pciide.c,v 1.127 2001/08/03 01:31:08 tsutsui Exp $ */
/*
@@ -307,6 +307,14 @@ const struct pciide_product_desc pciide_intel_products[] = {
0,
piix_chip_map
},
+ { PCI_PRODUCT_INTEL_82801CAM_IDE, /* Intel 82801CAM IDE (ICH2) */
+ 0,
+ piix_chip_map
+ },
+ { PCI_PRODUCT_INTEL_82801CA_IDE, /* Intel 82801CA IDE (ICH2) */
+ 0,
+ piix_chip_map
+ },
};
const struct pciide_product_desc pciide_amd_products[] = {
@@ -1499,6 +1507,8 @@ piix_chip_map(sc, pa)
case PCI_PRODUCT_INTEL_82801AB_IDE:
case PCI_PRODUCT_INTEL_82801BAM_IDE:
case PCI_PRODUCT_INTEL_82801BA_IDE:
+ case PCI_PRODUCT_INTEL_82801CAM_IDE:
+ case PCI_PRODUCT_INTEL_82801CA_IDE:
sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA;
break;
}
@@ -1511,6 +1521,8 @@ piix_chip_map(sc, pa)
break;
case PCI_PRODUCT_INTEL_82801BAM_IDE:
case PCI_PRODUCT_INTEL_82801BA_IDE:
+ case PCI_PRODUCT_INTEL_82801CAM_IDE:
+ case PCI_PRODUCT_INTEL_82801CA_IDE:
sc->sc_wdcdev.UDMA_cap = 5;
break;
default:
@@ -1541,7 +1553,9 @@ piix_chip_map(sc, pa)
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AA_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AB_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE) {
WDCDEBUG_PRINT((", IDE_CONTROL 0x%x",
pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)),
DEBUG_PROBE);
@@ -1598,7 +1612,9 @@ next:
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AA_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AB_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE) {
WDCDEBUG_PRINT((", IDE_CONTROL 0x%x",
pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)),
DEBUG_PROBE);
@@ -1759,11 +1775,15 @@ piix3_4_setup_channel(chp)
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AA_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AB_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE) {
ideconf |= PIIX_CONFIG_PINGPONG;
}
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CAM_IDE||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE) {
/* setup Ultra/100 */
if (drvp->UDMA_mode > 2 &&
(ideconf & PIIX_CONFIG_CR(channel, drive)) == 0)