diff options
43 files changed, 138 insertions, 188 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 ffa111eea9da..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 | } |
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 | ||