diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2002-05-03 13:25:31 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2002-05-03 13:25:31 +0000 |
commit | 41d54f3c757a338b66ced17516ab16b540d852fe (patch) | |
tree | e1382395bc183d629cfb3daf01b7bd2476d79d93 /sys | |
parent | 5663c2c00132f817c1500c1853797be8fca3c6b6 (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.c | 30 |
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) |