diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-08 01:10:33 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-08 01:10:33 -0800 |
commit | 489d609299dd28c6a06d8cef554c06ae6ac05575 (patch) | |
tree | 32e35f367908bfe1682f6c7ab77ae9a6cf9b177a | |
parent | c994ae1766652f0c65dcd2e763355c80c3b793d0 (diff) | |
parent | 89b7582560075c2e8e59c872589b6ad425c0c835 (diff) | |
download | history-489d609299dd28c6a06d8cef554c06ae6ac05575.tar.gz |
Merge bk://gkernel.bkbits.net/libata-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
-rw-r--r-- | drivers/pci/quirks.c | 6 | ||||
-rw-r--r-- | drivers/scsi/ahci.c | 8 | ||||
-rw-r--r-- | drivers/scsi/ata_piix.c | 15 |
3 files changed, 26 insertions, 3 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index bd586d97647b34..288645ab8ba628 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1164,6 +1164,10 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) case 0x2653: ich = 6; break; + case 0x27c0: + case 0x27c4: + ich = 7; + break; default: /* we do not handle this PCI device */ return; @@ -1183,7 +1187,7 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) else return; /* not in combined mode */ } else { - WARN_ON(ich != 6); + WARN_ON((ich != 6) && (ich != 7)); tmp &= 0x3; /* interesting bits 1:0 */ if (tmp & (1 << 0)) comb = (1 << 2); /* PATA port 0, SATA port 1 */ diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c index 52c41ec749fe04..926a585c261320 100644 --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c @@ -239,9 +239,13 @@ static struct ata_port_info ahci_port_info[] = { static struct pci_device_id ahci_pci_tbl[] = { { PCI_VENDOR_ID_INTEL, 0x2652, PCI_ANY_ID, PCI_ANY_ID, 0, 0, - board_ahci }, + board_ahci }, /* ICH6 */ { PCI_VENDOR_ID_INTEL, 0x2653, PCI_ANY_ID, PCI_ANY_ID, 0, 0, - board_ahci }, + board_ahci }, /* ICH6M */ + { PCI_VENDOR_ID_INTEL, 0x27c1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* ICH7 */ + { PCI_VENDOR_ID_INTEL, 0x27c5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* ICH7M */ { } /* terminate list */ }; diff --git a/drivers/scsi/ata_piix.c b/drivers/scsi/ata_piix.c index e0501a699d7caa..ad5b07c05efff5 100644 --- a/drivers/scsi/ata_piix.c +++ b/drivers/scsi/ata_piix.c @@ -60,6 +60,7 @@ enum { piix4_pata = 2, ich6_sata = 3, ich6_sata_rm = 4, + ich7_sata = 5, }; static int piix_init_one (struct pci_dev *pdev, @@ -90,6 +91,8 @@ static struct pci_device_id piix_pci_tbl[] = { { 0x8086, 0x2651, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata }, { 0x8086, 0x2652, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_rm }, { 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 }, { } /* terminate list */ }; @@ -236,6 +239,18 @@ static struct ata_port_info piix_port_info[] = { .udma_mask = 0x7f, /* udma0-6 */ .port_ops = &piix_sata_ops, }, + + /* ich7_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[] = { |