diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 1cfe9538fd19..15a398051682 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1189,6 +1189,7 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) case 0x2651: case 0x2652: case 0x2653: + case 0x2680: /* ESB2 */ ich = 6; break; case 0x27c0: diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c index ce19728aa8a4..3867f91ef8c7 100644 --- a/drivers/scsi/ata_piix.c +++ b/drivers/scsi/ata_piix.c @@ -61,6 +61,7 @@ enum { ich6_sata = 3, ich6_sata_rm = 4, ich7_sata = 5, + esb2_sata = 6, }; static int piix_init_one (struct pci_dev *pdev, @@ -93,6 +94,7 @@ static struct pci_device_id piix_pci_tbl[] = { { 0x8086, 0x2653, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_rm }, { 0x8086, 0x27c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich7_sata }, { 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich7_sata }, + { 0x8086, 0x2680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, esb2_sata }, { } /* terminate list */ }; @@ -256,6 +258,18 @@ static struct ata_port_info piix_port_info[] = { .udma_mask = 0x7f, /* udma0-6 */ .port_ops = &piix_sata_ops, }, + + /* esb2_sata */ + { + .sht = &piix_sht, + .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST | + PIIX_FLAG_COMBINED | PIIX_FLAG_CHECKINTR | + ATA_FLAG_SLAVE_POSS | PIIX_FLAG_AHCI, + .pio_mask = 0x1f, /* pio0-4 */ + .mwdma_mask = 0x07, /* mwdma0-2 */ + .udma_mask = 0x7f, /* udma0-6 */ + .port_ops = &piix_sata_ops, + }, }; static struct pci_bits piix_enable_bits[] = {