aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Gaston <jason.d.gaston@intel.com>2005-01-06 11:10:14 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-01-06 11:10:14 -0500
commit89b7582560075c2e8e59c872589b6ad425c0c835 (patch)
tree75fd2db68f8ba76839c6faaa32786528383bfd9b
parent87475e1fe3a2a3f1643f3e60716e1d7bcf4ccd50 (diff)
downloadhistory-89b7582560075c2e8e59c872589b6ad425c0c835.tar.gz
[PATCH] SATA support for Intel ICH7
Reposting patch with word wrap turned off. Please let me know if this is still not formated correctly. This patch adds the Intel ICH7 DID's to the ata_piix.c SATA driver, ahci.c SATA AHCI driver and quirks.c for ICH7 SATA support. Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r--drivers/pci/quirks.c6
-rw-r--r--drivers/scsi/ahci.c8
-rw-r--r--drivers/scsi/ata_piix.c15
3 files changed, 26 insertions, 3 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index f9f1bd32c3781..8eb14375eddcd 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1144,6 +1144,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;
@@ -1163,7 +1167,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 e0cd4ba416784..af6614c2e81f5 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 e0501a699d7ca..ad5b07c05efff 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[] = {