--- linux-2.6.24.5/drivers/ata/ahci.c 2008-04-18 22:53:39.000000000 -0300 +++ linux-2.6.24.5_sis-fixed/drivers/ata/ahci.c 2008-06-14 22:58:22.000000000 -0300 @@ -85,6 +85,7 @@ board_ahci_ign_iferr = 2, board_ahci_sb600 = 3, board_ahci_mv = 4, + board_ahci_sis = 5, /* global controller registers */ HOST_CAP = 0x00, /* host capabilities */ @@ -442,6 +443,15 @@ .udma_mask = ATA_UDMA6, .port_ops = &ahci_ops, }, + /* board_ahci_sis */ + { + AHCI_HFLAGS (AHCI_HFLAG_NO_PMP), + .flags = AHCI_FLAG_COMMON, + .link_flags = AHCI_LFLAG_COMMON | ATA_LFLAG_HRST_TO_RESUME, + .pio_mask = 0x1f, /* pio0-4 */ + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_vt8251_ops, + }, }; static const struct pci_device_id ahci_pci_tbl[] = { @@ -552,9 +562,9 @@ { PCI_VDEVICE(NVIDIA, 0x0abf), board_ahci }, /* MCP79 */ /* SiS */ - { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ - { PCI_VDEVICE(SI, 0x1185), board_ahci }, /* SiS 966 */ - { PCI_VDEVICE(SI, 0x0186), board_ahci }, /* SiS 968 */ + { PCI_VDEVICE(SI, 0x1184), board_ahci_sis }, /* SiS 966 */ + { PCI_VDEVICE(SI, 0x1185), board_ahci_sis }, /* SiS 968 */ + { PCI_VDEVICE(SI, 0x0186), board_ahci_sis }, /* SiS 968 */ /* Marvell */ { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */