aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-10-09 00:23:58 -0400
committerJeff Garzik <jeff@garzik.org>2006-10-31 21:10:29 -0500
commitc6446a4cdadaf411bafe1565e9fa7666f3c2fe95 (patch)
tree3604bf9c703b186688ccb94d3ecbc5edbae96e10
parent6e42acc4115bc376b8523acbcba2b2b7cc27d016 (diff)
[PATCH] ata_piix: allow 01b MAP for both ICH6M and ICH7M
ICH7M was separated from ICH6M to allow undocumented MAP value 01b which was spotted on an ASUS notebook. However, there is also notebooks with MAP value 01b on ICH6M. This patch re-merges ICH6M and ICH7M entries and allows MAP value 01b for both. This problem has been reported and initial patch provided by Jonathan Dieter. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Jonathan Dieter <jdieter@gmail.com> Cc: Tom Deblauwe <tom.deblauwe@telenet.be> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/ata/ata_piix.c37
1 files changed, 5 insertions, 32 deletions
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 4fad8d2382ca..8385387c49cd 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -126,8 +126,7 @@ enum {
126 ich6_sata = 7, 126 ich6_sata = 7,
127 ich6_sata_ahci = 8, 127 ich6_sata_ahci = 8,
128 ich6m_sata_ahci = 9, 128 ich6m_sata_ahci = 9,
129 ich7m_sata_ahci = 10, 129 ich8_sata_ahci = 10,
130 ich8_sata_ahci = 11,
131 130
132 /* constants for mapping table */ 131 /* constants for mapping table */
133 P0 = 0, /* port 0 */ 132 P0 = 0, /* port 0 */
@@ -228,7 +227,7 @@ static const struct pci_device_id piix_pci_tbl[] = {
228 /* 82801GB/GR/GH (ICH7, identical to ICH6) */ 227 /* 82801GB/GR/GH (ICH7, identical to ICH6) */
229 { 0x8086, 0x27c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci }, 228 { 0x8086, 0x27c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci },
230 /* 2801GBM/GHM (ICH7M, identical to ICH6M) */ 229 /* 2801GBM/GHM (ICH7M, identical to ICH6M) */
231 { 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich7m_sata_ahci }, 230 { 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6m_sata_ahci },
232 /* Enterprise Southbridge 2 (where's the datasheet?) */ 231 /* Enterprise Southbridge 2 (where's the datasheet?) */
233 { 0x8086, 0x2680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci }, 232 { 0x8086, 0x2680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci },
234 /* SATA Controller 1 IDE (ICH8, no datasheet yet) */ 233 /* SATA Controller 1 IDE (ICH8, no datasheet yet) */
@@ -400,23 +399,10 @@ static const struct piix_map_db ich6m_map_db = {
400 .mask = 0x3, 399 .mask = 0x3,
401 .port_enable = 0x5, 400 .port_enable = 0x5,
402 .present_shift = 4, 401 .present_shift = 4,
403 .map = {
404 /* PM PS SM SS MAP */
405 { P0, P2, RV, RV }, /* 00b */
406 { RV, RV, RV, RV },
407 { P0, P2, IDE, IDE }, /* 10b */
408 { RV, RV, RV, RV },
409 },
410};
411
412static const struct piix_map_db ich7m_map_db = {
413 .mask = 0x3,
414 .port_enable = 0x5,
415 .present_shift = 4,
416 402
417 /* Map 01b isn't specified in the doc but some notebooks use 403 /* Map 01b isn't specified in the doc but some notebooks use
418 * it anyway. ATM, the only case spotted carries subsystem ID 404 * it anyway. MAP 01b have been spotted on both ICH6M and
419 * 1025:0107. This is the only difference from ich6m. 405 * ICH7M.
420 */ 406 */
421 .map = { 407 .map = {
422 /* PM PS SM SS MAP */ 408 /* PM PS SM SS MAP */
@@ -446,7 +432,6 @@ static const struct piix_map_db *piix_map_db_table[] = {
446 [ich6_sata] = &ich6_map_db, 432 [ich6_sata] = &ich6_map_db,
447 [ich6_sata_ahci] = &ich6_map_db, 433 [ich6_sata_ahci] = &ich6_map_db,
448 [ich6m_sata_ahci] = &ich6m_map_db, 434 [ich6m_sata_ahci] = &ich6m_map_db,
449 [ich7m_sata_ahci] = &ich7m_map_db,
450 [ich8_sata_ahci] = &ich8_map_db, 435 [ich8_sata_ahci] = &ich8_map_db,
451}; 436};
452 437
@@ -557,19 +542,7 @@ static struct ata_port_info piix_port_info[] = {
557 .port_ops = &piix_sata_ops, 542 .port_ops = &piix_sata_ops,
558 }, 543 },
559 544
560 /* ich7m_sata_ahci: 10 */ 545 /* ich8_sata_ahci: 10 */
561 {
562 .sht = &piix_sht,
563 .flags = ATA_FLAG_SATA |
564 PIIX_FLAG_CHECKINTR | PIIX_FLAG_SCR |
565 PIIX_FLAG_AHCI,
566 .pio_mask = 0x1f, /* pio0-4 */
567 .mwdma_mask = 0x07, /* mwdma0-2 */
568 .udma_mask = 0x7f, /* udma0-6 */
569 .port_ops = &piix_sata_ops,
570 },
571
572 /* ich8_sata_ahci: 11 */
573 { 546 {
574 .sht = &piix_sht, 547 .sht = &piix_sht,
575 .flags = ATA_FLAG_SATA | 548 .flags = ATA_FLAG_SATA |