aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ata/Kconfig3
-rw-r--r--drivers/ata/ata_generic.c2
-rw-r--r--drivers/ata/ata_piix.c8
-rw-r--r--drivers/ata/libata-core.c5
-rw-r--r--drivers/ata/libata-eh.c6
-rw-r--r--drivers/ata/libata-sff.c6
-rw-r--r--drivers/ata/pata_ali.c8
-rw-r--r--drivers/ata/pata_amd.c37
-rw-r--r--drivers/ata/pata_artop.c22
-rw-r--r--drivers/ata/pata_atiixp.c12
-rw-r--r--drivers/ata/pata_cmd64x.c6
-rw-r--r--drivers/ata/pata_cs5520.c2
-rw-r--r--drivers/ata/pata_cs5530.c2
-rw-r--r--drivers/ata/pata_cs5535.c2
-rw-r--r--drivers/ata/pata_cypress.c2
-rw-r--r--drivers/ata/pata_efar.c12
-rw-r--r--drivers/ata/pata_hpt366.c2
-rw-r--r--drivers/ata/pata_hpt37x.c8
-rw-r--r--drivers/ata/pata_hpt3x2n.c2
-rw-r--r--drivers/ata/pata_hpt3x3.c2
-rw-r--r--drivers/ata/pata_isapnp.c2
-rw-r--r--drivers/ata/pata_it821x.c4
-rw-r--r--drivers/ata/pata_jmicron.c5
-rw-r--r--drivers/ata/pata_legacy.c14
-rw-r--r--drivers/ata/pata_mpiix.c11
-rw-r--r--drivers/ata/pata_netcell.c3
-rw-r--r--drivers/ata/pata_ns87410.c9
-rw-r--r--drivers/ata/pata_oldpiix.c9
-rw-r--r--drivers/ata/pata_opti.c12
-rw-r--r--drivers/ata/pata_optidma.c14
-rw-r--r--drivers/ata/pata_pcmcia.c2
-rw-r--r--drivers/ata/pata_pdc2027x.c8
-rw-r--r--drivers/ata/pata_qdi.c4
-rw-r--r--drivers/ata/pata_radisys.c2
-rw-r--r--drivers/ata/pata_rz1000.c2
-rw-r--r--drivers/ata/pata_sc1200.c2
-rw-r--r--drivers/ata/pata_serverworks.c12
-rw-r--r--drivers/ata/pata_sil680.c2
-rw-r--r--drivers/ata/pata_sis.c20
-rw-r--r--drivers/ata/pata_sl82c105.c11
-rw-r--r--drivers/ata/pata_triflex.c15
-rw-r--r--drivers/ata/pata_via.c13
-rw-r--r--drivers/ata/sata_mv.c1
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
312config PATA_LEGACY 312config 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
401config PATA_QDI 401config 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
27enum { 27enum {
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
40enum { 40enum {
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
39enum { 39enum {
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
38enum { 38enum {
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)
311static int pdc2027x_prereset(struct ata_port *ap) 311static 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
39struct sis_chipset { 39struct 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
24enum { 24enum {
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
55static int triflex_probe_init(struct ata_port *ap) 55static 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
75static void triflex_error_handler(struct ata_port *ap) 72static 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