Subject: Patch for the IDE/SATA controllers in Intel's ICH7 (82801G) chipset
To: None <current-users@netbsd.org>
From: Marcello Balduccini <marcello.balduccini@ttu.edu>
List: current-users
Date: 07/20/2005 15:32:38
I just wanted to let you know that I submitted a patch (PR identifier is
port-i386/30795) that adds support in -current for the IDE and SATA
controllers found in the Intel ICH7 (82801G) chipset. I have been testing
this patch for a few weeks without any problem.
In case you would like to test it, the patch is attached below (it has to be
applied to src/sys/dev/pci/piixide.c).
Marcello
--- piixide.c.orig 2005-07-19 19:11:45.000000000 -0500
+++ piixide.c 2005-07-19 19:17:42.000000000 -0500
@@ -169,6 +169,16 @@
"Intel 82801FBM Serial ATA Controller (ICH6)",
piixsata_chip_map,
},
+ { PCI_PRODUCT_INTEL_82801G_IDE,
+ 0,
+ "Intel 82801GB/GR IDE Controller (ICH7)",
+ piix_chip_map,
+ },
+ { PCI_PRODUCT_INTEL_82801G_SATA,
+ 0,
+ "Intel 82801GB/GR Serial ATA/Raid Controller (ICH7)",
+ piixsata_chip_map,
+ },
{ 0,
0,
NULL,
@@ -262,6 +272,7 @@
case PCI_PRODUCT_INTEL_82801EB_IDE:
case PCI_PRODUCT_INTEL_6300ESB_IDE:
case PCI_PRODUCT_INTEL_82801FB_IDE:
+ case PCI_PRODUCT_INTEL_82801G_IDE:
sc->sc_wdcdev.sc_atac.atac_cap |= ATAC_CAP_UDMA;
}
}
@@ -280,6 +291,7 @@
case PCI_PRODUCT_INTEL_82801EB_IDE:
case PCI_PRODUCT_INTEL_6300ESB_IDE:
case PCI_PRODUCT_INTEL_82801FB_IDE:
+ case PCI_PRODUCT_INTEL_82801G_IDE:
sc->sc_wdcdev.sc_atac.atac_udma_cap = 5;
break;
default:
@@ -314,7 +326,8 @@
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_82801FB_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_82801G_IDE) {
ATADEBUG_PRINT((", IDE_CONTROL 0x%x",
pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)),
DEBUG_PROBE);
@@ -378,7 +391,8 @@
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_82801FB_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_82801G_IDE) {
ATADEBUG_PRINT((", IDE_CONTROL 0x%x",
pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)),
DEBUG_PROBE);
@@ -540,7 +554,8 @@
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_82801FB_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_82801G_IDE) {
ideconf |= PIIX_CONFIG_PINGPONG;
}
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
@@ -551,7 +566,8 @@
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_82801FB_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_82801G_IDE) {
/* setup Ultra/100 */
if (drvp->UDMA_mode > 2 &&
(ideconf & PIIX_CONFIG_CR(channel, drive)) == 0)