aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/Kconfig1
-rw-r--r--drivers/ata/ahci.c2
-rw-r--r--drivers/ata/ata_piix.c4
-rw-r--r--drivers/ata/libata-sff.c9
4 files changed, 13 insertions, 3 deletions
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 3f4aa0c99ee4..03f6338acc8f 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -6,6 +6,7 @@ menu "Serial ATA (prod) and Parallel ATA (experimental) drivers"
6 6
7config ATA 7config ATA
8 tristate "ATA device support" 8 tristate "ATA device support"
9 depends on BLOCK
9 depends on !(M32R || M68K) || BROKEN 10 depends on !(M32R || M68K) || BROKEN
10 depends on !SUN4 || BROKEN 11 depends on !SUN4 || BROKEN
11 select SCSI 12 select SCSI
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 25929123ffff..cef2e70d64f8 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1041,7 +1041,7 @@ static void ahci_host_intr(struct ata_port *ap)
1041 /* hmmm... a spurious interupt */ 1041 /* hmmm... a spurious interupt */
1042 1042
1043 /* some devices send D2H reg with I bit set during NCQ command phase */ 1043 /* some devices send D2H reg with I bit set during NCQ command phase */
1044 if (ap->sactive && status & PORT_IRQ_D2H_REG_FIS) 1044 if (ap->sactive && (status & PORT_IRQ_D2H_REG_FIS))
1045 return; 1045 return;
1046 1046
1047 /* ignore interim PIO setup fis interrupts */ 1047 /* ignore interim PIO setup fis interrupts */
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 5719704eb0ee..5250187ffce2 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -432,9 +432,9 @@ static const struct piix_map_db ich8_map_db = {
432 .present_shift = 8, 432 .present_shift = 8,
433 .map = { 433 .map = {
434 /* PM PS SM SS MAP */ 434 /* PM PS SM SS MAP */
435 { P0, NA, P1, NA }, /* 00b (hardwired) */ 435 { P0, P2, P1, P3 }, /* 00b (hardwired when in AHCI) */
436 { RV, RV, RV, RV }, 436 { RV, RV, RV, RV },
437 { RV, RV, RV, RV }, /* 10b (never) */ 437 { IDE, IDE, NA, NA }, /* 10b (IDE mode) */
438 { RV, RV, RV, RV }, 438 { RV, RV, RV, RV },
439 }, 439 },
440}; 440};
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 06daaa3736a2..7645f2b30ccf 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -981,6 +981,15 @@ int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
981 mask = (1 << 2) | (1 << 0); 981 mask = (1 << 2) | (1 << 0);
982 if ((tmp8 & mask) != mask) 982 if ((tmp8 & mask) != mask)
983 legacy_mode = (1 << 3); 983 legacy_mode = (1 << 3);
984#if defined(CONFIG_NO_ATA_LEGACY)
985 /* Some platforms with PCI limits cannot address compat
986 port space. In that case we punt if their firmware has
987 left a device in compatibility mode */
988 if (legacy_mode) {
989 printk(KERN_ERR "ata: Compatibility mode ATA is not supported on this platform, skipping.\n");
990 return -EOPNOTSUPP;
991 }
992#endif
984 } 993 }
985 994
986 rc = pci_request_regions(pdev, DRV_NAME); 995 rc = pci_request_regions(pdev, DRV_NAME);