aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-09-27 17:41:00 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-27 17:41:00 -0400
commitac7f6b5e44cb0982b98c31fa33298ba73fb5dcfc (patch)
tree32d5f592be4222f0d6a8a05fcbc1c2eaed729499
parent1f9bd4c96a8e918a86e083706e0d3eb7f030b9a3 (diff)
parentbda3028813bd07f34f30288a492fbf6f7b8712dd (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev: [libata] Don't use old-EH ->eng_timeout() hook when not needed [libata] sata_mv: fix oops by filling in missing hook [libata] One more s/15/ATA_SECONDARY_IRQ/ substitution [libata] pata_serverworks: fill in ->irq_clear hook [PATCH] pata_serverworks: correct PCI ID in cable detection table [PATCH] libata-sff: use our IRQ defines [PATCH] libata-eh: Remove layering violation and duplication when handling absent ports [PATCH] libata: tighten rules for legacy dependancies [PATCH] libata: refuse to register IRQless ports
-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 99837d932f..3f4aa0c99e 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 1d1c30a2fc..377425e713 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 ffa111eea9..5719704eb0 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 753b0152af..b4abd68503 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 3fa80f09f2..02b2b2787d 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 688bb55e19..08b3a40747 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 8448ee6e0e..87af3b5861 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 3293cf9a7e..599ee26672 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 d6ef3bf1ba..c4ccb75a4f 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 3f78a1e54a..6c2269b6bd 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 abf1bb7bd3..e92b0ef43e 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 792ce48285..a6c6cebd0d 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 f3d8a3bc1e..7bba4d954e 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 69d6b42587..d64fcdceaf 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 fd55474e0d..dfa5ac5390 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 c30bc18130..95cd1ca181 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 94bb1dfc3f..cf656ecbe5 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 532a7928f8..10318c0012 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 06c8db079b..5c5d4f6ab9 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 152770133a..1f084ab1cc 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 73948c8b72..640b8b0954 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 af39097d80..82a46ff400 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 6832a643a9..be3a866b11 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 ad37c220bb..10231ef731 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 1958c4ed09..3c65393c1f 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 16cb254cb9..76eb9c90be 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 93d6646d29..2005a95f48 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 04c618a266..31a285ca88 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 c3d01325e0..57fe21f3a9 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 177a455f42..7296a20cd1 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 62b25cda40..cb501e145a 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 31ab9c8862..bd4ed6734e 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 35cfdf0ac3..7977f471d5 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 277f8411b5..c20bcf43ed 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 3c6d84fd43..eccc6fd450 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 4166c1a8a9..107e6cd3dc 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 af456113c5..a5c8d7e121 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 8f7db9638d..c8b2e26db7 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 2e555168b4..17791e2785 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 f849978691..5b762acc56 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 36f788728f..a954ed93a4 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 1b2ff133b1..7b5dd2343b 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 fdce6e07ec..c01496df4a 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