diff options
author | Alexander Yurchenko <grange@cvs.openbsd.org> | 2004-11-21 18:43:59 +0000 |
---|---|---|
committer | Alexander Yurchenko <grange@cvs.openbsd.org> | 2004-11-21 18:43:59 +0000 |
commit | 889225686c00e90a68e40d12520d127310ab5fb5 (patch) | |
tree | ca00a5ce1337e060c32e86f1e49b2b6d109fe610 /sys | |
parent | 8e432eaef0dcfb867538b75bff834e48ffdfc1d6 (diff) |
Intel ICH6/ICH6R IDE and SATA support.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/pci/pciide.c | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c index 52496f35422..1531ef4ddec 100644 --- a/sys/dev/pci/pciide.c +++ b/sys/dev/pci/pciide.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pciide.c,v 1.178 2004/10/19 13:07:00 grange Exp $ */ +/* $OpenBSD: pciide.c,v 1.179 2004/11/21 18:43:58 grange Exp $ */ /* $NetBSD: pciide.c,v 1.127 2001/08/03 01:31:08 tsutsui Exp $ */ /* @@ -367,6 +367,18 @@ const struct pciide_product_desc pciide_intel_products[] = { IDE_PCI_CLASS_OVERRIDE, piix_chip_map }, + { PCI_PRODUCT_INTEL_82801FB_IDE, /* Intel 82801FB (ICH6) IDE */ + IDE_PCI_CLASS_OVERRIDE, + piix_chip_map + }, + { PCI_PRODUCT_INTEL_82801FB_SATA, /* Intel 82801FB (ICH6) SATA */ + IDE_PCI_CLASS_OVERRIDE, + piix_chip_map + }, + { PCI_PRODUCT_INTEL_82801FR_SATA, /* Intel 82801FR (ICH6R) SATA */ + IDE_PCI_CLASS_OVERRIDE, + piix_chip_map + }, }; const struct pciide_product_desc pciide_amd_products[] = { @@ -1780,6 +1792,9 @@ piix_chip_map(sc, pa) case PCI_PRODUCT_INTEL_82801ER_SATA: case PCI_PRODUCT_INTEL_6300ESB_IDE: case PCI_PRODUCT_INTEL_6300ESB_SATA: + case PCI_PRODUCT_INTEL_82801FB_IDE: + case PCI_PRODUCT_INTEL_82801FB_SATA: + case PCI_PRODUCT_INTEL_82801FR_SATA: sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA; break; } @@ -1801,6 +1816,9 @@ piix_chip_map(sc, pa) case PCI_PRODUCT_INTEL_82801ER_SATA: case PCI_PRODUCT_INTEL_6300ESB_IDE: case PCI_PRODUCT_INTEL_6300ESB_SATA: + case PCI_PRODUCT_INTEL_82801FB_IDE: + case PCI_PRODUCT_INTEL_82801FB_SATA: + case PCI_PRODUCT_INTEL_82801FR_SATA: sc->sc_wdcdev.UDMA_cap = 5; break; default: @@ -1809,7 +1827,9 @@ piix_chip_map(sc, pa) } if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA) { + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA) { sc->sc_wdcdev.cap |= WDC_CAPABILITY_SATA; sc->sc_wdcdev.set_modes = sata_setup_channel; } else if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82371FB_IDE) { @@ -1824,7 +1844,9 @@ piix_chip_map(sc, pa) if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA) + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA) goto chansetup; WDCDEBUG_PRINT(("piix_setup_chip: old idetim=0x%x", @@ -1848,7 +1870,8 @@ piix_chip_map(sc, pa) sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DB_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DBM_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_IDE || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE) { + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_IDE) { WDCDEBUG_PRINT((", IDE_CONTROL 0x%x", pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)), DEBUG_PROBE); @@ -1907,7 +1930,9 @@ next: if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA) + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA) return; WDCDEBUG_PRINT(("piix_setup_chip: idetim=0x%x", @@ -1931,7 +1956,8 @@ next: sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DB_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DBM_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_IDE || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE) { + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_IDE) { WDCDEBUG_PRINT((", IDE_CONTROL 0x%x", pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)), DEBUG_PROBE); @@ -2098,7 +2124,8 @@ piix3_4_setup_channel(chp) sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DB_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DBM_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_IDE || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE) { + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_IDE) { ideconf |= PIIX_CONFIG_PINGPONG; } if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE || @@ -2108,7 +2135,8 @@ piix3_4_setup_channel(chp) sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DB_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801DBM_IDE || sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_IDE || - sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE) { + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_IDE || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_IDE) { /* setup Ultra/100 */ if (drvp->UDMA_mode > 2 && (ideconf & PIIX_CONFIG_CR(channel, drive)) == 0) |