Index: src/sys/dev/ata/ata-chipset.c =================================================================== RCS file: /ncvs/src/sys/dev/ata/ata-chipset.c,v retrieving revision 1.225 diff -u -p -r1.225 ata-chipset.c --- src/sys/dev/ata/ata-chipset.c 15 Aug 2008 10:55:11 -0000 1.225 +++ src/sys/dev/ata/ata-chipset.c 30 Sep 2008 10:53:00 -0000 @@ -3372,7 +3372,9 @@ ata_nvidia_ident(device_t dev) { ATA_NFORCE_MCP61_S3, 0, 0, NV4|NVQ, ATA_SA300, "nForce MCP61" }, { ATA_NFORCE_MCP65, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP65" }, { ATA_NFORCE_MCP67, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP67" }, + { ATA_NFORCE_MCP67_A1, 0, 0, NVAHCI, ATA_SA300, "nForce MCP67" }, { ATA_NFORCE_MCP73, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP73" }, + { ATA_NFORCE_MCP73_A1, 0, 0, NVAHCI, ATA_SA300, "nForce MCP73" }, { ATA_NFORCE_MCP77, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP77" }, { 0, 0, 0, 0, 0, 0}} ; @@ -3380,7 +3382,12 @@ ata_nvidia_ident(device_t dev) return ENXIO; ata_set_desc(dev); - ctlr->chipinit = ata_nvidia_chipinit; + + if (ctlr->chip->cfg2 == NVAHCI) + ctlr->chipinit = ata_ahci_chipinit; + else + ctlr->chipinit = ata_nvidia_chipinit; + return 0; } Index: src/sys/dev/ata/ata-pci.h =================================================================== RCS file: /ncvs/src/sys/dev/ata/ata-pci.h,v retrieving revision 1.89 diff -u -p -r1.89 ata-pci.h --- src/sys/dev/ata/ata-pci.h 10 Jul 2008 21:36:53 -0000 1.89 +++ src/sys/dev/ata/ata-pci.h 30 Sep 2008 10:53:00 -0000 @@ -243,8 +243,10 @@ struct ata_connect_task { #define ATA_NFORCE_MCP61_S2 0x03f610de #define ATA_NFORCE_MCP61_S3 0x03f710de #define ATA_NFORCE_MCP65 0x044810de +#define ATA_NFORCE_MCP67_A1 0x055010de #define ATA_NFORCE_MCP67 0x056010de #define ATA_NFORCE_MCP73 0x056c10de +#define ATA_NFORCE_MCP73_A1 0x07f810de #define ATA_NFORCE_MCP77 0x075910de #define ATA_PROMISE_ID 0x105a @@ -450,6 +452,7 @@ struct ata_connect_task { #define NVIDIA 0x0004 #define NV4 0x0010 #define NVQ 0x0020 +#define NVAHCI 0x0040 #define VIACLK 0x0100 #define VIABUG 0x0200 #define VIABAR 0x0400