diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/Kconfig | 1 | ||||
-rw-r--r-- | drivers/ata/ahci.c | 2 | ||||
-rw-r--r-- | drivers/ata/ata_piix.c | 4 | ||||
-rw-r--r-- | drivers/ata/libata-sff.c | 9 |
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 | ||
7 | config ATA | 7 | config 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); |