Index: sys/dev/pci/pciide.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/pciide.c,v
retrieving revision 1.227
diff -u -r1.227 pciide.c
--- sys/dev/pci/pciide.c	6 Mar 2006 19:32:18 -0000	1.227
+++ sys/dev/pci/pciide.c	26 Mar 2006 11:51:56 -0000
@@ -436,6 +436,10 @@
 	{ PCI_PRODUCT_INTEL_82801GB_SATA_1, /* Intel 82801GB (ICH7) SATA */
 	  IDE_PCI_CLASS_OVERRIDE,
 	  piix_chip_map
+	},
+	{ PCI_PRODUCT_INTEL_82801GBM_SATA, /* Intel 82801GBM (ICH7) SATA */
+	  IDE_PCI_CLASS_OVERRIDE,
+	  piix_chip_map
 	}
 };
 
@@ -2007,6 +2011,7 @@
 		case PCI_PRODUCT_INTEL_82801FR_SATA:
 		case PCI_PRODUCT_INTEL_82801GB_IDE:
 		case PCI_PRODUCT_INTEL_82801GB_SATA_1:
+		case PCI_PRODUCT_INTEL_82801GBM_SATA:
 			sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA;
 			break;
 		}
@@ -2037,6 +2042,7 @@
 	case PCI_PRODUCT_INTEL_82801FR_SATA:
 	case PCI_PRODUCT_INTEL_82801GB_IDE:
 	case PCI_PRODUCT_INTEL_82801GB_SATA_1:
+	case PCI_PRODUCT_INTEL_82801GBM_SATA:
 		sc->sc_wdcdev.UDMA_cap = 5;
 		break;
 	default:
@@ -2049,7 +2055,8 @@
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA2 ||
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA ||
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA ||
-	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GB_SATA_1) {
+	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GB_SATA_1 ||
+	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GBM_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 ||
@@ -2069,7 +2076,8 @@
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA2 ||
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA ||
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA ||
-	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GB_SATA_1)
+	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GB_SATA_1 ||
+	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GBM_SATA)
 		goto chansetup;
 
 	WDCDEBUG_PRINT(("piix_setup_chip: old idetim=0x%x",
@@ -2118,7 +2126,9 @@
 		    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA ||
 		    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA ||
 		    sc->sc_pp->ide_product ==
-		    PCI_PRODUCT_INTEL_82801GB_SATA_1) {
+		    PCI_PRODUCT_INTEL_82801GB_SATA_1 ||
+		    sc->sc_pp->ide_product ==
+		    PCI_PRODUCT_INTEL_82801GBM_SATA) {
 			if (pciide_chansetup(sc, channel, interface) == 0)
 				continue;
 			pciide_mapchan(pa, cp, interface, &cmdsize, &ctlsize,
@@ -2166,7 +2176,8 @@
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_6300ESB_SATA2 ||
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FB_SATA ||
 	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801FR_SATA ||
-	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GB_SATA_1)
+	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GB_SATA_1 ||
+	    sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801GBM_SATA)
 		return;
 
 	WDCDEBUG_PRINT(("piix_setup_chip: idetim=0x%x",
