From 5ba1966aed453310068110b1e59a10828feefce9 Mon Sep 17 00:00:00 2001 From: Alexander Yurchenko Date: Fri, 1 Aug 2003 11:05:10 +0000 Subject: Fix ICH5R SATA support --- sys/dev/pci/pciide.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'sys/dev/pci/pciide.c') diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c index ffde592abbd..9ead2c8544f 100644 --- a/sys/dev/pci/pciide.c +++ b/sys/dev/pci/pciide.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pciide.c,v 1.137 2003/07/30 19:59:17 grange Exp $ */ +/* $OpenBSD: pciide.c,v 1.138 2003/08/01 11:05:09 grange Exp $ */ /* $NetBSD: pciide.c,v 1.127 2001/08/03 01:31:08 tsutsui Exp $ */ /* @@ -367,7 +367,11 @@ const struct pciide_product_desc pciide_intel_products[] = { 0, piix_chip_map }, - { PCI_PRODUCT_INTEL_82801EB_SATA, /* Intel 82801EB/ER (ICH5/5R) SATA */ + { PCI_PRODUCT_INTEL_82801EB_SATA, /* Intel 82801EB (ICH5) SATA */ + 0, + piix_chip_map + }, + { PCI_PRODUCT_INTEL_82801ER_SATA, /* Intel 82801ER (ICH5R) SATA */ 0, piix_chip_map }, @@ -1713,6 +1717,7 @@ piix_chip_map(sc, pa) case PCI_PRODUCT_INTEL_82801DBM_IDE: case PCI_PRODUCT_INTEL_82801EB_IDE: case PCI_PRODUCT_INTEL_82801EB_SATA: + case PCI_PRODUCT_INTEL_82801ER_SATA: sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA; break; } @@ -1731,13 +1736,15 @@ piix_chip_map(sc, pa) case PCI_PRODUCT_INTEL_82801DBM_IDE: case PCI_PRODUCT_INTEL_82801EB_IDE: case PCI_PRODUCT_INTEL_82801EB_SATA: + case PCI_PRODUCT_INTEL_82801ER_SATA: sc->sc_wdcdev.UDMA_cap = 5; break; default: sc->sc_wdcdev.UDMA_cap = 2; break; } - if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA) + if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA) sc->sc_wdcdev.set_modes = sata_setup_channel; else if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82371FB_IDE) sc->sc_wdcdev.set_modes = piix_setup_channel; @@ -1748,7 +1755,8 @@ piix_chip_map(sc, pa) pciide_print_channels(sc->sc_wdcdev.nchannels, interface); - if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA) + if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA) goto chansetup; WDCDEBUG_PRINT(("piix_setup_chip: old idetim=0x%x", @@ -1785,7 +1793,8 @@ chansetup: cp = &sc->pciide_channels[channel]; /* SATA setup */ - if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA) { + if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA) { if (pciide_chansetup(sc, channel, interface) == 0) continue; pciide_mapchan(pa, cp, interface, &cmdsize, &ctlsize, @@ -1827,7 +1836,8 @@ next: pciide_unmap_compat_intr(pa, cp, channel, 0); } - if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA) + if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801EB_SATA || + sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801ER_SATA) return; WDCDEBUG_PRINT(("piix_setup_chip: idetim=0x%x", -- cgit v1.2.3