Commit 489d6092 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://gkernel.bkbits.net/libata-2.6

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents c994ae17 89b75825
...@@ -1164,6 +1164,10 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) ...@@ -1164,6 +1164,10 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
case 0x2653: case 0x2653:
ich = 6; ich = 6;
break; break;
case 0x27c0:
case 0x27c4:
ich = 7;
break;
default: default:
/* we do not handle this PCI device */ /* we do not handle this PCI device */
return; return;
...@@ -1183,7 +1187,7 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) ...@@ -1183,7 +1187,7 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
else else
return; /* not in combined mode */ return; /* not in combined mode */
} else { } else {
WARN_ON(ich != 6); WARN_ON((ich != 6) && (ich != 7));
tmp &= 0x3; /* interesting bits 1:0 */ tmp &= 0x3; /* interesting bits 1:0 */
if (tmp & (1 << 0)) if (tmp & (1 << 0))
comb = (1 << 2); /* PATA port 0, SATA port 1 */ comb = (1 << 2); /* PATA port 0, SATA port 1 */
......
...@@ -239,9 +239,13 @@ static struct ata_port_info ahci_port_info[] = { ...@@ -239,9 +239,13 @@ static struct ata_port_info ahci_port_info[] = {
static struct pci_device_id ahci_pci_tbl[] = { static struct pci_device_id ahci_pci_tbl[] = {
{ PCI_VENDOR_ID_INTEL, 0x2652, PCI_ANY_ID, PCI_ANY_ID, 0, 0, { 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, { 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 */ { } /* terminate list */
}; };
......
...@@ -60,6 +60,7 @@ enum { ...@@ -60,6 +60,7 @@ enum {
piix4_pata = 2, piix4_pata = 2,
ich6_sata = 3, ich6_sata = 3,
ich6_sata_rm = 4, ich6_sata_rm = 4,
ich7_sata = 5,
}; };
static int piix_init_one (struct pci_dev *pdev, static int piix_init_one (struct pci_dev *pdev,
...@@ -90,6 +91,8 @@ static struct pci_device_id piix_pci_tbl[] = { ...@@ -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, 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, 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, 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 */ { } /* terminate list */
}; };
...@@ -236,6 +239,18 @@ static struct ata_port_info piix_port_info[] = { ...@@ -236,6 +239,18 @@ static struct ata_port_info piix_port_info[] = {
.udma_mask = 0x7f, /* udma0-6 */ .udma_mask = 0x7f, /* udma0-6 */
.port_ops = &piix_sata_ops, .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[] = { static struct pci_bits piix_enable_bits[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment