diff options
| author | Steven Whitehouse <swhiteho@redhat.com> | 2006-09-28 08:29:59 -0400 |
|---|---|---|
| committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-09-28 08:29:59 -0400 |
| commit | 185a257f2f73bcd89050ad02da5bedbc28fc43fa (patch) | |
| tree | 5e32586114534ed3f2165614cba3d578f5d87307 /drivers/ata | |
| parent | 3f1a9aaeffd8d1cbc5ab9776c45cbd66af1c9699 (diff) | |
| parent | a77c64c1a641950626181b4857abb701d8f38ccc (diff) | |
Merge branch 'master' into gfs2
Diffstat (limited to 'drivers/ata')
47 files changed, 152 insertions, 201 deletions
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index 99837d932f36..3f4aa0c99ee4 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig | |||
| @@ -311,7 +311,7 @@ config PATA_JMICRON | |||
| 311 | 311 | ||
| 312 | config PATA_LEGACY | 312 | config PATA_LEGACY |
| 313 | tristate "Legacy ISA PATA support (Experimental)" | 313 | tristate "Legacy ISA PATA support (Experimental)" |
| 314 | depends on PCI && EXPERIMENTAL | 314 | depends on ISA && EXPERIMENTAL |
| 315 | help | 315 | help |
| 316 | This option enables support for ISA/VLB bus legacy PATA | 316 | This option enables support for ISA/VLB bus legacy PATA |
| 317 | ports and allows them to be accessed via the new ATA layer. | 317 | ports and allows them to be accessed via the new ATA layer. |
| @@ -400,6 +400,7 @@ config PATA_PDC_OLD | |||
| 400 | 400 | ||
| 401 | config PATA_QDI | 401 | config PATA_QDI |
| 402 | tristate "QDI VLB PATA support" | 402 | tristate "QDI VLB PATA support" |
| 403 | depends on ISA | ||
| 403 | help | 404 | help |
| 404 | Support for QDI 6500 and 6580 PATA controllers on VESA local bus. | 405 | Support for QDI 6500 and 6580 PATA controllers on VESA local bus. |
| 405 | 406 | ||
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c index 1d1c30a2fcd0..377425e71391 100644 --- a/drivers/ata/ata_generic.c +++ b/drivers/ata/ata_generic.c | |||
| @@ -143,7 +143,7 @@ static struct ata_port_operations generic_port_ops = { | |||
| 143 | 143 | ||
| 144 | .qc_prep = ata_qc_prep, | 144 | .qc_prep = ata_qc_prep, |
| 145 | .qc_issue = ata_qc_issue_prot, | 145 | .qc_issue = ata_qc_issue_prot, |
| 146 | .eng_timeout = ata_eng_timeout, | 146 | |
| 147 | .irq_handler = ata_interrupt, | 147 | .irq_handler = ata_interrupt, |
| 148 | .irq_clear = ata_bmdma_irq_clear, | 148 | .irq_clear = ata_bmdma_irq_clear, |
| 149 | 149 | ||
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index ab2ecccf7798..5719704eb0ee 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
| @@ -643,11 +643,9 @@ static int piix_pata_prereset(struct ata_port *ap) | |||
| 643 | { | 643 | { |
| 644 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 644 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 645 | 645 | ||
| 646 | if (!pci_test_config_bits(pdev, &piix_enable_bits[ap->port_no])) { | 646 | if (!pci_test_config_bits(pdev, &piix_enable_bits[ap->port_no])) |
| 647 | ata_port_printk(ap, KERN_INFO, "port disabled. ignoring.\n"); | 647 | return -ENOENT; |
| 648 | ap->eh_context.i.action &= ~ATA_EH_RESET_MASK; | 648 | |
| 649 | return 0; | ||
| 650 | } | ||
| 651 | ap->cbl = ATA_CBL_PATA40; | 649 | ap->cbl = ATA_CBL_PATA40; |
| 652 | return ata_std_prereset(ap); | 650 | return ata_std_prereset(ap); |
| 653 | } | 651 | } |
| @@ -851,7 +849,7 @@ static void piix_set_piomode (struct ata_port *ap, struct ata_device *adev) | |||
| 851 | * @ap: Port whose timings we are configuring | 849 | * @ap: Port whose timings we are configuring |
| 852 | * @adev: Drive in question | 850 | * @adev: Drive in question |
| 853 | * @udma: udma mode, 0 - 6 | 851 | * @udma: udma mode, 0 - 6 |
| 854 | * @is_ich: set if the chip is an ICH device | 852 | * @isich: set if the chip is an ICH device |
| 855 | * | 853 | * |
| 856 | * Set UDMA mode for device, in host controller PCI config space. | 854 | * Set UDMA mode for device, in host controller PCI config space. |
| 857 | * | 855 | * |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 753b0152afd1..b4abd6850367 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
| @@ -5453,6 +5453,11 @@ int ata_device_add(const struct ata_probe_ent *ent) | |||
| 5453 | int rc; | 5453 | int rc; |
| 5454 | 5454 | ||
| 5455 | DPRINTK("ENTER\n"); | 5455 | DPRINTK("ENTER\n"); |
| 5456 | |||
| 5457 | if (ent->irq == 0) { | ||
| 5458 | dev_printk(KERN_ERR, dev, "is not available: No interrupt assigned.\n"); | ||
| 5459 | return 0; | ||
| 5460 | } | ||
| 5456 | /* alloc a container for our list of ATA ports (buses) */ | 5461 | /* alloc a container for our list of ATA ports (buses) */ |
| 5457 | host = kzalloc(sizeof(struct ata_host) + | 5462 | host = kzalloc(sizeof(struct ata_host) + |
| 5458 | (ent->n_ports * sizeof(void *)), GFP_KERNEL); | 5463 | (ent->n_ports * sizeof(void *)), GFP_KERNEL); |
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 3fa80f09f2ae..02b2b2787d9b 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
| @@ -1515,7 +1515,11 @@ static int ata_eh_reset(struct ata_port *ap, int classify, | |||
| 1515 | if (prereset) { | 1515 | if (prereset) { |
| 1516 | rc = prereset(ap); | 1516 | rc = prereset(ap); |
| 1517 | if (rc) { | 1517 | if (rc) { |
| 1518 | ata_port_printk(ap, KERN_ERR, | 1518 | if (rc == -ENOENT) { |
| 1519 | ata_port_printk(ap, KERN_DEBUG, "port disabled. ignoring.\n"); | ||
| 1520 | ap->eh_context.i.action &= ~ATA_EH_RESET_MASK; | ||
| 1521 | } else | ||
| 1522 | ata_port_printk(ap, KERN_ERR, | ||
| 1519 | "prereset failed (errno=%d)\n", rc); | 1523 | "prereset failed (errno=%d)\n", rc); |
| 1520 | return rc; | 1524 | return rc; |
| 1521 | } | 1525 | } |
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 688bb55e197a..08b3a407473e 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
| @@ -881,7 +881,7 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev, | |||
| 881 | probe_ent->private_data = port[0]->private_data; | 881 | probe_ent->private_data = port[0]->private_data; |
| 882 | 882 | ||
| 883 | if (port_mask & ATA_PORT_PRIMARY) { | 883 | if (port_mask & ATA_PORT_PRIMARY) { |
| 884 | probe_ent->irq = 14; | 884 | probe_ent->irq = ATA_PRIMARY_IRQ; |
| 885 | probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD; | 885 | probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD; |
| 886 | probe_ent->port[0].altstatus_addr = | 886 | probe_ent->port[0].altstatus_addr = |
| 887 | probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL; | 887 | probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL; |
| @@ -896,9 +896,9 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev, | |||
| 896 | 896 | ||
| 897 | if (port_mask & ATA_PORT_SECONDARY) { | 897 | if (port_mask & ATA_PORT_SECONDARY) { |
| 898 | if (probe_ent->irq) | 898 | if (probe_ent->irq) |
| 899 | probe_ent->irq2 = 15; | 899 | probe_ent->irq2 = ATA_SECONDARY_IRQ; |
| 900 | else | 900 | else |
| 901 | probe_ent->irq = 15; | 901 | probe_ent->irq = ATA_SECONDARY_IRQ; |
| 902 | probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD; | 902 | probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD; |
| 903 | probe_ent->port[1].altstatus_addr = | 903 | probe_ent->port[1].altstatus_addr = |
| 904 | probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL; | 904 | probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL; |
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index 8448ee6e0eed..87af3b5861ab 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
| @@ -369,7 +369,7 @@ static struct ata_port_operations ali_early_port_ops = { | |||
| 369 | 369 | ||
| 370 | .qc_prep = ata_qc_prep, | 370 | .qc_prep = ata_qc_prep, |
| 371 | .qc_issue = ata_qc_issue_prot, | 371 | .qc_issue = ata_qc_issue_prot, |
| 372 | .eng_timeout = ata_eng_timeout, | 372 | |
| 373 | .data_xfer = ata_pio_data_xfer, | 373 | .data_xfer = ata_pio_data_xfer, |
| 374 | 374 | ||
| 375 | .irq_handler = ata_interrupt, | 375 | .irq_handler = ata_interrupt, |
| @@ -410,7 +410,7 @@ static struct ata_port_operations ali_20_port_ops = { | |||
| 410 | 410 | ||
| 411 | .qc_prep = ata_qc_prep, | 411 | .qc_prep = ata_qc_prep, |
| 412 | .qc_issue = ata_qc_issue_prot, | 412 | .qc_issue = ata_qc_issue_prot, |
| 413 | .eng_timeout = ata_eng_timeout, | 413 | |
| 414 | .data_xfer = ata_pio_data_xfer, | 414 | .data_xfer = ata_pio_data_xfer, |
| 415 | 415 | ||
| 416 | .irq_handler = ata_interrupt, | 416 | .irq_handler = ata_interrupt, |
| @@ -448,7 +448,7 @@ static struct ata_port_operations ali_c2_port_ops = { | |||
| 448 | 448 | ||
| 449 | .qc_prep = ata_qc_prep, | 449 | .qc_prep = ata_qc_prep, |
| 450 | .qc_issue = ata_qc_issue_prot, | 450 | .qc_issue = ata_qc_issue_prot, |
| 451 | .eng_timeout = ata_eng_timeout, | 451 | |
| 452 | .data_xfer = ata_pio_data_xfer, | 452 | .data_xfer = ata_pio_data_xfer, |
| 453 | 453 | ||
| 454 | .irq_handler = ata_interrupt, | 454 | .irq_handler = ata_interrupt, |
| @@ -485,7 +485,7 @@ static struct ata_port_operations ali_c5_port_ops = { | |||
| 485 | 485 | ||
| 486 | .qc_prep = ata_qc_prep, | 486 | .qc_prep = ata_qc_prep, |
| 487 | .qc_issue = ata_qc_issue_prot, | 487 | .qc_issue = ata_qc_issue_prot, |
| 488 | .eng_timeout = ata_eng_timeout, | 488 | |
| 489 | .data_xfer = ata_pio_data_xfer, | 489 | .data_xfer = ata_pio_data_xfer, |
| 490 | 490 | ||
| 491 | .irq_handler = ata_interrupt, | 491 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c index 3293cf9a7eb5..599ee266722c 100644 --- a/drivers/ata/pata_amd.c +++ b/drivers/ata/pata_amd.c | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <linux/libata.h> | 25 | #include <linux/libata.h> |
| 26 | 26 | ||
| 27 | #define DRV_NAME "pata_amd" | 27 | #define DRV_NAME "pata_amd" |
| 28 | #define DRV_VERSION "0.2.3" | 28 | #define DRV_VERSION "0.2.4" |
| 29 | 29 | ||
| 30 | /** | 30 | /** |
| 31 | * timing_setup - shared timing computation and load | 31 | * timing_setup - shared timing computation and load |
| @@ -137,11 +137,8 @@ static int amd_pre_reset(struct ata_port *ap) | |||
| 137 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 137 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 138 | u8 ata66; | 138 | u8 ata66; |
| 139 | 139 | ||
| 140 | if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) { | 140 | if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) |
| 141 | ata_port_disable(ap); | 141 | return -ENOENT; |
| 142 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 143 | return 0; | ||
| 144 | } | ||
| 145 | 142 | ||
| 146 | pci_read_config_byte(pdev, 0x42, &ata66); | 143 | pci_read_config_byte(pdev, 0x42, &ata66); |
| 147 | if (ata66 & bitmask[ap->port_no]) | 144 | if (ata66 & bitmask[ap->port_no]) |
| @@ -167,11 +164,9 @@ static int amd_early_pre_reset(struct ata_port *ap) | |||
| 167 | { 0x40, 1, 0x01, 0x01 } | 164 | { 0x40, 1, 0x01, 0x01 } |
| 168 | }; | 165 | }; |
| 169 | 166 | ||
| 170 | if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) { | 167 | if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) |
| 171 | ata_port_disable(ap); | 168 | return -ENOENT; |
| 172 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 169 | |
| 173 | return 0; | ||
| 174 | } | ||
| 175 | /* No host side cable detection */ | 170 | /* No host side cable detection */ |
| 176 | ap->cbl = ATA_CBL_PATA80; | 171 | ap->cbl = ATA_CBL_PATA80; |
| 177 | return ata_std_prereset(ap); | 172 | return ata_std_prereset(ap); |
| @@ -262,12 +257,8 @@ static int nv_pre_reset(struct ata_port *ap) { | |||
| 262 | u8 ata66; | 257 | u8 ata66; |
| 263 | u16 udma; | 258 | u16 udma; |
| 264 | 259 | ||
| 265 | if (!pci_test_config_bits(pdev, &nv_enable_bits[ap->port_no])) { | 260 | if (!pci_test_config_bits(pdev, &nv_enable_bits[ap->port_no])) |
| 266 | ata_port_disable(ap); | 261 | return -ENOENT; |
| 267 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 268 | return 0; | ||
| 269 | } | ||
| 270 | |||
| 271 | 262 | ||
| 272 | pci_read_config_byte(pdev, 0x52, &ata66); | 263 | pci_read_config_byte(pdev, 0x52, &ata66); |
| 273 | if (ata66 & bitmask[ap->port_no]) | 264 | if (ata66 & bitmask[ap->port_no]) |
| @@ -368,7 +359,7 @@ static struct ata_port_operations amd33_port_ops = { | |||
| 368 | 359 | ||
| 369 | .qc_prep = ata_qc_prep, | 360 | .qc_prep = ata_qc_prep, |
| 370 | .qc_issue = ata_qc_issue_prot, | 361 | .qc_issue = ata_qc_issue_prot, |
| 371 | .eng_timeout = ata_eng_timeout, | 362 | |
| 372 | .data_xfer = ata_pio_data_xfer, | 363 | .data_xfer = ata_pio_data_xfer, |
| 373 | 364 | ||
| 374 | .irq_handler = ata_interrupt, | 365 | .irq_handler = ata_interrupt, |
| @@ -402,7 +393,7 @@ static struct ata_port_operations amd66_port_ops = { | |||
| 402 | 393 | ||
| 403 | .qc_prep = ata_qc_prep, | 394 | .qc_prep = ata_qc_prep, |
| 404 | .qc_issue = ata_qc_issue_prot, | 395 | .qc_issue = ata_qc_issue_prot, |
| 405 | .eng_timeout = ata_eng_timeout, | 396 | |
| 406 | .data_xfer = ata_pio_data_xfer, | 397 | .data_xfer = ata_pio_data_xfer, |
| 407 | 398 | ||
| 408 | .irq_handler = ata_interrupt, | 399 | .irq_handler = ata_interrupt, |
| @@ -436,7 +427,7 @@ static struct ata_port_operations amd100_port_ops = { | |||
| 436 | 427 | ||
| 437 | .qc_prep = ata_qc_prep, | 428 | .qc_prep = ata_qc_prep, |
| 438 | .qc_issue = ata_qc_issue_prot, | 429 | .qc_issue = ata_qc_issue_prot, |
| 439 | .eng_timeout = ata_eng_timeout, | 430 | |
| 440 | .data_xfer = ata_pio_data_xfer, | 431 | .data_xfer = ata_pio_data_xfer, |
| 441 | 432 | ||
| 442 | .irq_handler = ata_interrupt, | 433 | .irq_handler = ata_interrupt, |
| @@ -470,7 +461,7 @@ static struct ata_port_operations amd133_port_ops = { | |||
| 470 | 461 | ||
| 471 | .qc_prep = ata_qc_prep, | 462 | .qc_prep = ata_qc_prep, |
| 472 | .qc_issue = ata_qc_issue_prot, | 463 | .qc_issue = ata_qc_issue_prot, |
| 473 | .eng_timeout = ata_eng_timeout, | 464 | |
| 474 | .data_xfer = ata_pio_data_xfer, | 465 | .data_xfer = ata_pio_data_xfer, |
| 475 | 466 | ||
| 476 | .irq_handler = ata_interrupt, | 467 | .irq_handler = ata_interrupt, |
| @@ -504,7 +495,7 @@ static struct ata_port_operations nv100_port_ops = { | |||
| 504 | 495 | ||
| 505 | .qc_prep = ata_qc_prep, | 496 | .qc_prep = ata_qc_prep, |
| 506 | .qc_issue = ata_qc_issue_prot, | 497 | .qc_issue = ata_qc_issue_prot, |
| 507 | .eng_timeout = ata_eng_timeout, | 498 | |
| 508 | .data_xfer = ata_pio_data_xfer, | 499 | .data_xfer = ata_pio_data_xfer, |
| 509 | 500 | ||
| 510 | .irq_handler = ata_interrupt, | 501 | .irq_handler = ata_interrupt, |
| @@ -538,7 +529,7 @@ static struct ata_port_operations nv133_port_ops = { | |||
| 538 | 529 | ||
| 539 | .qc_prep = ata_qc_prep, | 530 | .qc_prep = ata_qc_prep, |
| 540 | .qc_issue = ata_qc_issue_prot, | 531 | .qc_issue = ata_qc_issue_prot, |
| 541 | .eng_timeout = ata_eng_timeout, | 532 | |
| 542 | .data_xfer = ata_pio_data_xfer, | 533 | .data_xfer = ata_pio_data_xfer, |
| 543 | 534 | ||
| 544 | .irq_handler = ata_interrupt, | 535 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c index d6ef3bf1bac7..c4ccb75a4f1d 100644 --- a/drivers/ata/pata_artop.c +++ b/drivers/ata/pata_artop.c | |||
| @@ -28,7 +28,7 @@ | |||
| 28 | #include <linux/ata.h> | 28 | #include <linux/ata.h> |
| 29 | 29 | ||
| 30 | #define DRV_NAME "pata_artop" | 30 | #define DRV_NAME "pata_artop" |
| 31 | #define DRV_VERSION "0.4.1" | 31 | #define DRV_VERSION "0.4.2" |
| 32 | 32 | ||
| 33 | /* | 33 | /* |
| 34 | * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we | 34 | * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we |
| @@ -47,11 +47,9 @@ static int artop6210_pre_reset(struct ata_port *ap) | |||
| 47 | { 0x4AU, 1U, 0x04UL, 0x04UL }, /* port 1 */ | 47 | { 0x4AU, 1U, 0x04UL, 0x04UL }, /* port 1 */ |
| 48 | }; | 48 | }; |
| 49 | 49 | ||
| 50 | if (!pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) { | 50 | if (!pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) |
| 51 | ata_port_disable(ap); | 51 | return -ENOENT; |
| 52 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 52 | |
| 53 | return 0; | ||
| 54 | } | ||
| 55 | ap->cbl = ATA_CBL_PATA40; | 53 | ap->cbl = ATA_CBL_PATA40; |
| 56 | return ata_std_prereset(ap); | 54 | return ata_std_prereset(ap); |
| 57 | } | 55 | } |
| @@ -90,11 +88,9 @@ static int artop6260_pre_reset(struct ata_port *ap) | |||
| 90 | u8 tmp; | 88 | u8 tmp; |
| 91 | 89 | ||
| 92 | /* Odd numbered device ids are the units with enable bits (the -R cards) */ | 90 | /* Odd numbered device ids are the units with enable bits (the -R cards) */ |
| 93 | if (pdev->device % 1 && !pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) { | 91 | if (pdev->device % 1 && !pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) |
| 94 | ata_port_disable(ap); | 92 | return -ENOENT; |
| 95 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 93 | |
| 96 | return 0; | ||
| 97 | } | ||
| 98 | pci_read_config_byte(pdev, 0x49, &tmp); | 94 | pci_read_config_byte(pdev, 0x49, &tmp); |
| 99 | if (tmp & (1 >> ap->port_no)) | 95 | if (tmp & (1 >> ap->port_no)) |
| 100 | ap->cbl = ATA_CBL_PATA40; | 96 | ap->cbl = ATA_CBL_PATA40; |
| @@ -344,7 +340,7 @@ static const struct ata_port_operations artop6210_ops = { | |||
| 344 | .bmdma_status = ata_bmdma_status, | 340 | .bmdma_status = ata_bmdma_status, |
| 345 | .qc_prep = ata_qc_prep, | 341 | .qc_prep = ata_qc_prep, |
| 346 | .qc_issue = ata_qc_issue_prot, | 342 | .qc_issue = ata_qc_issue_prot, |
| 347 | .eng_timeout = ata_eng_timeout, | 343 | |
| 348 | .data_xfer = ata_pio_data_xfer, | 344 | .data_xfer = ata_pio_data_xfer, |
| 349 | 345 | ||
| 350 | .irq_handler = ata_interrupt, | 346 | .irq_handler = ata_interrupt, |
| @@ -379,8 +375,6 @@ static const struct ata_port_operations artop6260_ops = { | |||
| 379 | .qc_issue = ata_qc_issue_prot, | 375 | .qc_issue = ata_qc_issue_prot, |
| 380 | .data_xfer = ata_pio_data_xfer, | 376 | .data_xfer = ata_pio_data_xfer, |
| 381 | 377 | ||
| 382 | .eng_timeout = ata_eng_timeout, | ||
| 383 | |||
| 384 | .irq_handler = ata_interrupt, | 378 | .irq_handler = ata_interrupt, |
| 385 | .irq_clear = ata_bmdma_irq_clear, | 379 | .irq_clear = ata_bmdma_irq_clear, |
| 386 | 380 | ||
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c index 3f78a1e54a75..6c2269b6bd3c 100644 --- a/drivers/ata/pata_atiixp.c +++ b/drivers/ata/pata_atiixp.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <linux/libata.h> | 22 | #include <linux/libata.h> |
| 23 | 23 | ||
| 24 | #define DRV_NAME "pata_atiixp" | 24 | #define DRV_NAME "pata_atiixp" |
| 25 | #define DRV_VERSION "0.4.2" | 25 | #define DRV_VERSION "0.4.3" |
| 26 | 26 | ||
| 27 | enum { | 27 | enum { |
| 28 | ATIIXP_IDE_PIO_TIMING = 0x40, | 28 | ATIIXP_IDE_PIO_TIMING = 0x40, |
| @@ -41,11 +41,9 @@ static int atiixp_pre_reset(struct ata_port *ap) | |||
| 41 | { 0x48, 1, 0x08, 0x00 } | 41 | { 0x48, 1, 0x08, 0x00 } |
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no])) { | 44 | if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no])) |
| 45 | ata_port_disable(ap); | 45 | return -ENOENT; |
| 46 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 46 | |
| 47 | return 0; | ||
| 48 | } | ||
| 49 | ap->cbl = ATA_CBL_PATA80; | 47 | ap->cbl = ATA_CBL_PATA80; |
| 50 | return ata_std_prereset(ap); | 48 | return ata_std_prereset(ap); |
| 51 | } | 49 | } |
| @@ -244,7 +242,7 @@ static struct ata_port_operations atiixp_port_ops = { | |||
| 244 | 242 | ||
| 245 | .qc_prep = ata_qc_prep, | 243 | .qc_prep = ata_qc_prep, |
| 246 | .qc_issue = ata_qc_issue_prot, | 244 | .qc_issue = ata_qc_issue_prot, |
| 247 | .eng_timeout = ata_eng_timeout, | 245 | |
| 248 | .data_xfer = ata_pio_data_xfer, | 246 | .data_xfer = ata_pio_data_xfer, |
| 249 | 247 | ||
| 250 | .irq_handler = ata_interrupt, | 248 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c index abf1bb7bd322..e92b0ef43ec5 100644 --- a/drivers/ata/pata_cmd64x.c +++ b/drivers/ata/pata_cmd64x.c | |||
| @@ -301,7 +301,7 @@ static struct ata_port_operations cmd64x_port_ops = { | |||
| 301 | 301 | ||
| 302 | .qc_prep = ata_qc_prep, | 302 | .qc_prep = ata_qc_prep, |
| 303 | .qc_issue = ata_qc_issue_prot, | 303 | .qc_issue = ata_qc_issue_prot, |
| 304 | .eng_timeout = ata_eng_timeout, | 304 | |
| 305 | .data_xfer = ata_pio_data_xfer, | 305 | .data_xfer = ata_pio_data_xfer, |
| 306 | 306 | ||
| 307 | .irq_handler = ata_interrupt, | 307 | .irq_handler = ata_interrupt, |
| @@ -335,7 +335,7 @@ static struct ata_port_operations cmd646r1_port_ops = { | |||
| 335 | 335 | ||
| 336 | .qc_prep = ata_qc_prep, | 336 | .qc_prep = ata_qc_prep, |
| 337 | .qc_issue = ata_qc_issue_prot, | 337 | .qc_issue = ata_qc_issue_prot, |
| 338 | .eng_timeout = ata_eng_timeout, | 338 | |
| 339 | .data_xfer = ata_pio_data_xfer, | 339 | .data_xfer = ata_pio_data_xfer, |
| 340 | 340 | ||
| 341 | .irq_handler = ata_interrupt, | 341 | .irq_handler = ata_interrupt, |
| @@ -369,7 +369,7 @@ static struct ata_port_operations cmd648_port_ops = { | |||
| 369 | 369 | ||
| 370 | .qc_prep = ata_qc_prep, | 370 | .qc_prep = ata_qc_prep, |
| 371 | .qc_issue = ata_qc_issue_prot, | 371 | .qc_issue = ata_qc_issue_prot, |
| 372 | .eng_timeout = ata_eng_timeout, | 372 | |
| 373 | .data_xfer = ata_pio_data_xfer, | 373 | .data_xfer = ata_pio_data_xfer, |
| 374 | 374 | ||
| 375 | .irq_handler = ata_interrupt, | 375 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c index 792ce4828510..a6c6cebd0dae 100644 --- a/drivers/ata/pata_cs5520.c +++ b/drivers/ata/pata_cs5520.c | |||
| @@ -193,8 +193,6 @@ static struct ata_port_operations cs5520_port_ops = { | |||
| 193 | .qc_issue = ata_qc_issue_prot, | 193 | .qc_issue = ata_qc_issue_prot, |
| 194 | .data_xfer = ata_pio_data_xfer, | 194 | .data_xfer = ata_pio_data_xfer, |
| 195 | 195 | ||
| 196 | .eng_timeout = ata_eng_timeout, | ||
| 197 | |||
| 198 | .irq_handler = ata_interrupt, | 196 | .irq_handler = ata_interrupt, |
| 199 | .irq_clear = ata_bmdma_irq_clear, | 197 | .irq_clear = ata_bmdma_irq_clear, |
| 200 | 198 | ||
diff --git a/drivers/ata/pata_cs5530.c b/drivers/ata/pata_cs5530.c index f3d8a3bc1e78..7bba4d954e9c 100644 --- a/drivers/ata/pata_cs5530.c +++ b/drivers/ata/pata_cs5530.c | |||
| @@ -207,7 +207,7 @@ static struct ata_port_operations cs5530_port_ops = { | |||
| 207 | 207 | ||
| 208 | .qc_prep = ata_qc_prep, | 208 | .qc_prep = ata_qc_prep, |
| 209 | .qc_issue = cs5530_qc_issue_prot, | 209 | .qc_issue = cs5530_qc_issue_prot, |
| 210 | .eng_timeout = ata_eng_timeout, | 210 | |
| 211 | .data_xfer = ata_pio_data_xfer, | 211 | .data_xfer = ata_pio_data_xfer, |
| 212 | 212 | ||
| 213 | .irq_handler = ata_interrupt, | 213 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_cs5535.c b/drivers/ata/pata_cs5535.c index 69d6b4258724..d64fcdceaf01 100644 --- a/drivers/ata/pata_cs5535.c +++ b/drivers/ata/pata_cs5535.c | |||
| @@ -211,7 +211,7 @@ static struct ata_port_operations cs5535_port_ops = { | |||
| 211 | 211 | ||
| 212 | .qc_prep = ata_qc_prep, | 212 | .qc_prep = ata_qc_prep, |
| 213 | .qc_issue = ata_qc_issue_prot, | 213 | .qc_issue = ata_qc_issue_prot, |
| 214 | .eng_timeout = ata_eng_timeout, | 214 | |
| 215 | .data_xfer = ata_pio_data_xfer, | 215 | .data_xfer = ata_pio_data_xfer, |
| 216 | 216 | ||
| 217 | .irq_handler = ata_interrupt, | 217 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_cypress.c b/drivers/ata/pata_cypress.c index fd55474e0d15..dfa5ac539048 100644 --- a/drivers/ata/pata_cypress.c +++ b/drivers/ata/pata_cypress.c | |||
| @@ -162,7 +162,7 @@ static struct ata_port_operations cy82c693_port_ops = { | |||
| 162 | 162 | ||
| 163 | .qc_prep = ata_qc_prep, | 163 | .qc_prep = ata_qc_prep, |
| 164 | .qc_issue = ata_qc_issue_prot, | 164 | .qc_issue = ata_qc_issue_prot, |
| 165 | .eng_timeout = ata_eng_timeout, | 165 | |
| 166 | .data_xfer = ata_pio_data_xfer, | 166 | .data_xfer = ata_pio_data_xfer, |
| 167 | 167 | ||
| 168 | .irq_handler = ata_interrupt, | 168 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_efar.c b/drivers/ata/pata_efar.c index c30bc181304f..95cd1ca181f5 100644 --- a/drivers/ata/pata_efar.c +++ b/drivers/ata/pata_efar.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <linux/ata.h> | 22 | #include <linux/ata.h> |
| 23 | 23 | ||
| 24 | #define DRV_NAME "pata_efar" | 24 | #define DRV_NAME "pata_efar" |
| 25 | #define DRV_VERSION "0.4.1" | 25 | #define DRV_VERSION "0.4.2" |
| 26 | 26 | ||
| 27 | /** | 27 | /** |
| 28 | * efar_pre_reset - check for 40/80 pin | 28 | * efar_pre_reset - check for 40/80 pin |
| @@ -42,11 +42,9 @@ static int efar_pre_reset(struct ata_port *ap) | |||
| 42 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 42 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 43 | u8 tmp; | 43 | u8 tmp; |
| 44 | 44 | ||
| 45 | if (!pci_test_config_bits(pdev, &efar_enable_bits[ap->port_no])) { | 45 | if (!pci_test_config_bits(pdev, &efar_enable_bits[ap->port_no])) |
| 46 | ata_port_disable(ap); | 46 | return -ENOENT; |
| 47 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 47 | |
| 48 | return 0; | ||
| 49 | } | ||
| 50 | pci_read_config_byte(pdev, 0x47, &tmp); | 48 | pci_read_config_byte(pdev, 0x47, &tmp); |
| 51 | if (tmp & (2 >> ap->port_no)) | 49 | if (tmp & (2 >> ap->port_no)) |
| 52 | ap->cbl = ATA_CBL_PATA40; | 50 | ap->cbl = ATA_CBL_PATA40; |
| @@ -263,8 +261,6 @@ static const struct ata_port_operations efar_ops = { | |||
| 263 | .qc_issue = ata_qc_issue_prot, | 261 | .qc_issue = ata_qc_issue_prot, |
| 264 | .data_xfer = ata_pio_data_xfer, | 262 | .data_xfer = ata_pio_data_xfer, |
| 265 | 263 | ||
| 266 | .eng_timeout = ata_eng_timeout, | ||
| 267 | |||
| 268 | .irq_handler = ata_interrupt, | 264 | .irq_handler = ata_interrupt, |
| 269 | .irq_clear = ata_bmdma_irq_clear, | 265 | .irq_clear = ata_bmdma_irq_clear, |
| 270 | 266 | ||
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c index 94bb1dfc3f19..cf656ecbe507 100644 --- a/drivers/ata/pata_hpt366.c +++ b/drivers/ata/pata_hpt366.c | |||
| @@ -360,7 +360,7 @@ static struct ata_port_operations hpt366_port_ops = { | |||
| 360 | 360 | ||
| 361 | .qc_prep = ata_qc_prep, | 361 | .qc_prep = ata_qc_prep, |
| 362 | .qc_issue = ata_qc_issue_prot, | 362 | .qc_issue = ata_qc_issue_prot, |
| 363 | .eng_timeout = ata_eng_timeout, | 363 | |
| 364 | .data_xfer = ata_pio_data_xfer, | 364 | .data_xfer = ata_pio_data_xfer, |
| 365 | 365 | ||
| 366 | .irq_handler = ata_interrupt, | 366 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c index 532a7928f803..10318c0012ef 100644 --- a/drivers/ata/pata_hpt37x.c +++ b/drivers/ata/pata_hpt37x.c | |||
| @@ -793,7 +793,7 @@ static struct ata_port_operations hpt370_port_ops = { | |||
| 793 | 793 | ||
| 794 | .qc_prep = ata_qc_prep, | 794 | .qc_prep = ata_qc_prep, |
| 795 | .qc_issue = ata_qc_issue_prot, | 795 | .qc_issue = ata_qc_issue_prot, |
| 796 | .eng_timeout = ata_eng_timeout, | 796 | |
| 797 | .data_xfer = ata_pio_data_xfer, | 797 | .data_xfer = ata_pio_data_xfer, |
| 798 | 798 | ||
| 799 | .irq_handler = ata_interrupt, | 799 | .irq_handler = ata_interrupt, |
| @@ -832,7 +832,7 @@ static struct ata_port_operations hpt370a_port_ops = { | |||
| 832 | 832 | ||
| 833 | .qc_prep = ata_qc_prep, | 833 | .qc_prep = ata_qc_prep, |
| 834 | .qc_issue = ata_qc_issue_prot, | 834 | .qc_issue = ata_qc_issue_prot, |
| 835 | .eng_timeout = ata_eng_timeout, | 835 | |
| 836 | .data_xfer = ata_pio_data_xfer, | 836 | .data_xfer = ata_pio_data_xfer, |
| 837 | 837 | ||
| 838 | .irq_handler = ata_interrupt, | 838 | .irq_handler = ata_interrupt, |
| @@ -872,7 +872,7 @@ static struct ata_port_operations hpt372_port_ops = { | |||
| 872 | 872 | ||
| 873 | .qc_prep = ata_qc_prep, | 873 | .qc_prep = ata_qc_prep, |
| 874 | .qc_issue = ata_qc_issue_prot, | 874 | .qc_issue = ata_qc_issue_prot, |
| 875 | .eng_timeout = ata_eng_timeout, | 875 | |
| 876 | .data_xfer = ata_pio_data_xfer, | 876 | .data_xfer = ata_pio_data_xfer, |
| 877 | 877 | ||
| 878 | .irq_handler = ata_interrupt, | 878 | .irq_handler = ata_interrupt, |
| @@ -912,7 +912,7 @@ static struct ata_port_operations hpt374_port_ops = { | |||
| 912 | 912 | ||
| 913 | .qc_prep = ata_qc_prep, | 913 | .qc_prep = ata_qc_prep, |
| 914 | .qc_issue = ata_qc_issue_prot, | 914 | .qc_issue = ata_qc_issue_prot, |
| 915 | .eng_timeout = ata_eng_timeout, | 915 | |
| 916 | .data_xfer = ata_pio_data_xfer, | 916 | .data_xfer = ata_pio_data_xfer, |
| 917 | 917 | ||
| 918 | .irq_handler = ata_interrupt, | 918 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c index 06c8db079b91..5c5d4f6ab901 100644 --- a/drivers/ata/pata_hpt3x2n.c +++ b/drivers/ata/pata_hpt3x2n.c | |||
| @@ -372,7 +372,7 @@ static struct ata_port_operations hpt3x2n_port_ops = { | |||
| 372 | 372 | ||
| 373 | .qc_prep = ata_qc_prep, | 373 | .qc_prep = ata_qc_prep, |
| 374 | .qc_issue = hpt3x2n_qc_issue_prot, | 374 | .qc_issue = hpt3x2n_qc_issue_prot, |
| 375 | .eng_timeout = ata_eng_timeout, | 375 | |
| 376 | .data_xfer = ata_pio_data_xfer, | 376 | .data_xfer = ata_pio_data_xfer, |
| 377 | 377 | ||
| 378 | .irq_handler = ata_interrupt, | 378 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_hpt3x3.c b/drivers/ata/pata_hpt3x3.c index 152770133ab1..1f084ab1ccc6 100644 --- a/drivers/ata/pata_hpt3x3.c +++ b/drivers/ata/pata_hpt3x3.c | |||
| @@ -145,7 +145,7 @@ static struct ata_port_operations hpt3x3_port_ops = { | |||
| 145 | 145 | ||
| 146 | .qc_prep = ata_qc_prep, | 146 | .qc_prep = ata_qc_prep, |
| 147 | .qc_issue = ata_qc_issue_prot, | 147 | .qc_issue = ata_qc_issue_prot, |
| 148 | .eng_timeout = ata_eng_timeout, | 148 | |
| 149 | .data_xfer = ata_pio_data_xfer, | 149 | .data_xfer = ata_pio_data_xfer, |
| 150 | 150 | ||
| 151 | .irq_handler = ata_interrupt, | 151 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c index 73948c8b7270..640b8b0954f5 100644 --- a/drivers/ata/pata_isapnp.c +++ b/drivers/ata/pata_isapnp.c | |||
| @@ -52,7 +52,7 @@ static struct ata_port_operations isapnp_port_ops = { | |||
| 52 | 52 | ||
| 53 | .qc_prep = ata_qc_prep, | 53 | .qc_prep = ata_qc_prep, |
| 54 | .qc_issue = ata_qc_issue_prot, | 54 | .qc_issue = ata_qc_issue_prot, |
| 55 | .eng_timeout = ata_eng_timeout, | 55 | |
| 56 | .data_xfer = ata_pio_data_xfer, | 56 | .data_xfer = ata_pio_data_xfer, |
| 57 | 57 | ||
| 58 | .irq_handler = ata_interrupt, | 58 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index af39097d8081..82a46ff40000 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
| @@ -703,7 +703,7 @@ static struct ata_port_operations it821x_smart_port_ops = { | |||
| 703 | 703 | ||
| 704 | .qc_prep = ata_qc_prep, | 704 | .qc_prep = ata_qc_prep, |
| 705 | .qc_issue = it821x_smart_qc_issue_prot, | 705 | .qc_issue = it821x_smart_qc_issue_prot, |
| 706 | .eng_timeout = ata_eng_timeout, | 706 | |
| 707 | .data_xfer = ata_pio_data_xfer, | 707 | .data_xfer = ata_pio_data_xfer, |
| 708 | 708 | ||
| 709 | .irq_handler = ata_interrupt, | 709 | .irq_handler = ata_interrupt, |
| @@ -739,7 +739,7 @@ static struct ata_port_operations it821x_passthru_port_ops = { | |||
| 739 | 739 | ||
| 740 | .qc_prep = ata_qc_prep, | 740 | .qc_prep = ata_qc_prep, |
| 741 | .qc_issue = it821x_passthru_qc_issue_prot, | 741 | .qc_issue = it821x_passthru_qc_issue_prot, |
| 742 | .eng_timeout = ata_eng_timeout, | 742 | |
| 743 | .data_xfer = ata_pio_data_xfer, | 743 | .data_xfer = ata_pio_data_xfer, |
| 744 | 744 | ||
| 745 | .irq_clear = ata_bmdma_irq_clear, | 745 | .irq_clear = ata_bmdma_irq_clear, |
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c index 6832a643a9eb..be3a866b111f 100644 --- a/drivers/ata/pata_jmicron.c +++ b/drivers/ata/pata_jmicron.c | |||
| @@ -51,7 +51,7 @@ static int jmicron_pre_reset(struct ata_port *ap) | |||
| 51 | /* Check if our port is enabled */ | 51 | /* Check if our port is enabled */ |
| 52 | pci_read_config_dword(pdev, 0x40, &control); | 52 | pci_read_config_dword(pdev, 0x40, &control); |
| 53 | if ((control & port_mask) == 0) | 53 | if ((control & port_mask) == 0) |
| 54 | return 0; | 54 | return -ENOENT; |
| 55 | 55 | ||
| 56 | /* There are two basic mappings. One has the two SATA ports merged | 56 | /* There are two basic mappings. One has the two SATA ports merged |
| 57 | as master/slave and the secondary as PATA, the other has only the | 57 | as master/slave and the secondary as PATA, the other has only the |
| @@ -164,8 +164,7 @@ static const struct ata_port_operations jmicron_ops = { | |||
| 164 | .qc_issue = ata_qc_issue_prot, | 164 | .qc_issue = ata_qc_issue_prot, |
| 165 | .data_xfer = ata_pio_data_xfer, | 165 | .data_xfer = ata_pio_data_xfer, |
| 166 | 166 | ||
| 167 | /* Timeout handling. Special recovery hooks here */ | 167 | /* IRQ-related hooks */ |
| 168 | .eng_timeout = ata_eng_timeout, | ||
| 169 | .irq_handler = ata_interrupt, | 168 | .irq_handler = ata_interrupt, |
| 170 | .irq_clear = ata_bmdma_irq_clear, | 169 | .irq_clear = ata_bmdma_irq_clear, |
| 171 | 170 | ||
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c index ad37c220bb2c..10231ef731d1 100644 --- a/drivers/ata/pata_legacy.c +++ b/drivers/ata/pata_legacy.c | |||
| @@ -161,7 +161,7 @@ static struct ata_port_operations simple_port_ops = { | |||
| 161 | 161 | ||
| 162 | .qc_prep = ata_qc_prep, | 162 | .qc_prep = ata_qc_prep, |
| 163 | .qc_issue = ata_qc_issue_prot, | 163 | .qc_issue = ata_qc_issue_prot, |
| 164 | .eng_timeout = ata_eng_timeout, | 164 | |
| 165 | .data_xfer = ata_pio_data_xfer_noirq, | 165 | .data_xfer = ata_pio_data_xfer_noirq, |
| 166 | 166 | ||
| 167 | .irq_handler = ata_interrupt, | 167 | .irq_handler = ata_interrupt, |
| @@ -186,7 +186,7 @@ static struct ata_port_operations legacy_port_ops = { | |||
| 186 | 186 | ||
| 187 | .qc_prep = ata_qc_prep, | 187 | .qc_prep = ata_qc_prep, |
| 188 | .qc_issue = ata_qc_issue_prot, | 188 | .qc_issue = ata_qc_issue_prot, |
| 189 | .eng_timeout = ata_eng_timeout, | 189 | |
| 190 | .data_xfer = ata_pio_data_xfer_noirq, | 190 | .data_xfer = ata_pio_data_xfer_noirq, |
| 191 | 191 | ||
| 192 | .irq_handler = ata_interrupt, | 192 | .irq_handler = ata_interrupt, |
| @@ -296,7 +296,7 @@ static struct ata_port_operations pdc20230_port_ops = { | |||
| 296 | 296 | ||
| 297 | .qc_prep = ata_qc_prep, | 297 | .qc_prep = ata_qc_prep, |
| 298 | .qc_issue = ata_qc_issue_prot, | 298 | .qc_issue = ata_qc_issue_prot, |
| 299 | .eng_timeout = ata_eng_timeout, | 299 | |
| 300 | .data_xfer = pdc_data_xfer_vlb, | 300 | .data_xfer = pdc_data_xfer_vlb, |
| 301 | 301 | ||
| 302 | .irq_handler = ata_interrupt, | 302 | .irq_handler = ata_interrupt, |
| @@ -348,7 +348,7 @@ static struct ata_port_operations ht6560a_port_ops = { | |||
| 348 | 348 | ||
| 349 | .qc_prep = ata_qc_prep, | 349 | .qc_prep = ata_qc_prep, |
| 350 | .qc_issue = ata_qc_issue_prot, | 350 | .qc_issue = ata_qc_issue_prot, |
| 351 | .eng_timeout = ata_eng_timeout, | 351 | |
| 352 | .data_xfer = ata_pio_data_xfer, /* Check vlb/noirq */ | 352 | .data_xfer = ata_pio_data_xfer, /* Check vlb/noirq */ |
| 353 | 353 | ||
| 354 | .irq_handler = ata_interrupt, | 354 | .irq_handler = ata_interrupt, |
| @@ -411,7 +411,7 @@ static struct ata_port_operations ht6560b_port_ops = { | |||
| 411 | 411 | ||
| 412 | .qc_prep = ata_qc_prep, | 412 | .qc_prep = ata_qc_prep, |
| 413 | .qc_issue = ata_qc_issue_prot, | 413 | .qc_issue = ata_qc_issue_prot, |
| 414 | .eng_timeout = ata_eng_timeout, | 414 | |
| 415 | .data_xfer = ata_pio_data_xfer, /* FIXME: Check 32bit and noirq */ | 415 | .data_xfer = ata_pio_data_xfer, /* FIXME: Check 32bit and noirq */ |
| 416 | 416 | ||
| 417 | .irq_handler = ata_interrupt, | 417 | .irq_handler = ata_interrupt, |
| @@ -529,7 +529,7 @@ static struct ata_port_operations opti82c611a_port_ops = { | |||
| 529 | 529 | ||
| 530 | .qc_prep = ata_qc_prep, | 530 | .qc_prep = ata_qc_prep, |
| 531 | .qc_issue = ata_qc_issue_prot, | 531 | .qc_issue = ata_qc_issue_prot, |
| 532 | .eng_timeout = ata_eng_timeout, | 532 | |
| 533 | .data_xfer = ata_pio_data_xfer, | 533 | .data_xfer = ata_pio_data_xfer, |
| 534 | 534 | ||
| 535 | .irq_handler = ata_interrupt, | 535 | .irq_handler = ata_interrupt, |
| @@ -659,7 +659,7 @@ static struct ata_port_operations opti82c46x_port_ops = { | |||
| 659 | 659 | ||
| 660 | .qc_prep = ata_qc_prep, | 660 | .qc_prep = ata_qc_prep, |
| 661 | .qc_issue = opti82c46x_qc_issue_prot, | 661 | .qc_issue = opti82c46x_qc_issue_prot, |
| 662 | .eng_timeout = ata_eng_timeout, | 662 | |
| 663 | .data_xfer = ata_pio_data_xfer, | 663 | .data_xfer = ata_pio_data_xfer, |
| 664 | 664 | ||
| 665 | .irq_handler = ata_interrupt, | 665 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_mpiix.c b/drivers/ata/pata_mpiix.c index 1958c4ed09a8..3c65393c1f01 100644 --- a/drivers/ata/pata_mpiix.c +++ b/drivers/ata/pata_mpiix.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | * The driver conciously keeps this logic internally to avoid pushing quirky | 18 | * The driver conciously keeps this logic internally to avoid pushing quirky |
| 19 | * PATA history into the clean libata layer. | 19 | * PATA history into the clean libata layer. |
| 20 | * | 20 | * |
| 21 | * Thinkpad specific note: If you boot an MPIIX using thinkpad with a PCMCIA | 21 | * Thinkpad specific note: If you boot an MPIIX using a thinkpad with a PCMCIA |
| 22 | * hard disk present this driver will not detect it. This is not a bug. In this | 22 | * hard disk present this driver will not detect it. This is not a bug. In this |
| 23 | * configuration the secondary port of the MPIIX is disabled and the addresses | 23 | * configuration the secondary port of the MPIIX is disabled and the addresses |
| 24 | * are decoded by the PCMCIA bridge and therefore are for a generic IDE driver | 24 | * are decoded by the PCMCIA bridge and therefore are for a generic IDE driver |
| @@ -35,7 +35,7 @@ | |||
| 35 | #include <linux/libata.h> | 35 | #include <linux/libata.h> |
| 36 | 36 | ||
| 37 | #define DRV_NAME "pata_mpiix" | 37 | #define DRV_NAME "pata_mpiix" |
| 38 | #define DRV_VERSION "0.7.1" | 38 | #define DRV_VERSION "0.7.2" |
| 39 | 39 | ||
| 40 | enum { | 40 | enum { |
| 41 | IDETIM = 0x6C, /* IDE control register */ | 41 | IDETIM = 0x6C, /* IDE control register */ |
| @@ -54,11 +54,8 @@ static int mpiix_pre_reset(struct ata_port *ap) | |||
| 54 | { 0x6F, 1, 0x80, 0x80 } | 54 | { 0x6F, 1, 0x80, 0x80 } |
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | if (!pci_test_config_bits(pdev, &mpiix_enable_bits[ap->port_no])) { | 57 | if (!pci_test_config_bits(pdev, &mpiix_enable_bits[ap->port_no])) |
| 58 | ata_port_disable(ap); | 58 | return -ENOENT; |
| 59 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 60 | return 0; | ||
| 61 | } | ||
| 62 | ap->cbl = ATA_CBL_PATA40; | 59 | ap->cbl = ATA_CBL_PATA40; |
| 63 | return ata_std_prereset(ap); | 60 | return ata_std_prereset(ap); |
| 64 | } | 61 | } |
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c index 16cb254cb973..76eb9c90bee1 100644 --- a/drivers/ata/pata_netcell.c +++ b/drivers/ata/pata_netcell.c | |||
| @@ -90,8 +90,7 @@ static const struct ata_port_operations netcell_ops = { | |||
| 90 | .qc_issue = ata_qc_issue_prot, | 90 | .qc_issue = ata_qc_issue_prot, |
| 91 | .data_xfer = ata_pio_data_xfer, | 91 | .data_xfer = ata_pio_data_xfer, |
| 92 | 92 | ||
| 93 | /* Timeout handling. Special recovery hooks here */ | 93 | /* IRQ-related hooks */ |
| 94 | .eng_timeout = ata_eng_timeout, | ||
| 95 | .irq_handler = ata_interrupt, | 94 | .irq_handler = ata_interrupt, |
| 96 | .irq_clear = ata_bmdma_irq_clear, | 95 | .irq_clear = ata_bmdma_irq_clear, |
| 97 | 96 | ||
diff --git a/drivers/ata/pata_ns87410.c b/drivers/ata/pata_ns87410.c index 93d6646d2954..2005a95f48f6 100644 --- a/drivers/ata/pata_ns87410.c +++ b/drivers/ata/pata_ns87410.c | |||
| @@ -45,11 +45,8 @@ static int ns87410_pre_reset(struct ata_port *ap) | |||
| 45 | { 0x47, 1, 0x08, 0x08 } | 45 | { 0x47, 1, 0x08, 0x08 } |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | if (!pci_test_config_bits(pdev, &ns87410_enable_bits[ap->port_no])) { | 48 | if (!pci_test_config_bits(pdev, &ns87410_enable_bits[ap->port_no])) |
| 49 | ata_port_disable(ap); | 49 | return -ENOENT; |
| 50 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 51 | return 0; | ||
| 52 | } | ||
| 53 | ap->cbl = ATA_CBL_PATA40; | 50 | ap->cbl = ATA_CBL_PATA40; |
| 54 | return ata_std_prereset(ap); | 51 | return ata_std_prereset(ap); |
| 55 | } | 52 | } |
| @@ -179,7 +176,7 @@ static struct ata_port_operations ns87410_port_ops = { | |||
| 179 | 176 | ||
| 180 | .qc_prep = ata_qc_prep, | 177 | .qc_prep = ata_qc_prep, |
| 181 | .qc_issue = ns87410_qc_issue_prot, | 178 | .qc_issue = ns87410_qc_issue_prot, |
| 182 | .eng_timeout = ata_eng_timeout, | 179 | |
| 183 | .data_xfer = ata_pio_data_xfer, | 180 | .data_xfer = ata_pio_data_xfer, |
| 184 | 181 | ||
| 185 | .irq_handler = ata_interrupt, | 182 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_oldpiix.c b/drivers/ata/pata_oldpiix.c index 04c618a2664b..31a285ca88dc 100644 --- a/drivers/ata/pata_oldpiix.c +++ b/drivers/ata/pata_oldpiix.c | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <linux/ata.h> | 25 | #include <linux/ata.h> |
| 26 | 26 | ||
| 27 | #define DRV_NAME "pata_oldpiix" | 27 | #define DRV_NAME "pata_oldpiix" |
| 28 | #define DRV_VERSION "0.5.1" | 28 | #define DRV_VERSION "0.5.2" |
| 29 | 29 | ||
| 30 | /** | 30 | /** |
| 31 | * oldpiix_pre_reset - probe begin | 31 | * oldpiix_pre_reset - probe begin |
| @@ -42,11 +42,8 @@ static int oldpiix_pre_reset(struct ata_port *ap) | |||
| 42 | { 0x43U, 1U, 0x80UL, 0x80UL }, /* port 1 */ | 42 | { 0x43U, 1U, 0x80UL, 0x80UL }, /* port 1 */ |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | if (!pci_test_config_bits(pdev, &oldpiix_enable_bits[ap->port_no])) { | 45 | if (!pci_test_config_bits(pdev, &oldpiix_enable_bits[ap->port_no])) |
| 46 | ata_port_disable(ap); | 46 | return -ENOENT; |
| 47 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 48 | return 0; | ||
| 49 | } | ||
| 50 | ap->cbl = ATA_CBL_PATA40; | 47 | ap->cbl = ATA_CBL_PATA40; |
| 51 | return ata_std_prereset(ap); | 48 | return ata_std_prereset(ap); |
| 52 | } | 49 | } |
diff --git a/drivers/ata/pata_opti.c b/drivers/ata/pata_opti.c index c3d01325e0e2..57fe21f3a975 100644 --- a/drivers/ata/pata_opti.c +++ b/drivers/ata/pata_opti.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | #include <linux/libata.h> | 34 | #include <linux/libata.h> |
| 35 | 35 | ||
| 36 | #define DRV_NAME "pata_opti" | 36 | #define DRV_NAME "pata_opti" |
| 37 | #define DRV_VERSION "0.2.4" | 37 | #define DRV_VERSION "0.2.5" |
| 38 | 38 | ||
| 39 | enum { | 39 | enum { |
| 40 | READ_REG = 0, /* index of Read cycle timing register */ | 40 | READ_REG = 0, /* index of Read cycle timing register */ |
| @@ -59,11 +59,9 @@ static int opti_pre_reset(struct ata_port *ap) | |||
| 59 | { 0x40, 1, 0x08, 0x00 } | 59 | { 0x40, 1, 0x08, 0x00 } |
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | if (!pci_test_config_bits(pdev, &opti_enable_bits[ap->port_no])) { | 62 | if (!pci_test_config_bits(pdev, &opti_enable_bits[ap->port_no])) |
| 63 | ata_port_disable(ap); | 63 | return -ENOENT; |
| 64 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 64 | |
| 65 | return 0; | ||
| 66 | } | ||
| 67 | ap->cbl = ATA_CBL_PATA40; | 65 | ap->cbl = ATA_CBL_PATA40; |
| 68 | return ata_std_prereset(ap); | 66 | return ata_std_prereset(ap); |
| 69 | } | 67 | } |
| @@ -229,7 +227,7 @@ static struct ata_port_operations opti_port_ops = { | |||
| 229 | 227 | ||
| 230 | .qc_prep = ata_qc_prep, | 228 | .qc_prep = ata_qc_prep, |
| 231 | .qc_issue = ata_qc_issue_prot, | 229 | .qc_issue = ata_qc_issue_prot, |
| 232 | .eng_timeout = ata_eng_timeout, | 230 | |
| 233 | .data_xfer = ata_pio_data_xfer, | 231 | .data_xfer = ata_pio_data_xfer, |
| 234 | 232 | ||
| 235 | .irq_handler = ata_interrupt, | 233 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_optidma.c b/drivers/ata/pata_optidma.c index 177a455f4251..7296a20cd107 100644 --- a/drivers/ata/pata_optidma.c +++ b/drivers/ata/pata_optidma.c | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | #include <linux/libata.h> | 33 | #include <linux/libata.h> |
| 34 | 34 | ||
| 35 | #define DRV_NAME "pata_optidma" | 35 | #define DRV_NAME "pata_optidma" |
| 36 | #define DRV_VERSION "0.2.1" | 36 | #define DRV_VERSION "0.2.2" |
| 37 | 37 | ||
| 38 | enum { | 38 | enum { |
| 39 | READ_REG = 0, /* index of Read cycle timing register */ | 39 | READ_REG = 0, /* index of Read cycle timing register */ |
| @@ -59,11 +59,9 @@ static int optidma_pre_reset(struct ata_port *ap) | |||
| 59 | 0x40, 1, 0x08, 0x00 | 59 | 0x40, 1, 0x08, 0x00 |
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | if (ap->port_no && !pci_test_config_bits(pdev, &optidma_enable_bits)) { | 62 | if (ap->port_no && !pci_test_config_bits(pdev, &optidma_enable_bits)) |
| 63 | ata_port_disable(ap); | 63 | return -ENOENT; |
| 64 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 64 | |
| 65 | return 0; | ||
| 66 | } | ||
| 67 | ap->cbl = ATA_CBL_PATA40; | 65 | ap->cbl = ATA_CBL_PATA40; |
| 68 | return ata_std_prereset(ap); | 66 | return ata_std_prereset(ap); |
| 69 | } | 67 | } |
| @@ -388,7 +386,7 @@ static struct ata_port_operations optidma_port_ops = { | |||
| 388 | 386 | ||
| 389 | .qc_prep = ata_qc_prep, | 387 | .qc_prep = ata_qc_prep, |
| 390 | .qc_issue = ata_qc_issue_prot, | 388 | .qc_issue = ata_qc_issue_prot, |
| 391 | .eng_timeout = ata_eng_timeout, | 389 | |
| 392 | .data_xfer = ata_pio_data_xfer, | 390 | .data_xfer = ata_pio_data_xfer, |
| 393 | 391 | ||
| 394 | .irq_handler = ata_interrupt, | 392 | .irq_handler = ata_interrupt, |
| @@ -423,7 +421,7 @@ static struct ata_port_operations optiplus_port_ops = { | |||
| 423 | 421 | ||
| 424 | .qc_prep = ata_qc_prep, | 422 | .qc_prep = ata_qc_prep, |
| 425 | .qc_issue = ata_qc_issue_prot, | 423 | .qc_issue = ata_qc_issue_prot, |
| 426 | .eng_timeout = ata_eng_timeout, | 424 | |
| 427 | .data_xfer = ata_pio_data_xfer, | 425 | .data_xfer = ata_pio_data_xfer, |
| 428 | 426 | ||
| 429 | .irq_handler = ata_interrupt, | 427 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c index 62b25cda409b..cb501e145a42 100644 --- a/drivers/ata/pata_pcmcia.c +++ b/drivers/ata/pata_pcmcia.c | |||
| @@ -87,7 +87,7 @@ static struct ata_port_operations pcmcia_port_ops = { | |||
| 87 | 87 | ||
| 88 | .qc_prep = ata_qc_prep, | 88 | .qc_prep = ata_qc_prep, |
| 89 | .qc_issue = ata_qc_issue_prot, | 89 | .qc_issue = ata_qc_issue_prot, |
| 90 | .eng_timeout = ata_eng_timeout, | 90 | |
| 91 | .data_xfer = ata_pio_data_xfer_noirq, | 91 | .data_xfer = ata_pio_data_xfer_noirq, |
| 92 | 92 | ||
| 93 | .irq_handler = ata_interrupt, | 93 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c index 31ab9c886209..bd4ed6734edc 100644 --- a/drivers/ata/pata_pdc2027x.c +++ b/drivers/ata/pata_pdc2027x.c | |||
| @@ -36,7 +36,7 @@ | |||
| 36 | #include <asm/io.h> | 36 | #include <asm/io.h> |
| 37 | 37 | ||
| 38 | #define DRV_NAME "pata_pdc2027x" | 38 | #define DRV_NAME "pata_pdc2027x" |
| 39 | #define DRV_VERSION "0.74-ac3" | 39 | #define DRV_VERSION "0.74-ac5" |
| 40 | #undef PDC_DEBUG | 40 | #undef PDC_DEBUG |
| 41 | 41 | ||
| 42 | #ifdef PDC_DEBUG | 42 | #ifdef PDC_DEBUG |
| @@ -311,10 +311,8 @@ static inline int pdc2027x_port_enabled(struct ata_port *ap) | |||
| 311 | static int pdc2027x_prereset(struct ata_port *ap) | 311 | static int pdc2027x_prereset(struct ata_port *ap) |
| 312 | { | 312 | { |
| 313 | /* Check whether port enabled */ | 313 | /* Check whether port enabled */ |
| 314 | if (!pdc2027x_port_enabled(ap)) { | 314 | if (!pdc2027x_port_enabled(ap)) |
| 315 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 315 | return -ENOENT; |
| 316 | return 0; | ||
| 317 | } | ||
| 318 | pdc2027x_cbl_detect(ap); | 316 | pdc2027x_cbl_detect(ap); |
| 319 | return ata_std_prereset(ap); | 317 | return ata_std_prereset(ap); |
| 320 | } | 318 | } |
diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.c index 35cfdf0ac3f0..7977f471d5e9 100644 --- a/drivers/ata/pata_qdi.c +++ b/drivers/ata/pata_qdi.c | |||
| @@ -184,7 +184,7 @@ static struct ata_port_operations qdi6500_port_ops = { | |||
| 184 | 184 | ||
| 185 | .qc_prep = ata_qc_prep, | 185 | .qc_prep = ata_qc_prep, |
| 186 | .qc_issue = qdi_qc_issue_prot, | 186 | .qc_issue = qdi_qc_issue_prot, |
| 187 | .eng_timeout = ata_eng_timeout, | 187 | |
| 188 | .data_xfer = qdi_data_xfer, | 188 | .data_xfer = qdi_data_xfer, |
| 189 | 189 | ||
| 190 | .irq_handler = ata_interrupt, | 190 | .irq_handler = ata_interrupt, |
| @@ -212,7 +212,7 @@ static struct ata_port_operations qdi6580_port_ops = { | |||
| 212 | 212 | ||
| 213 | .qc_prep = ata_qc_prep, | 213 | .qc_prep = ata_qc_prep, |
| 214 | .qc_issue = qdi_qc_issue_prot, | 214 | .qc_issue = qdi_qc_issue_prot, |
| 215 | .eng_timeout = ata_eng_timeout, | 215 | |
| 216 | .data_xfer = qdi_data_xfer, | 216 | .data_xfer = qdi_data_xfer, |
| 217 | 217 | ||
| 218 | .irq_handler = ata_interrupt, | 218 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_radisys.c b/drivers/ata/pata_radisys.c index 277f8411b521..c20bcf43ed6d 100644 --- a/drivers/ata/pata_radisys.c +++ b/drivers/ata/pata_radisys.c | |||
| @@ -255,8 +255,6 @@ static const struct ata_port_operations radisys_pata_ops = { | |||
| 255 | .qc_issue = radisys_qc_issue_prot, | 255 | .qc_issue = radisys_qc_issue_prot, |
| 256 | .data_xfer = ata_pio_data_xfer, | 256 | .data_xfer = ata_pio_data_xfer, |
| 257 | 257 | ||
| 258 | .eng_timeout = ata_eng_timeout, | ||
| 259 | |||
| 260 | .irq_handler = ata_interrupt, | 258 | .irq_handler = ata_interrupt, |
| 261 | .irq_clear = ata_bmdma_irq_clear, | 259 | .irq_clear = ata_bmdma_irq_clear, |
| 262 | 260 | ||
diff --git a/drivers/ata/pata_rz1000.c b/drivers/ata/pata_rz1000.c index 3c6d84fd4312..eccc6fd45032 100644 --- a/drivers/ata/pata_rz1000.c +++ b/drivers/ata/pata_rz1000.c | |||
| @@ -112,7 +112,7 @@ static struct ata_port_operations rz1000_port_ops = { | |||
| 112 | 112 | ||
| 113 | .qc_prep = ata_qc_prep, | 113 | .qc_prep = ata_qc_prep, |
| 114 | .qc_issue = ata_qc_issue_prot, | 114 | .qc_issue = ata_qc_issue_prot, |
| 115 | .eng_timeout = ata_eng_timeout, | 115 | |
| 116 | .data_xfer = ata_pio_data_xfer, | 116 | .data_xfer = ata_pio_data_xfer, |
| 117 | 117 | ||
| 118 | .freeze = ata_bmdma_freeze, | 118 | .freeze = ata_bmdma_freeze, |
diff --git a/drivers/ata/pata_sc1200.c b/drivers/ata/pata_sc1200.c index 4166c1a8a9e8..107e6cd3dc0d 100644 --- a/drivers/ata/pata_sc1200.c +++ b/drivers/ata/pata_sc1200.c | |||
| @@ -217,7 +217,7 @@ static struct ata_port_operations sc1200_port_ops = { | |||
| 217 | 217 | ||
| 218 | .qc_prep = ata_qc_prep, | 218 | .qc_prep = ata_qc_prep, |
| 219 | .qc_issue = sc1200_qc_issue_prot, | 219 | .qc_issue = sc1200_qc_issue_prot, |
| 220 | .eng_timeout = ata_eng_timeout, | 220 | |
| 221 | .data_xfer = ata_pio_data_xfer, | 221 | .data_xfer = ata_pio_data_xfer, |
| 222 | 222 | ||
| 223 | .irq_handler = ata_interrupt, | 223 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c index af456113c55d..a5c8d7e121d1 100644 --- a/drivers/ata/pata_serverworks.c +++ b/drivers/ata/pata_serverworks.c | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | #include <linux/libata.h> | 41 | #include <linux/libata.h> |
| 42 | 42 | ||
| 43 | #define DRV_NAME "pata_serverworks" | 43 | #define DRV_NAME "pata_serverworks" |
| 44 | #define DRV_VERSION "0.3.6" | 44 | #define DRV_VERSION "0.3.7" |
| 45 | 45 | ||
| 46 | #define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */ | 46 | #define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */ |
| 47 | #define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */ | 47 | #define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */ |
| @@ -128,7 +128,7 @@ static struct sv_cable_table cable_detect[] = { | |||
| 128 | { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_DELL, dell_cable }, | 128 | { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_DELL, dell_cable }, |
| 129 | { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_VENDOR_ID_DELL, dell_cable }, | 129 | { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_VENDOR_ID_DELL, dell_cable }, |
| 130 | { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_SUN, sun_cable }, | 130 | { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_SUN, sun_cable }, |
| 131 | { PCI_DEVICE_ID_SERVERWORKS_OSB4, PCI_ANY_ID, osb4_cable }, | 131 | { PCI_DEVICE_ID_SERVERWORKS_OSB4IDE, PCI_ANY_ID, osb4_cable }, |
| 132 | { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, csb_cable }, | 132 | { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, csb_cable }, |
| 133 | { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, csb_cable }, | 133 | { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, csb_cable }, |
| 134 | { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, csb_cable }, | 134 | { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, csb_cable }, |
| @@ -352,10 +352,12 @@ static struct ata_port_operations serverworks_osb4_port_ops = { | |||
| 352 | 352 | ||
| 353 | .qc_prep = ata_qc_prep, | 353 | .qc_prep = ata_qc_prep, |
| 354 | .qc_issue = ata_qc_issue_prot, | 354 | .qc_issue = ata_qc_issue_prot, |
| 355 | .eng_timeout = ata_eng_timeout, | 355 | |
| 356 | .data_xfer = ata_pio_data_xfer, | 356 | .data_xfer = ata_pio_data_xfer, |
| 357 | 357 | ||
| 358 | .irq_handler = ata_interrupt, | 358 | .irq_handler = ata_interrupt, |
| 359 | .irq_clear = ata_bmdma_irq_clear, | ||
| 360 | |||
| 359 | .port_start = ata_port_start, | 361 | .port_start = ata_port_start, |
| 360 | .port_stop = ata_port_stop, | 362 | .port_stop = ata_port_stop, |
| 361 | .host_stop = ata_host_stop | 363 | .host_stop = ata_host_stop |
| @@ -385,10 +387,12 @@ static struct ata_port_operations serverworks_csb_port_ops = { | |||
| 385 | 387 | ||
| 386 | .qc_prep = ata_qc_prep, | 388 | .qc_prep = ata_qc_prep, |
| 387 | .qc_issue = ata_qc_issue_prot, | 389 | .qc_issue = ata_qc_issue_prot, |
| 388 | .eng_timeout = ata_eng_timeout, | 390 | |
| 389 | .data_xfer = ata_pio_data_xfer, | 391 | .data_xfer = ata_pio_data_xfer, |
| 390 | 392 | ||
| 391 | .irq_handler = ata_interrupt, | 393 | .irq_handler = ata_interrupt, |
| 394 | .irq_clear = ata_bmdma_irq_clear, | ||
| 395 | |||
| 392 | .port_start = ata_port_start, | 396 | .port_start = ata_port_start, |
| 393 | .port_stop = ata_port_stop, | 397 | .port_stop = ata_port_stop, |
| 394 | .host_stop = ata_host_stop | 398 | .host_stop = ata_host_stop |
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c index 8f7db9638d0a..c8b2e26db70d 100644 --- a/drivers/ata/pata_sil680.c +++ b/drivers/ata/pata_sil680.c | |||
| @@ -251,7 +251,7 @@ static struct ata_port_operations sil680_port_ops = { | |||
| 251 | 251 | ||
| 252 | .qc_prep = ata_qc_prep, | 252 | .qc_prep = ata_qc_prep, |
| 253 | .qc_issue = ata_qc_issue_prot, | 253 | .qc_issue = ata_qc_issue_prot, |
| 254 | .eng_timeout = ata_eng_timeout, | 254 | |
| 255 | .data_xfer = ata_pio_data_xfer, | 255 | .data_xfer = ata_pio_data_xfer, |
| 256 | 256 | ||
| 257 | .irq_handler = ata_interrupt, | 257 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index 2e555168b431..17791e2785f9 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | #include <linux/ata.h> | 34 | #include <linux/ata.h> |
| 35 | 35 | ||
| 36 | #define DRV_NAME "pata_sis" | 36 | #define DRV_NAME "pata_sis" |
| 37 | #define DRV_VERSION "0.4.3" | 37 | #define DRV_VERSION "0.4.4" |
| 38 | 38 | ||
| 39 | struct sis_chipset { | 39 | struct sis_chipset { |
| 40 | u16 device; /* PCI host ID */ | 40 | u16 device; /* PCI host ID */ |
| @@ -74,11 +74,9 @@ static int sis_133_pre_reset(struct ata_port *ap) | |||
| 74 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 74 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 75 | u16 tmp; | 75 | u16 tmp; |
| 76 | 76 | ||
| 77 | if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->port_no])) { | 77 | if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->port_no])) |
| 78 | ata_port_disable(ap); | 78 | return -ENOENT; |
| 79 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | 79 | |
| 80 | return 0; | ||
| 81 | } | ||
| 82 | /* The top bit of this register is the cable detect bit */ | 80 | /* The top bit of this register is the cable detect bit */ |
| 83 | pci_read_config_word(pdev, 0x50 + 2 * ap->port_no, &tmp); | 81 | pci_read_config_word(pdev, 0x50 + 2 * ap->port_no, &tmp); |
| 84 | if (tmp & 0x8000) | 82 | if (tmp & 0x8000) |
| @@ -575,8 +573,6 @@ static const struct ata_port_operations sis_133_ops = { | |||
| 575 | .qc_issue = ata_qc_issue_prot, | 573 | .qc_issue = ata_qc_issue_prot, |
| 576 | .data_xfer = ata_pio_data_xfer, | 574 | .data_xfer = ata_pio_data_xfer, |
| 577 | 575 | ||
| 578 | .eng_timeout = ata_eng_timeout, | ||
| 579 | |||
| 580 | .irq_handler = ata_interrupt, | 576 | .irq_handler = ata_interrupt, |
| 581 | .irq_clear = ata_bmdma_irq_clear, | 577 | .irq_clear = ata_bmdma_irq_clear, |
| 582 | 578 | ||
| @@ -610,8 +606,6 @@ static const struct ata_port_operations sis_133_early_ops = { | |||
| 610 | .qc_issue = ata_qc_issue_prot, | 606 | .qc_issue = ata_qc_issue_prot, |
| 611 | .data_xfer = ata_pio_data_xfer, | 607 | .data_xfer = ata_pio_data_xfer, |
| 612 | 608 | ||
| 613 | .eng_timeout = ata_eng_timeout, | ||
| 614 | |||
| 615 | .irq_handler = ata_interrupt, | 609 | .irq_handler = ata_interrupt, |
| 616 | .irq_clear = ata_bmdma_irq_clear, | 610 | .irq_clear = ata_bmdma_irq_clear, |
| 617 | 611 | ||
| @@ -646,8 +640,6 @@ static const struct ata_port_operations sis_100_ops = { | |||
| 646 | .qc_issue = ata_qc_issue_prot, | 640 | .qc_issue = ata_qc_issue_prot, |
| 647 | .data_xfer = ata_pio_data_xfer, | 641 | .data_xfer = ata_pio_data_xfer, |
| 648 | 642 | ||
| 649 | .eng_timeout = ata_eng_timeout, | ||
| 650 | |||
| 651 | .irq_handler = ata_interrupt, | 643 | .irq_handler = ata_interrupt, |
| 652 | .irq_clear = ata_bmdma_irq_clear, | 644 | .irq_clear = ata_bmdma_irq_clear, |
| 653 | 645 | ||
| @@ -681,8 +673,6 @@ static const struct ata_port_operations sis_66_ops = { | |||
| 681 | .qc_issue = ata_qc_issue_prot, | 673 | .qc_issue = ata_qc_issue_prot, |
| 682 | .data_xfer = ata_pio_data_xfer, | 674 | .data_xfer = ata_pio_data_xfer, |
| 683 | 675 | ||
| 684 | .eng_timeout = ata_eng_timeout, | ||
| 685 | |||
| 686 | .irq_handler = ata_interrupt, | 676 | .irq_handler = ata_interrupt, |
| 687 | .irq_clear = ata_bmdma_irq_clear, | 677 | .irq_clear = ata_bmdma_irq_clear, |
| 688 | 678 | ||
| @@ -716,8 +706,6 @@ static const struct ata_port_operations sis_old_ops = { | |||
| 716 | .qc_issue = ata_qc_issue_prot, | 706 | .qc_issue = ata_qc_issue_prot, |
| 717 | .data_xfer = ata_pio_data_xfer, | 707 | .data_xfer = ata_pio_data_xfer, |
| 718 | 708 | ||
| 719 | .eng_timeout = ata_eng_timeout, | ||
| 720 | |||
| 721 | .irq_handler = ata_interrupt, | 709 | .irq_handler = ata_interrupt, |
| 722 | .irq_clear = ata_bmdma_irq_clear, | 710 | .irq_clear = ata_bmdma_irq_clear, |
| 723 | 711 | ||
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c index f8499786917a..5b762acc5687 100644 --- a/drivers/ata/pata_sl82c105.c +++ b/drivers/ata/pata_sl82c105.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #include <linux/libata.h> | 19 | #include <linux/libata.h> |
| 20 | 20 | ||
| 21 | #define DRV_NAME "pata_sl82c105" | 21 | #define DRV_NAME "pata_sl82c105" |
| 22 | #define DRV_VERSION "0.2.2" | 22 | #define DRV_VERSION "0.2.3" |
| 23 | 23 | ||
| 24 | enum { | 24 | enum { |
| 25 | /* | 25 | /* |
| @@ -49,11 +49,8 @@ static int sl82c105_pre_reset(struct ata_port *ap) | |||
| 49 | }; | 49 | }; |
| 50 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 50 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 51 | 51 | ||
| 52 | if (ap->port_no && !pci_test_config_bits(pdev, &sl82c105_enable_bits[ap->port_no])) { | 52 | if (ap->port_no && !pci_test_config_bits(pdev, &sl82c105_enable_bits[ap->port_no])) |
| 53 | ata_port_disable(ap); | 53 | return -ENOENT; |
| 54 | dev_printk(KERN_INFO, &pdev->dev, "port disabled. ignoring.\n"); | ||
| 55 | return 0; | ||
| 56 | } | ||
| 57 | ap->cbl = ATA_CBL_PATA40; | 54 | ap->cbl = ATA_CBL_PATA40; |
| 58 | return ata_std_prereset(ap); | 55 | return ata_std_prereset(ap); |
| 59 | } | 56 | } |
| @@ -264,7 +261,7 @@ static struct ata_port_operations sl82c105_port_ops = { | |||
| 264 | 261 | ||
| 265 | .qc_prep = ata_qc_prep, | 262 | .qc_prep = ata_qc_prep, |
| 266 | .qc_issue = ata_qc_issue_prot, | 263 | .qc_issue = ata_qc_issue_prot, |
| 267 | .eng_timeout = ata_eng_timeout, | 264 | |
| 268 | .data_xfer = ata_pio_data_xfer, | 265 | .data_xfer = ata_pio_data_xfer, |
| 269 | 266 | ||
| 270 | .irq_handler = ata_interrupt, | 267 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_triflex.c b/drivers/ata/pata_triflex.c index 36f788728f3f..a954ed93a40c 100644 --- a/drivers/ata/pata_triflex.c +++ b/drivers/ata/pata_triflex.c | |||
| @@ -46,13 +46,13 @@ | |||
| 46 | #define DRV_VERSION "0.2.5" | 46 | #define DRV_VERSION "0.2.5" |
| 47 | 47 | ||
| 48 | /** | 48 | /** |
| 49 | * triflex_probe_init - probe begin | 49 | * triflex_prereset - probe begin |
| 50 | * @ap: ATA port | 50 | * @ap: ATA port |
| 51 | * | 51 | * |
| 52 | * Set up cable type and use generic probe init | 52 | * Set up cable type and use generic probe init |
| 53 | */ | 53 | */ |
| 54 | 54 | ||
| 55 | static int triflex_probe_init(struct ata_port *ap) | 55 | static int triflex_prereset(struct ata_port *ap) |
| 56 | { | 56 | { |
| 57 | static const struct pci_bits triflex_enable_bits[] = { | 57 | static const struct pci_bits triflex_enable_bits[] = { |
| 58 | { 0x80, 1, 0x01, 0x01 }, | 58 | { 0x80, 1, 0x01, 0x01 }, |
| @@ -61,11 +61,8 @@ static int triflex_probe_init(struct ata_port *ap) | |||
| 61 | 61 | ||
| 62 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 62 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 63 | 63 | ||
| 64 | if (!pci_test_config_bits(pdev, &triflex_enable_bits[ap->port_no])) { | 64 | if (!pci_test_config_bits(pdev, &triflex_enable_bits[ap->port_no])) |
| 65 | ata_port_disable(ap); | 65 | return -ENOENT; |
| 66 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 67 | return 0; | ||
| 68 | } | ||
| 69 | ap->cbl = ATA_CBL_PATA40; | 66 | ap->cbl = ATA_CBL_PATA40; |
| 70 | return ata_std_prereset(ap); | 67 | return ata_std_prereset(ap); |
| 71 | } | 68 | } |
| @@ -74,7 +71,7 @@ static int triflex_probe_init(struct ata_port *ap) | |||
| 74 | 71 | ||
| 75 | static void triflex_error_handler(struct ata_port *ap) | 72 | static void triflex_error_handler(struct ata_port *ap) |
| 76 | { | 73 | { |
| 77 | ata_bmdma_drive_eh(ap, triflex_probe_init, ata_std_softreset, NULL, ata_std_postreset); | 74 | ata_bmdma_drive_eh(ap, triflex_prereset, ata_std_softreset, NULL, ata_std_postreset); |
| 78 | } | 75 | } |
| 79 | 76 | ||
| 80 | /** | 77 | /** |
| @@ -221,7 +218,7 @@ static struct ata_port_operations triflex_port_ops = { | |||
| 221 | 218 | ||
| 222 | .qc_prep = ata_qc_prep, | 219 | .qc_prep = ata_qc_prep, |
| 223 | .qc_issue = ata_qc_issue_prot, | 220 | .qc_issue = ata_qc_issue_prot, |
| 224 | .eng_timeout = ata_eng_timeout, | 221 | |
| 225 | .data_xfer = ata_pio_data_xfer, | 222 | .data_xfer = ata_pio_data_xfer, |
| 226 | 223 | ||
| 227 | .irq_handler = ata_interrupt, | 224 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index 1b2ff133b163..7b5dd2343b9a 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
| @@ -60,7 +60,7 @@ | |||
| 60 | #include <linux/libata.h> | 60 | #include <linux/libata.h> |
| 61 | 61 | ||
| 62 | #define DRV_NAME "pata_via" | 62 | #define DRV_NAME "pata_via" |
| 63 | #define DRV_VERSION "0.1.13" | 63 | #define DRV_VERSION "0.1.14" |
| 64 | 64 | ||
| 65 | /* | 65 | /* |
| 66 | * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx | 66 | * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx |
| @@ -155,11 +155,8 @@ static int via_pre_reset(struct ata_port *ap) | |||
| 155 | 155 | ||
| 156 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 156 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
| 157 | 157 | ||
| 158 | if (!pci_test_config_bits(pdev, &via_enable_bits[ap->port_no])) { | 158 | if (!pci_test_config_bits(pdev, &via_enable_bits[ap->port_no])) |
| 159 | ata_port_disable(ap); | 159 | return -ENOENT; |
| 160 | printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); | ||
| 161 | return 0; | ||
| 162 | } | ||
| 163 | } | 160 | } |
| 164 | 161 | ||
| 165 | if ((config->flags & VIA_UDMA) >= VIA_UDMA_66) | 162 | if ((config->flags & VIA_UDMA) >= VIA_UDMA_66) |
| @@ -325,7 +322,7 @@ static struct ata_port_operations via_port_ops = { | |||
| 325 | 322 | ||
| 326 | .qc_prep = ata_qc_prep, | 323 | .qc_prep = ata_qc_prep, |
| 327 | .qc_issue = ata_qc_issue_prot, | 324 | .qc_issue = ata_qc_issue_prot, |
| 328 | .eng_timeout = ata_eng_timeout, | 325 | |
| 329 | .data_xfer = ata_pio_data_xfer, | 326 | .data_xfer = ata_pio_data_xfer, |
| 330 | 327 | ||
| 331 | .irq_handler = ata_interrupt, | 328 | .irq_handler = ata_interrupt, |
| @@ -360,7 +357,7 @@ static struct ata_port_operations via_port_ops_noirq = { | |||
| 360 | 357 | ||
| 361 | .qc_prep = ata_qc_prep, | 358 | .qc_prep = ata_qc_prep, |
| 362 | .qc_issue = ata_qc_issue_prot, | 359 | .qc_issue = ata_qc_issue_prot, |
| 363 | .eng_timeout = ata_eng_timeout, | 360 | |
| 364 | .data_xfer = ata_pio_data_xfer_noirq, | 361 | .data_xfer = ata_pio_data_xfer_noirq, |
| 365 | 362 | ||
| 366 | .irq_handler = ata_interrupt, | 363 | .irq_handler = ata_interrupt, |
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index fdce6e07ecd2..c01496df4a99 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
| @@ -463,6 +463,7 @@ static const struct ata_port_operations mv_iie_ops = { | |||
| 463 | 463 | ||
| 464 | .qc_prep = mv_qc_prep_iie, | 464 | .qc_prep = mv_qc_prep_iie, |
| 465 | .qc_issue = mv_qc_issue, | 465 | .qc_issue = mv_qc_issue, |
| 466 | .data_xfer = ata_mmio_data_xfer, | ||
| 466 | 467 | ||
| 467 | .eng_timeout = mv_eng_timeout, | 468 | .eng_timeout = mv_eng_timeout, |
| 468 | 469 | ||
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 27c22feebf30..8cd730fe5dd3 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
| @@ -484,7 +484,7 @@ static void nv_error_handler(struct ata_port *ap) | |||
| 484 | static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | 484 | static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) |
| 485 | { | 485 | { |
| 486 | static int printed_version = 0; | 486 | static int printed_version = 0; |
| 487 | struct ata_port_info *ppi; | 487 | struct ata_port_info *ppi[2]; |
| 488 | struct ata_probe_ent *probe_ent; | 488 | struct ata_probe_ent *probe_ent; |
| 489 | int pci_dev_busy = 0; | 489 | int pci_dev_busy = 0; |
| 490 | int rc; | 490 | int rc; |
| @@ -520,8 +520,8 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 520 | 520 | ||
| 521 | rc = -ENOMEM; | 521 | rc = -ENOMEM; |
| 522 | 522 | ||
| 523 | ppi = &nv_port_info[ent->driver_data]; | 523 | ppi[0] = ppi[1] = &nv_port_info[ent->driver_data]; |
| 524 | probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); | 524 | probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); |
| 525 | if (!probe_ent) | 525 | if (!probe_ent) |
| 526 | goto err_out_regions; | 526 | goto err_out_regions; |
| 527 | 527 | ||
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c index 9b17375d8056..18d49fff8dc4 100644 --- a/drivers/ata/sata_sis.c +++ b/drivers/ata/sata_sis.c | |||
| @@ -240,7 +240,7 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 240 | struct ata_probe_ent *probe_ent = NULL; | 240 | struct ata_probe_ent *probe_ent = NULL; |
| 241 | int rc; | 241 | int rc; |
| 242 | u32 genctl; | 242 | u32 genctl; |
| 243 | struct ata_port_info *ppi; | 243 | struct ata_port_info *ppi[2]; |
| 244 | int pci_dev_busy = 0; | 244 | int pci_dev_busy = 0; |
| 245 | u8 pmr; | 245 | u8 pmr; |
| 246 | u8 port2_start; | 246 | u8 port2_start; |
| @@ -265,8 +265,8 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 265 | if (rc) | 265 | if (rc) |
| 266 | goto err_out_regions; | 266 | goto err_out_regions; |
| 267 | 267 | ||
| 268 | ppi = &sis_port_info; | 268 | ppi[0] = ppi[1] = &sis_port_info; |
| 269 | probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); | 269 | probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); |
| 270 | if (!probe_ent) { | 270 | if (!probe_ent) { |
| 271 | rc = -ENOMEM; | 271 | rc = -ENOMEM; |
| 272 | goto err_out_regions; | 272 | goto err_out_regions; |
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c index 8fc6e800011a..dd76f37be182 100644 --- a/drivers/ata/sata_uli.c +++ b/drivers/ata/sata_uli.c | |||
| @@ -185,7 +185,7 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 185 | { | 185 | { |
| 186 | static int printed_version; | 186 | static int printed_version; |
| 187 | struct ata_probe_ent *probe_ent; | 187 | struct ata_probe_ent *probe_ent; |
| 188 | struct ata_port_info *ppi; | 188 | struct ata_port_info *ppi[2]; |
| 189 | int rc; | 189 | int rc; |
| 190 | unsigned int board_idx = (unsigned int) ent->driver_data; | 190 | unsigned int board_idx = (unsigned int) ent->driver_data; |
| 191 | int pci_dev_busy = 0; | 191 | int pci_dev_busy = 0; |
| @@ -211,8 +211,8 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 211 | if (rc) | 211 | if (rc) |
| 212 | goto err_out_regions; | 212 | goto err_out_regions; |
| 213 | 213 | ||
| 214 | ppi = &uli_port_info; | 214 | ppi[0] = ppi[1] = &uli_port_info; |
| 215 | probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); | 215 | probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); |
| 216 | if (!probe_ent) { | 216 | if (!probe_ent) { |
| 217 | rc = -ENOMEM; | 217 | rc = -ENOMEM; |
| 218 | goto err_out_regions; | 218 | goto err_out_regions; |
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c index 7f087aef99de..a72a2389a11c 100644 --- a/drivers/ata/sata_via.c +++ b/drivers/ata/sata_via.c | |||
| @@ -318,9 +318,10 @@ static void vt6421_init_addrs(struct ata_probe_ent *probe_ent, | |||
| 318 | static struct ata_probe_ent *vt6420_init_probe_ent(struct pci_dev *pdev) | 318 | static struct ata_probe_ent *vt6420_init_probe_ent(struct pci_dev *pdev) |
| 319 | { | 319 | { |
| 320 | struct ata_probe_ent *probe_ent; | 320 | struct ata_probe_ent *probe_ent; |
| 321 | struct ata_port_info *ppi = &vt6420_port_info; | 321 | struct ata_port_info *ppi[2]; |
| 322 | 322 | ||
| 323 | probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); | 323 | ppi[0] = ppi[1] = &vt6420_port_info; |
| 324 | probe_ent = ata_pci_init_native_mode(pdev, ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); | ||
| 324 | if (!probe_ent) | 325 | if (!probe_ent) |
| 325 | return NULL; | 326 | return NULL; |
| 326 | 327 | ||
