aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2007-08-15 05:38:46 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-12 14:55:34 -0400
commit6d32d30f55020d766388df7515f771f68c973033 (patch)
treeec0efe48460b5b3f177fed2698ccd04b7964359b
parentcb94c1cf5a6beffbd8935eb91227df0dd1987644 (diff)
[libata] Remove ->irq_ack() hook, and ata_dummy_irq_on()
* ->irq_ack() is redundant to what the irq handler already performs... chk-status + irq-clear. Furthermore, it is only called in one place, when screaming-irq-debugging is enabled, so we don't want to bother with a hook just for that. * ata_dummy_irq_on() is only ever used in drivers that have no callpath reaching ->irq_on(). Remove .irq_on hook from those drivers, and the now-unused ata_dummy_irq_on() Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/ata/ahci.c4
-rw-r--r--drivers/ata/ata_generic.c1
-rw-r--r--drivers/ata/ata_piix.c3
-rw-r--r--drivers/ata/libata-core.c6
-rw-r--r--drivers/ata/libata-sff.c40
-rw-r--r--drivers/ata/pata_ali.c4
-rw-r--r--drivers/ata/pata_amd.c6
-rw-r--r--drivers/ata/pata_artop.c2
-rw-r--r--drivers/ata/pata_atiixp.c1
-rw-r--r--drivers/ata/pata_cmd640.c1
-rw-r--r--drivers/ata/pata_cmd64x.c3
-rw-r--r--drivers/ata/pata_cs5520.c1
-rw-r--r--drivers/ata/pata_cs5530.c1
-rw-r--r--drivers/ata/pata_cs5535.c1
-rw-r--r--drivers/ata/pata_cypress.c1
-rw-r--r--drivers/ata/pata_efar.c1
-rw-r--r--drivers/ata/pata_hpt366.c1
-rw-r--r--drivers/ata/pata_hpt37x.c4
-rw-r--r--drivers/ata/pata_hpt3x2n.c1
-rw-r--r--drivers/ata/pata_hpt3x3.c1
-rw-r--r--drivers/ata/pata_icside.c18
-rw-r--r--drivers/ata/pata_isapnp.c1
-rw-r--r--drivers/ata/pata_it8213.c1
-rw-r--r--drivers/ata/pata_it821x.c2
-rw-r--r--drivers/ata/pata_ixp4xx_cf.c1
-rw-r--r--drivers/ata/pata_jmicron.c1
-rw-r--r--drivers/ata/pata_legacy.c7
-rw-r--r--drivers/ata/pata_marvell.c1
-rw-r--r--drivers/ata/pata_mpc52xx.c1
-rw-r--r--drivers/ata/pata_mpiix.c1
-rw-r--r--drivers/ata/pata_netcell.c1
-rw-r--r--drivers/ata/pata_ns87410.c1
-rw-r--r--drivers/ata/pata_oldpiix.c1
-rw-r--r--drivers/ata/pata_opti.c1
-rw-r--r--drivers/ata/pata_optidma.c2
-rw-r--r--drivers/ata/pata_pcmcia.c1
-rw-r--r--drivers/ata/pata_pdc2027x.c2
-rw-r--r--drivers/ata/pata_pdc202xx_old.c2
-rw-r--r--drivers/ata/pata_platform.c1
-rw-r--r--drivers/ata/pata_qdi.c2
-rw-r--r--drivers/ata/pata_radisys.c1
-rw-r--r--drivers/ata/pata_rz1000.c1
-rw-r--r--drivers/ata/pata_sc1200.c1
-rw-r--r--drivers/ata/pata_scc.c33
-rw-r--r--drivers/ata/pata_serverworks.c2
-rw-r--r--drivers/ata/pata_sil680.c1
-rw-r--r--drivers/ata/pata_sis.c6
-rw-r--r--drivers/ata/pata_sl82c105.c1
-rw-r--r--drivers/ata/pata_triflex.c1
-rw-r--r--drivers/ata/pata_via.c2
-rw-r--r--drivers/ata/pata_winbond.c1
-rw-r--r--drivers/ata/pdc_adma.c1
-rw-r--r--drivers/ata/sata_inic162x.c1
-rw-r--r--drivers/ata/sata_mv.c3
-rw-r--r--drivers/ata/sata_nv.c4
-rw-r--r--drivers/ata/sata_promise.c3
-rw-r--r--drivers/ata/sata_qstor.c1
-rw-r--r--drivers/ata/sata_sil.c1
-rw-r--r--drivers/ata/sata_sil24.c2
-rw-r--r--drivers/ata/sata_sis.c1
-rw-r--r--drivers/ata/sata_svw.c1
-rw-r--r--drivers/ata/sata_sx4.c1
-rw-r--r--drivers/ata/sata_uli.c1
-rw-r--r--drivers/ata/sata_via.c3
-rw-r--r--drivers/ata/sata_vsc.c1
-rw-r--r--include/linux/libata.h4
66 files changed, 2 insertions, 207 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index baf7d0562190..c888c966a020 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -276,8 +276,6 @@ static const struct ata_port_operations ahci_ops = {
276 .qc_issue = ahci_qc_issue, 276 .qc_issue = ahci_qc_issue,
277 277
278 .irq_clear = ahci_irq_clear, 278 .irq_clear = ahci_irq_clear,
279 .irq_on = ata_dummy_irq_on,
280 .irq_ack = ata_dummy_irq_ack,
281 279
282 .scr_read = ahci_scr_read, 280 .scr_read = ahci_scr_read,
283 .scr_write = ahci_scr_write, 281 .scr_write = ahci_scr_write,
@@ -310,8 +308,6 @@ static const struct ata_port_operations ahci_vt8251_ops = {
310 .qc_issue = ahci_qc_issue, 308 .qc_issue = ahci_qc_issue,
311 309
312 .irq_clear = ahci_irq_clear, 310 .irq_clear = ahci_irq_clear,
313 .irq_on = ata_dummy_irq_on,
314 .irq_ack = ata_dummy_irq_ack,
315 311
316 .scr_read = ahci_scr_read, 312 .scr_read = ahci_scr_read,
317 .scr_write = ahci_scr_write, 313 .scr_write = ahci_scr_write,
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c
index e390ad47c8ef..6ec1bbc4fcc4 100644
--- a/drivers/ata/ata_generic.c
+++ b/drivers/ata/ata_generic.c
@@ -121,7 +121,6 @@ static struct ata_port_operations generic_port_ops = {
121 .irq_handler = ata_interrupt, 121 .irq_handler = ata_interrupt,
122 .irq_clear = ata_bmdma_irq_clear, 122 .irq_clear = ata_bmdma_irq_clear,
123 .irq_on = ata_irq_on, 123 .irq_on = ata_irq_on,
124 .irq_ack = ata_irq_ack,
125 124
126 .port_start = ata_port_start, 125 .port_start = ata_port_start,
127}; 126};
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 4b66b9e9638f..68bc0ae671c5 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -318,7 +318,6 @@ static const struct ata_port_operations piix_pata_ops = {
318 .irq_handler = ata_interrupt, 318 .irq_handler = ata_interrupt,
319 .irq_clear = ata_bmdma_irq_clear, 319 .irq_clear = ata_bmdma_irq_clear,
320 .irq_on = ata_irq_on, 320 .irq_on = ata_irq_on,
321 .irq_ack = ata_irq_ack,
322 321
323 .port_start = ata_port_start, 322 .port_start = ata_port_start,
324}; 323};
@@ -352,7 +351,6 @@ static const struct ata_port_operations ich_pata_ops = {
352 .irq_handler = ata_interrupt, 351 .irq_handler = ata_interrupt,
353 .irq_clear = ata_bmdma_irq_clear, 352 .irq_clear = ata_bmdma_irq_clear,
354 .irq_on = ata_irq_on, 353 .irq_on = ata_irq_on,
355 .irq_ack = ata_irq_ack,
356 354
357 .port_start = ata_port_start, 355 .port_start = ata_port_start,
358}; 356};
@@ -382,7 +380,6 @@ static const struct ata_port_operations piix_sata_ops = {
382 .irq_handler = ata_interrupt, 380 .irq_handler = ata_interrupt,
383 .irq_clear = ata_bmdma_irq_clear, 381 .irq_clear = ata_bmdma_irq_clear,
384 .irq_on = ata_irq_on, 382 .irq_on = ata_irq_on,
385 .irq_ack = ata_irq_ack,
386 383
387 .port_start = ata_port_start, 384 .port_start = ata_port_start,
388}; 385};
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 9f87f7ddd485..4f8b8d210cf4 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -5747,7 +5747,8 @@ idle_irq:
5747 5747
5748#ifdef ATA_IRQ_TRAP 5748#ifdef ATA_IRQ_TRAP
5749 if ((ap->stats.idle_irq % 1000) == 0) { 5749 if ((ap->stats.idle_irq % 1000) == 0) {
5750 ap->ops->irq_ack(ap, 0); /* debug trap */ 5750 ata_chk_status(ap);
5751 ap->ops->irq_clear(ap);
5751 ata_port_printk(ap, KERN_WARNING, "irq trap\n"); 5752 ata_port_printk(ap, KERN_WARNING, "irq trap\n");
5752 return 1; 5753 return 1;
5753 } 5754 }
@@ -7137,9 +7138,6 @@ EXPORT_SYMBOL_GPL(ata_eh_qc_complete);
7137EXPORT_SYMBOL_GPL(ata_eh_qc_retry); 7138EXPORT_SYMBOL_GPL(ata_eh_qc_retry);
7138EXPORT_SYMBOL_GPL(ata_do_eh); 7139EXPORT_SYMBOL_GPL(ata_do_eh);
7139EXPORT_SYMBOL_GPL(ata_irq_on); 7140EXPORT_SYMBOL_GPL(ata_irq_on);
7140EXPORT_SYMBOL_GPL(ata_dummy_irq_on);
7141EXPORT_SYMBOL_GPL(ata_irq_ack);
7142EXPORT_SYMBOL_GPL(ata_dummy_irq_ack);
7143EXPORT_SYMBOL_GPL(ata_dev_try_classify); 7141EXPORT_SYMBOL_GPL(ata_dev_try_classify);
7144 7142
7145EXPORT_SYMBOL_GPL(ata_cable_40wire); 7143EXPORT_SYMBOL_GPL(ata_cable_40wire);
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index dd528dbd9ccf..ccef99a0337c 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -64,46 +64,6 @@ u8 ata_irq_on(struct ata_port *ap)
64 return tmp; 64 return tmp;
65} 65}
66 66
67u8 ata_dummy_irq_on (struct ata_port *ap) { return 0; }
68
69/**
70 * ata_irq_ack - Acknowledge a device interrupt.
71 * @ap: Port on which interrupts are enabled.
72 *
73 * Wait up to 10 ms for legacy IDE device to become idle (BUSY
74 * or BUSY+DRQ clear). Obtain dma status and port status from
75 * device. Clear the interrupt. Return port status.
76 *
77 * LOCKING:
78 */
79
80u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq)
81{
82 unsigned int bits = chk_drq ? ATA_BUSY | ATA_DRQ : ATA_BUSY;
83 u8 host_stat = 0, post_stat = 0, status;
84
85 status = ata_busy_wait(ap, bits, 1000);
86 if (status & bits)
87 if (ata_msg_err(ap))
88 printk(KERN_ERR "abnormal status 0x%X\n", status);
89
90 if (ap->ioaddr.bmdma_addr) {
91 /* get controller status; clear intr, err bits */
92 host_stat = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
93 iowrite8(host_stat | ATA_DMA_INTR | ATA_DMA_ERR,
94 ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
95
96 post_stat = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
97 }
98 if (ata_msg_intr(ap))
99 printk(KERN_INFO "%s: irq ack: host_stat 0x%X, new host_stat 0x%X, drv_stat 0x%X\n",
100 __FUNCTION__,
101 host_stat, post_stat, status);
102 return status;
103}
104
105u8 ata_dummy_irq_ack(struct ata_port *ap, unsigned int chk_drq) { return 0; }
106
107/** 67/**
108 * ata_tf_load - send taskfile registers to host controller 68 * ata_tf_load - send taskfile registers to host controller
109 * @ap: Port to which output is sent 69 * @ap: Port to which output is sent
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c
index 32a10c99c06f..9436c4963929 100644
--- a/drivers/ata/pata_ali.c
+++ b/drivers/ata/pata_ali.c
@@ -327,7 +327,6 @@ static struct ata_port_operations ali_early_port_ops = {
327 .irq_handler = ata_interrupt, 327 .irq_handler = ata_interrupt,
328 .irq_clear = ata_bmdma_irq_clear, 328 .irq_clear = ata_bmdma_irq_clear,
329 .irq_on = ata_irq_on, 329 .irq_on = ata_irq_on,
330 .irq_ack = ata_irq_ack,
331 330
332 .port_start = ata_port_start, 331 .port_start = ata_port_start,
333}; 332};
@@ -369,7 +368,6 @@ static struct ata_port_operations ali_20_port_ops = {
369 .irq_handler = ata_interrupt, 368 .irq_handler = ata_interrupt,
370 .irq_clear = ata_bmdma_irq_clear, 369 .irq_clear = ata_bmdma_irq_clear,
371 .irq_on = ata_irq_on, 370 .irq_on = ata_irq_on,
372 .irq_ack = ata_irq_ack,
373 371
374 .port_start = ata_port_start, 372 .port_start = ata_port_start,
375}; 373};
@@ -408,7 +406,6 @@ static struct ata_port_operations ali_c2_port_ops = {
408 .irq_handler = ata_interrupt, 406 .irq_handler = ata_interrupt,
409 .irq_clear = ata_bmdma_irq_clear, 407 .irq_clear = ata_bmdma_irq_clear,
410 .irq_on = ata_irq_on, 408 .irq_on = ata_irq_on,
411 .irq_ack = ata_irq_ack,
412 409
413 .port_start = ata_port_start, 410 .port_start = ata_port_start,
414}; 411};
@@ -446,7 +443,6 @@ static struct ata_port_operations ali_c5_port_ops = {
446 .irq_handler = ata_interrupt, 443 .irq_handler = ata_interrupt,
447 .irq_clear = ata_bmdma_irq_clear, 444 .irq_clear = ata_bmdma_irq_clear,
448 .irq_on = ata_irq_on, 445 .irq_on = ata_irq_on,
449 .irq_ack = ata_irq_ack,
450 446
451 .port_start = ata_port_start, 447 .port_start = ata_port_start,
452}; 448};
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c
index d0cebe16a8ee..46f829c838b3 100644
--- a/drivers/ata/pata_amd.c
+++ b/drivers/ata/pata_amd.c
@@ -358,7 +358,6 @@ static struct ata_port_operations amd33_port_ops = {
358 .irq_handler = ata_interrupt, 358 .irq_handler = ata_interrupt,
359 .irq_clear = ata_bmdma_irq_clear, 359 .irq_clear = ata_bmdma_irq_clear,
360 .irq_on = ata_irq_on, 360 .irq_on = ata_irq_on,
361 .irq_ack = ata_irq_ack,
362 361
363 .port_start = ata_port_start, 362 .port_start = ata_port_start,
364}; 363};
@@ -393,7 +392,6 @@ static struct ata_port_operations amd66_port_ops = {
393 .irq_handler = ata_interrupt, 392 .irq_handler = ata_interrupt,
394 .irq_clear = ata_bmdma_irq_clear, 393 .irq_clear = ata_bmdma_irq_clear,
395 .irq_on = ata_irq_on, 394 .irq_on = ata_irq_on,
396 .irq_ack = ata_irq_ack,
397 395
398 .port_start = ata_port_start, 396 .port_start = ata_port_start,
399}; 397};
@@ -428,7 +426,6 @@ static struct ata_port_operations amd100_port_ops = {
428 .irq_handler = ata_interrupt, 426 .irq_handler = ata_interrupt,
429 .irq_clear = ata_bmdma_irq_clear, 427 .irq_clear = ata_bmdma_irq_clear,
430 .irq_on = ata_irq_on, 428 .irq_on = ata_irq_on,
431 .irq_ack = ata_irq_ack,
432 429
433 .port_start = ata_port_start, 430 .port_start = ata_port_start,
434}; 431};
@@ -463,7 +460,6 @@ static struct ata_port_operations amd133_port_ops = {
463 .irq_handler = ata_interrupt, 460 .irq_handler = ata_interrupt,
464 .irq_clear = ata_bmdma_irq_clear, 461 .irq_clear = ata_bmdma_irq_clear,
465 .irq_on = ata_irq_on, 462 .irq_on = ata_irq_on,
466 .irq_ack = ata_irq_ack,
467 463
468 .port_start = ata_port_start, 464 .port_start = ata_port_start,
469}; 465};
@@ -498,7 +494,6 @@ static struct ata_port_operations nv100_port_ops = {
498 .irq_handler = ata_interrupt, 494 .irq_handler = ata_interrupt,
499 .irq_clear = ata_bmdma_irq_clear, 495 .irq_clear = ata_bmdma_irq_clear,
500 .irq_on = ata_irq_on, 496 .irq_on = ata_irq_on,
501 .irq_ack = ata_irq_ack,
502 497
503 .port_start = ata_port_start, 498 .port_start = ata_port_start,
504}; 499};
@@ -533,7 +528,6 @@ static struct ata_port_operations nv133_port_ops = {
533 .irq_handler = ata_interrupt, 528 .irq_handler = ata_interrupt,
534 .irq_clear = ata_bmdma_irq_clear, 529 .irq_clear = ata_bmdma_irq_clear,
535 .irq_on = ata_irq_on, 530 .irq_on = ata_irq_on,
536 .irq_ack = ata_irq_ack,
537 531
538 .port_start = ata_port_start, 532 .port_start = ata_port_start,
539}; 533};
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c
index 361f2fca7e54..8c864353596e 100644
--- a/drivers/ata/pata_artop.c
+++ b/drivers/ata/pata_artop.c
@@ -361,7 +361,6 @@ static const struct ata_port_operations artop6210_ops = {
361 .irq_handler = ata_interrupt, 361 .irq_handler = ata_interrupt,
362 .irq_clear = ata_bmdma_irq_clear, 362 .irq_clear = ata_bmdma_irq_clear,
363 .irq_on = ata_irq_on, 363 .irq_on = ata_irq_on,
364 .irq_ack = ata_irq_ack,
365 364
366 .port_start = ata_port_start, 365 .port_start = ata_port_start,
367}; 366};
@@ -394,7 +393,6 @@ static const struct ata_port_operations artop6260_ops = {
394 .irq_handler = ata_interrupt, 393 .irq_handler = ata_interrupt,
395 .irq_clear = ata_bmdma_irq_clear, 394 .irq_clear = ata_bmdma_irq_clear,
396 .irq_on = ata_irq_on, 395 .irq_on = ata_irq_on,
397 .irq_ack = ata_irq_ack,
398 396
399 .port_start = ata_port_start, 397 .port_start = ata_port_start,
400}; 398};
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c
index 656f4d0a5728..f2bfdeb44023 100644
--- a/drivers/ata/pata_atiixp.c
+++ b/drivers/ata/pata_atiixp.c
@@ -262,7 +262,6 @@ static struct ata_port_operations atiixp_port_ops = {
262 .irq_handler = ata_interrupt, 262 .irq_handler = ata_interrupt,
263 .irq_clear = ata_bmdma_irq_clear, 263 .irq_clear = ata_bmdma_irq_clear,
264 .irq_on = ata_irq_on, 264 .irq_on = ata_irq_on,
265 .irq_ack = ata_irq_ack,
266 265
267 .port_start = ata_port_start, 266 .port_start = ata_port_start,
268}; 267};
diff --git a/drivers/ata/pata_cmd640.c b/drivers/ata/pata_cmd640.c
index 0feb5ae8c486..a292ed97246d 100644
--- a/drivers/ata/pata_cmd640.c
+++ b/drivers/ata/pata_cmd640.c
@@ -213,7 +213,6 @@ static struct ata_port_operations cmd640_port_ops = {
213 .irq_handler = ata_interrupt, 213 .irq_handler = ata_interrupt,
214 .irq_clear = ata_bmdma_irq_clear, 214 .irq_clear = ata_bmdma_irq_clear,
215 .irq_on = ata_irq_on, 215 .irq_on = ata_irq_on,
216 .irq_ack = ata_irq_ack,
217 216
218 .port_start = cmd640_port_start, 217 .port_start = cmd640_port_start,
219}; 218};
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c
index 922902a1b4ae..d308c4644647 100644
--- a/drivers/ata/pata_cmd64x.c
+++ b/drivers/ata/pata_cmd64x.c
@@ -313,7 +313,6 @@ static struct ata_port_operations cmd64x_port_ops = {
313 .irq_handler = ata_interrupt, 313 .irq_handler = ata_interrupt,
314 .irq_clear = ata_bmdma_irq_clear, 314 .irq_clear = ata_bmdma_irq_clear,
315 .irq_on = ata_irq_on, 315 .irq_on = ata_irq_on,
316 .irq_ack = ata_irq_ack,
317 316
318 .port_start = ata_port_start, 317 .port_start = ata_port_start,
319}; 318};
@@ -348,7 +347,6 @@ static struct ata_port_operations cmd646r1_port_ops = {
348 .irq_handler = ata_interrupt, 347 .irq_handler = ata_interrupt,
349 .irq_clear = ata_bmdma_irq_clear, 348 .irq_clear = ata_bmdma_irq_clear,
350 .irq_on = ata_irq_on, 349 .irq_on = ata_irq_on,
351 .irq_ack = ata_irq_ack,
352 350
353 .port_start = ata_port_start, 351 .port_start = ata_port_start,
354}; 352};
@@ -383,7 +381,6 @@ static struct ata_port_operations cmd648_port_ops = {
383 .irq_handler = ata_interrupt, 381 .irq_handler = ata_interrupt,
384 .irq_clear = ata_bmdma_irq_clear, 382 .irq_clear = ata_bmdma_irq_clear,
385 .irq_on = ata_irq_on, 383 .irq_on = ata_irq_on,
386 .irq_ack = ata_irq_ack,
387 384
388 .port_start = ata_port_start, 385 .port_start = ata_port_start,
389}; 386};
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c
index e2459088cdcd..300dcff949e2 100644
--- a/drivers/ata/pata_cs5520.c
+++ b/drivers/ata/pata_cs5520.c
@@ -184,7 +184,6 @@ static struct ata_port_operations cs5520_port_ops = {
184 184
185 .irq_clear = ata_bmdma_irq_clear, 185 .irq_clear = ata_bmdma_irq_clear,
186 .irq_on = ata_irq_on, 186 .irq_on = ata_irq_on,
187 .irq_ack = ata_irq_ack,
188 187
189 .port_start = ata_port_start, 188 .port_start = ata_port_start,
190}; 189};
diff --git a/drivers/ata/pata_cs5530.c b/drivers/ata/pata_cs5530.c
index eaaea848b649..2b770072f392 100644
--- a/drivers/ata/pata_cs5530.c
+++ b/drivers/ata/pata_cs5530.c
@@ -209,7 +209,6 @@ static struct ata_port_operations cs5530_port_ops = {
209 .irq_handler = ata_interrupt, 209 .irq_handler = ata_interrupt,
210 .irq_clear = ata_bmdma_irq_clear, 210 .irq_clear = ata_bmdma_irq_clear,
211 .irq_on = ata_irq_on, 211 .irq_on = ata_irq_on,
212 .irq_ack = ata_irq_ack,
213 212
214 .port_start = ata_port_start, 213 .port_start = ata_port_start,
215}; 214};
diff --git a/drivers/ata/pata_cs5535.c b/drivers/ata/pata_cs5535.c
index 360b6f32e17e..94b1a9caf3cb 100644
--- a/drivers/ata/pata_cs5535.c
+++ b/drivers/ata/pata_cs5535.c
@@ -206,7 +206,6 @@ static struct ata_port_operations cs5535_port_ops = {
206 .irq_handler = ata_interrupt, 206 .irq_handler = ata_interrupt,
207 .irq_clear = ata_bmdma_irq_clear, 207 .irq_clear = ata_bmdma_irq_clear,
208 .irq_on = ata_irq_on, 208 .irq_on = ata_irq_on,
209 .irq_ack = ata_irq_ack,
210 209
211 .port_start = ata_port_start, 210 .port_start = ata_port_start,
212}; 211};
diff --git a/drivers/ata/pata_cypress.c b/drivers/ata/pata_cypress.c
index 6cbc8778bf4f..8c439a9bb5dd 100644
--- a/drivers/ata/pata_cypress.c
+++ b/drivers/ata/pata_cypress.c
@@ -158,7 +158,6 @@ static struct ata_port_operations cy82c693_port_ops = {
158 .irq_handler = ata_interrupt, 158 .irq_handler = ata_interrupt,
159 .irq_clear = ata_bmdma_irq_clear, 159 .irq_clear = ata_bmdma_irq_clear,
160 .irq_on = ata_irq_on, 160 .irq_on = ata_irq_on,
161 .irq_ack = ata_irq_ack,
162 161
163 .port_start = ata_port_start, 162 .port_start = ata_port_start,
164}; 163};
diff --git a/drivers/ata/pata_efar.c b/drivers/ata/pata_efar.c
index 9f6fae6e38bf..4d646ffb257b 100644
--- a/drivers/ata/pata_efar.c
+++ b/drivers/ata/pata_efar.c
@@ -279,7 +279,6 @@ static const struct ata_port_operations efar_ops = {
279 .irq_handler = ata_interrupt, 279 .irq_handler = ata_interrupt,
280 .irq_clear = ata_bmdma_irq_clear, 280 .irq_clear = ata_bmdma_irq_clear,
281 .irq_on = ata_irq_on, 281 .irq_on = ata_irq_on,
282 .irq_ack = ata_irq_ack,
283 282
284 .port_start = ata_port_start, 283 .port_start = ata_port_start,
285}; 284};
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c
index 6f7d34ad19ef..508d1cab52d1 100644
--- a/drivers/ata/pata_hpt366.c
+++ b/drivers/ata/pata_hpt366.c
@@ -342,7 +342,6 @@ static struct ata_port_operations hpt366_port_ops = {
342 .irq_handler = ata_interrupt, 342 .irq_handler = ata_interrupt,
343 .irq_clear = ata_bmdma_irq_clear, 343 .irq_clear = ata_bmdma_irq_clear,
344 .irq_on = ata_irq_on, 344 .irq_on = ata_irq_on,
345 .irq_ack = ata_irq_ack,
346 345
347 .port_start = ata_port_start, 346 .port_start = ata_port_start,
348}; 347};
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c
index 1a4d0ad68d18..896e6e31c67f 100644
--- a/drivers/ata/pata_hpt37x.c
+++ b/drivers/ata/pata_hpt37x.c
@@ -673,7 +673,6 @@ static struct ata_port_operations hpt370_port_ops = {
673 .irq_handler = ata_interrupt, 673 .irq_handler = ata_interrupt,
674 .irq_clear = ata_bmdma_irq_clear, 674 .irq_clear = ata_bmdma_irq_clear,
675 .irq_on = ata_irq_on, 675 .irq_on = ata_irq_on,
676 .irq_ack = ata_irq_ack,
677 676
678 .port_start = ata_port_start, 677 .port_start = ata_port_start,
679}; 678};
@@ -712,7 +711,6 @@ static struct ata_port_operations hpt370a_port_ops = {
712 .irq_handler = ata_interrupt, 711 .irq_handler = ata_interrupt,
713 .irq_clear = ata_bmdma_irq_clear, 712 .irq_clear = ata_bmdma_irq_clear,
714 .irq_on = ata_irq_on, 713 .irq_on = ata_irq_on,
715 .irq_ack = ata_irq_ack,
716 714
717 .port_start = ata_port_start, 715 .port_start = ata_port_start,
718}; 716};
@@ -752,7 +750,6 @@ static struct ata_port_operations hpt372_port_ops = {
752 .irq_handler = ata_interrupt, 750 .irq_handler = ata_interrupt,
753 .irq_clear = ata_bmdma_irq_clear, 751 .irq_clear = ata_bmdma_irq_clear,
754 .irq_on = ata_irq_on, 752 .irq_on = ata_irq_on,
755 .irq_ack = ata_irq_ack,
756 753
757 .port_start = ata_port_start, 754 .port_start = ata_port_start,
758}; 755};
@@ -792,7 +789,6 @@ static struct ata_port_operations hpt374_port_ops = {
792 .irq_handler = ata_interrupt, 789 .irq_handler = ata_interrupt,
793 .irq_clear = ata_bmdma_irq_clear, 790 .irq_clear = ata_bmdma_irq_clear,
794 .irq_on = ata_irq_on, 791 .irq_on = ata_irq_on,
795 .irq_ack = ata_irq_ack,
796 792
797 .port_start = ata_port_start, 793 .port_start = ata_port_start,
798}; 794};
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c
index 739a89180eb9..2b7f099ac785 100644
--- a/drivers/ata/pata_hpt3x2n.c
+++ b/drivers/ata/pata_hpt3x2n.c
@@ -391,7 +391,6 @@ static struct ata_port_operations hpt3x2n_port_ops = {
391 .irq_handler = ata_interrupt, 391 .irq_handler = ata_interrupt,
392 .irq_clear = ata_bmdma_irq_clear, 392 .irq_clear = ata_bmdma_irq_clear,
393 .irq_on = ata_irq_on, 393 .irq_on = ata_irq_on,
394 .irq_ack = ata_irq_ack,
395 394
396 .port_start = ata_port_start, 395 .port_start = ata_port_start,
397}; 396};
diff --git a/drivers/ata/pata_hpt3x3.c b/drivers/ata/pata_hpt3x3.c
index be0f05efac6d..a2f81f40d7ac 100644
--- a/drivers/ata/pata_hpt3x3.c
+++ b/drivers/ata/pata_hpt3x3.c
@@ -153,7 +153,6 @@ static struct ata_port_operations hpt3x3_port_ops = {
153 .irq_handler = ata_interrupt, 153 .irq_handler = ata_interrupt,
154 .irq_clear = ata_bmdma_irq_clear, 154 .irq_clear = ata_bmdma_irq_clear,
155 .irq_on = ata_irq_on, 155 .irq_on = ata_irq_on,
156 .irq_ack = ata_irq_ack,
157 156
158 .port_start = ata_port_start, 157 .port_start = ata_port_start,
159}; 158};
diff --git a/drivers/ata/pata_icside.c b/drivers/ata/pata_icside.c
index 64a711776c45..ffcccfc0b9d4 100644
--- a/drivers/ata/pata_icside.c
+++ b/drivers/ata/pata_icside.c
@@ -357,23 +357,6 @@ static void pata_icside_error_handler(struct ata_port *ap)
357 pata_icside_postreset); 357 pata_icside_postreset);
358} 358}
359 359
360static u8 pata_icside_irq_ack(struct ata_port *ap, unsigned int chk_drq)
361{
362 unsigned int bits = chk_drq ? ATA_BUSY | ATA_DRQ : ATA_BUSY;
363 u8 status;
364
365 status = ata_busy_wait(ap, bits, 1000);
366 if (status & bits)
367 if (ata_msg_err(ap))
368 printk(KERN_ERR "abnormal status 0x%X\n", status);
369
370 if (ata_msg_intr(ap))
371 printk(KERN_INFO "%s: irq ack: drv_stat 0x%X\n",
372 __FUNCTION__, status);
373
374 return status;
375}
376
377static struct ata_port_operations pata_icside_port_ops = { 360static struct ata_port_operations pata_icside_port_ops = {
378 .port_disable = ata_port_disable, 361 .port_disable = ata_port_disable,
379 362
@@ -403,7 +386,6 @@ static struct ata_port_operations pata_icside_port_ops = {
403 386
404 .irq_clear = ata_dummy_noret, 387 .irq_clear = ata_dummy_noret,
405 .irq_on = ata_irq_on, 388 .irq_on = ata_irq_on,
406 .irq_ack = pata_icside_irq_ack,
407 389
408 .port_start = pata_icside_port_start, 390 .port_start = pata_icside_port_start,
409 391
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c
index 9e553c54203a..b8d6d5c43537 100644
--- a/drivers/ata/pata_isapnp.c
+++ b/drivers/ata/pata_isapnp.c
@@ -58,7 +58,6 @@ static struct ata_port_operations isapnp_port_ops = {
58 58
59 .irq_clear = ata_bmdma_irq_clear, 59 .irq_clear = ata_bmdma_irq_clear,
60 .irq_on = ata_irq_on, 60 .irq_on = ata_irq_on,
61 .irq_ack = ata_irq_ack,
62 61
63 .port_start = ata_port_start, 62 .port_start = ata_port_start,
64}; 63};
diff --git a/drivers/ata/pata_it8213.c b/drivers/ata/pata_it8213.c
index 1daf1e19bdfc..8aae9d7171c1 100644
--- a/drivers/ata/pata_it8213.c
+++ b/drivers/ata/pata_it8213.c
@@ -289,7 +289,6 @@ static const struct ata_port_operations it8213_ops = {
289 .irq_handler = ata_interrupt, 289 .irq_handler = ata_interrupt,
290 .irq_clear = ata_bmdma_irq_clear, 290 .irq_clear = ata_bmdma_irq_clear,
291 .irq_on = ata_irq_on, 291 .irq_on = ata_irq_on,
292 .irq_ack = ata_irq_ack,
293 292
294 .port_start = ata_port_start, 293 .port_start = ata_port_start,
295}; 294};
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c
index f32d9b7ab496..0179b29c5156 100644
--- a/drivers/ata/pata_it821x.c
+++ b/drivers/ata/pata_it821x.c
@@ -650,7 +650,6 @@ static struct ata_port_operations it821x_smart_port_ops = {
650 .irq_handler = ata_interrupt, 650 .irq_handler = ata_interrupt,
651 .irq_clear = ata_bmdma_irq_clear, 651 .irq_clear = ata_bmdma_irq_clear,
652 .irq_on = ata_irq_on, 652 .irq_on = ata_irq_on,
653 .irq_ack = ata_irq_ack,
654 653
655 .port_start = it821x_port_start, 654 .port_start = it821x_port_start,
656}; 655};
@@ -687,7 +686,6 @@ static struct ata_port_operations it821x_passthru_port_ops = {
687 .irq_clear = ata_bmdma_irq_clear, 686 .irq_clear = ata_bmdma_irq_clear,
688 .irq_handler = ata_interrupt, 687 .irq_handler = ata_interrupt,
689 .irq_on = ata_irq_on, 688 .irq_on = ata_irq_on,
690 .irq_ack = ata_irq_ack,
691 689
692 .port_start = it821x_port_start, 690 .port_start = it821x_port_start,
693}; 691};
diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index 6bf1709508ab..ce1f9b17ad32 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -127,7 +127,6 @@ static struct ata_port_operations ixp4xx_port_ops = {
127 .irq_handler = ata_interrupt, 127 .irq_handler = ata_interrupt,
128 .irq_clear = ata_bmdma_irq_clear, 128 .irq_clear = ata_bmdma_irq_clear,
129 .irq_on = ata_irq_on, 129 .irq_on = ata_irq_on,
130 .irq_ack = ata_dummy_irq_ack,
131 130
132 .port_start = ata_port_start, 131 .port_start = ata_port_start,
133}; 132};
diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c
index 1619b86b74af..26f84063859d 100644
--- a/drivers/ata/pata_jmicron.c
+++ b/drivers/ata/pata_jmicron.c
@@ -168,7 +168,6 @@ static const struct ata_port_operations jmicron_ops = {
168 .irq_handler = ata_interrupt, 168 .irq_handler = ata_interrupt,
169 .irq_clear = ata_bmdma_irq_clear, 169 .irq_clear = ata_bmdma_irq_clear,
170 .irq_on = ata_irq_on, 170 .irq_on = ata_irq_on,
171 .irq_ack = ata_irq_ack,
172 171
173 /* Generic PATA PCI ATA helpers */ 172 /* Generic PATA PCI ATA helpers */
174 .port_start = ata_port_start, 173 .port_start = ata_port_start,
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index cfb2bc86a1d1..6529d34f0370 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -171,7 +171,6 @@ static struct ata_port_operations simple_port_ops = {
171 .irq_handler = ata_interrupt, 171 .irq_handler = ata_interrupt,
172 .irq_clear = ata_bmdma_irq_clear, 172 .irq_clear = ata_bmdma_irq_clear,
173 .irq_on = ata_irq_on, 173 .irq_on = ata_irq_on,
174 .irq_ack = ata_irq_ack,
175 174
176 .port_start = ata_port_start, 175 .port_start = ata_port_start,
177}; 176};
@@ -200,7 +199,6 @@ static struct ata_port_operations legacy_port_ops = {
200 .irq_handler = ata_interrupt, 199 .irq_handler = ata_interrupt,
201 .irq_clear = ata_bmdma_irq_clear, 200 .irq_clear = ata_bmdma_irq_clear,
202 .irq_on = ata_irq_on, 201 .irq_on = ata_irq_on,
203 .irq_ack = ata_irq_ack,
204 202
205 .port_start = ata_port_start, 203 .port_start = ata_port_start,
206}; 204};
@@ -316,7 +314,6 @@ static struct ata_port_operations pdc20230_port_ops = {
316 .irq_handler = ata_interrupt, 314 .irq_handler = ata_interrupt,
317 .irq_clear = ata_bmdma_irq_clear, 315 .irq_clear = ata_bmdma_irq_clear,
318 .irq_on = ata_irq_on, 316 .irq_on = ata_irq_on,
319 .irq_ack = ata_irq_ack,
320 317
321 .port_start = ata_port_start, 318 .port_start = ata_port_start,
322}; 319};
@@ -372,7 +369,6 @@ static struct ata_port_operations ht6560a_port_ops = {
372 .irq_handler = ata_interrupt, 369 .irq_handler = ata_interrupt,
373 .irq_clear = ata_bmdma_irq_clear, 370 .irq_clear = ata_bmdma_irq_clear,
374 .irq_on = ata_irq_on, 371 .irq_on = ata_irq_on,
375 .irq_ack = ata_irq_ack,
376 372
377 .port_start = ata_port_start, 373 .port_start = ata_port_start,
378}; 374};
@@ -439,7 +435,6 @@ static struct ata_port_operations ht6560b_port_ops = {
439 .irq_handler = ata_interrupt, 435 .irq_handler = ata_interrupt,
440 .irq_clear = ata_bmdma_irq_clear, 436 .irq_clear = ata_bmdma_irq_clear,
441 .irq_on = ata_irq_on, 437 .irq_on = ata_irq_on,
442 .irq_ack = ata_irq_ack,
443 438
444 .port_start = ata_port_start, 439 .port_start = ata_port_start,
445}; 440};
@@ -561,7 +556,6 @@ static struct ata_port_operations opti82c611a_port_ops = {
561 .irq_handler = ata_interrupt, 556 .irq_handler = ata_interrupt,
562 .irq_clear = ata_bmdma_irq_clear, 557 .irq_clear = ata_bmdma_irq_clear,
563 .irq_on = ata_irq_on, 558 .irq_on = ata_irq_on,
564 .irq_ack = ata_irq_ack,
565 559
566 .port_start = ata_port_start, 560 .port_start = ata_port_start,
567}; 561};
@@ -695,7 +689,6 @@ static struct ata_port_operations opti82c46x_port_ops = {
695 .irq_handler = ata_interrupt, 689 .irq_handler = ata_interrupt,
696 .irq_clear = ata_bmdma_irq_clear, 690 .irq_clear = ata_bmdma_irq_clear,
697 .irq_on = ata_irq_on, 691 .irq_on = ata_irq_on,
698 .irq_ack = ata_irq_ack,
699 692
700 .port_start = ata_port_start, 693 .port_start = ata_port_start,
701}; 694};
diff --git a/drivers/ata/pata_marvell.c b/drivers/ata/pata_marvell.c
index b4dd18f3fa5d..021d9d9218bd 100644
--- a/drivers/ata/pata_marvell.c
+++ b/drivers/ata/pata_marvell.c
@@ -139,7 +139,6 @@ static const struct ata_port_operations marvell_ops = {
139 .irq_handler = ata_interrupt, 139 .irq_handler = ata_interrupt,
140 .irq_clear = ata_bmdma_irq_clear, 140 .irq_clear = ata_bmdma_irq_clear,
141 .irq_on = ata_irq_on, 141 .irq_on = ata_irq_on,
142 .irq_ack = ata_irq_ack,
143 142
144 /* Generic PATA PCI ATA helpers */ 143 /* Generic PATA PCI ATA helpers */
145 .port_start = ata_port_start, 144 .port_start = ata_port_start,
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
index 099f4cdc4cd9..6e3fac2fedc4 100644
--- a/drivers/ata/pata_mpc52xx.c
+++ b/drivers/ata/pata_mpc52xx.c
@@ -299,7 +299,6 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
299 .data_xfer = ata_data_xfer, 299 .data_xfer = ata_data_xfer,
300 .irq_clear = ata_bmdma_irq_clear, 300 .irq_clear = ata_bmdma_irq_clear,
301 .irq_on = ata_irq_on, 301 .irq_on = ata_irq_on,
302 .irq_ack = ata_irq_ack,
303 .port_start = ata_port_start, 302 .port_start = ata_port_start,
304}; 303};
305 304
diff --git a/drivers/ata/pata_mpiix.c b/drivers/ata/pata_mpiix.c
index 36c964b9e7da..8a82fcd4fa31 100644
--- a/drivers/ata/pata_mpiix.c
+++ b/drivers/ata/pata_mpiix.c
@@ -190,7 +190,6 @@ static struct ata_port_operations mpiix_port_ops = {
190 190
191 .irq_clear = ata_bmdma_irq_clear, 191 .irq_clear = ata_bmdma_irq_clear,
192 .irq_on = ata_irq_on, 192 .irq_on = ata_irq_on,
193 .irq_ack = ata_irq_ack,
194 193
195 .port_start = ata_port_start, 194 .port_start = ata_port_start,
196}; 195};
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c
index 40eb574828bf..2d64c58482fa 100644
--- a/drivers/ata/pata_netcell.c
+++ b/drivers/ata/pata_netcell.c
@@ -68,7 +68,6 @@ static const struct ata_port_operations netcell_ops = {
68 .irq_handler = ata_interrupt, 68 .irq_handler = ata_interrupt,
69 .irq_clear = ata_bmdma_irq_clear, 69 .irq_clear = ata_bmdma_irq_clear,
70 .irq_on = ata_irq_on, 70 .irq_on = ata_irq_on,
71 .irq_ack = ata_irq_ack,
72 71
73 /* Generic PATA PCI ATA helpers */ 72 /* Generic PATA PCI ATA helpers */
74 .port_start = ata_port_start, 73 .port_start = ata_port_start,
diff --git a/drivers/ata/pata_ns87410.c b/drivers/ata/pata_ns87410.c
index 65a217727718..00a763c67f99 100644
--- a/drivers/ata/pata_ns87410.c
+++ b/drivers/ata/pata_ns87410.c
@@ -185,7 +185,6 @@ static struct ata_port_operations ns87410_port_ops = {
185 .irq_handler = ata_interrupt, 185 .irq_handler = ata_interrupt,
186 .irq_clear = ata_bmdma_irq_clear, 186 .irq_clear = ata_bmdma_irq_clear,
187 .irq_on = ata_irq_on, 187 .irq_on = ata_irq_on,
188 .irq_ack = ata_irq_ack,
189 188
190 .port_start = ata_port_start, 189 .port_start = ata_port_start,
191}; 190};
diff --git a/drivers/ata/pata_oldpiix.c b/drivers/ata/pata_oldpiix.c
index 5b2c86fe9fc2..851dae960018 100644
--- a/drivers/ata/pata_oldpiix.c
+++ b/drivers/ata/pata_oldpiix.c
@@ -266,7 +266,6 @@ static const struct ata_port_operations oldpiix_pata_ops = {
266 .irq_handler = ata_interrupt, 266 .irq_handler = ata_interrupt,
267 .irq_clear = ata_bmdma_irq_clear, 267 .irq_clear = ata_bmdma_irq_clear,
268 .irq_on = ata_irq_on, 268 .irq_on = ata_irq_on,
269 .irq_ack = ata_irq_ack,
270 269
271 .port_start = ata_port_start, 270 .port_start = ata_port_start,
272}; 271};
diff --git a/drivers/ata/pata_opti.c b/drivers/ata/pata_opti.c
index 5770c7755a62..0ab300cda9b7 100644
--- a/drivers/ata/pata_opti.c
+++ b/drivers/ata/pata_opti.c
@@ -210,7 +210,6 @@ static struct ata_port_operations opti_port_ops = {
210 .irq_handler = ata_interrupt, 210 .irq_handler = ata_interrupt,
211 .irq_clear = ata_bmdma_irq_clear, 211 .irq_clear = ata_bmdma_irq_clear,
212 .irq_on = ata_irq_on, 212 .irq_on = ata_irq_on,
213 .irq_ack = ata_irq_ack,
214 213
215 .port_start = ata_port_start, 214 .port_start = ata_port_start,
216}; 215};
diff --git a/drivers/ata/pata_optidma.c b/drivers/ata/pata_optidma.c
index 09ef725afd90..51c49283fb39 100644
--- a/drivers/ata/pata_optidma.c
+++ b/drivers/ata/pata_optidma.c
@@ -398,7 +398,6 @@ static struct ata_port_operations optidma_port_ops = {
398 .irq_handler = ata_interrupt, 398 .irq_handler = ata_interrupt,
399 .irq_clear = ata_bmdma_irq_clear, 399 .irq_clear = ata_bmdma_irq_clear,
400 .irq_on = ata_irq_on, 400 .irq_on = ata_irq_on,
401 .irq_ack = ata_irq_ack,
402 401
403 .port_start = ata_port_start, 402 .port_start = ata_port_start,
404}; 403};
@@ -434,7 +433,6 @@ static struct ata_port_operations optiplus_port_ops = {
434 .irq_handler = ata_interrupt, 433 .irq_handler = ata_interrupt,
435 .irq_clear = ata_bmdma_irq_clear, 434 .irq_clear = ata_bmdma_irq_clear,
436 .irq_on = ata_irq_on, 435 .irq_on = ata_irq_on,
437 .irq_ack = ata_irq_ack,
438 436
439 .port_start = ata_port_start, 437 .port_start = ata_port_start,
440}; 438};
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c
index 9bfe12ac851a..f2167729c3df 100644
--- a/drivers/ata/pata_pcmcia.c
+++ b/drivers/ata/pata_pcmcia.c
@@ -127,7 +127,6 @@ static struct ata_port_operations pcmcia_port_ops = {
127 127
128 .irq_clear = ata_bmdma_irq_clear, 128 .irq_clear = ata_bmdma_irq_clear,
129 .irq_on = ata_irq_on, 129 .irq_on = ata_irq_on,
130 .irq_ack = ata_irq_ack,
131 130
132 .port_start = ata_sff_port_start, 131 .port_start = ata_sff_port_start,
133}; 132};
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c
index db069d7515bc..7c6df320c833 100644
--- a/drivers/ata/pata_pdc2027x.c
+++ b/drivers/ata/pata_pdc2027x.c
@@ -173,7 +173,6 @@ static struct ata_port_operations pdc2027x_pata100_ops = {
173 173
174 .irq_clear = ata_bmdma_irq_clear, 174 .irq_clear = ata_bmdma_irq_clear,
175 .irq_on = ata_irq_on, 175 .irq_on = ata_irq_on,
176 .irq_ack = ata_irq_ack,
177 176
178 .port_start = ata_port_start, 177 .port_start = ata_port_start,
179}; 178};
@@ -208,7 +207,6 @@ static struct ata_port_operations pdc2027x_pata133_ops = {
208 207
209 .irq_clear = ata_bmdma_irq_clear, 208 .irq_clear = ata_bmdma_irq_clear,
210 .irq_on = ata_irq_on, 209 .irq_on = ata_irq_on,
211 .irq_ack = ata_irq_ack,
212 210
213 .port_start = ata_port_start, 211 .port_start = ata_port_start,
214}; 212};
diff --git a/drivers/ata/pata_pdc202xx_old.c b/drivers/ata/pata_pdc202xx_old.c
index 92447bed5e77..b03b33872457 100644
--- a/drivers/ata/pata_pdc202xx_old.c
+++ b/drivers/ata/pata_pdc202xx_old.c
@@ -275,7 +275,6 @@ static struct ata_port_operations pdc2024x_port_ops = {
275 .irq_handler = ata_interrupt, 275 .irq_handler = ata_interrupt,
276 .irq_clear = ata_bmdma_irq_clear, 276 .irq_clear = ata_bmdma_irq_clear,
277 .irq_on = ata_irq_on, 277 .irq_on = ata_irq_on,
278 .irq_ack = ata_irq_ack,
279 278
280 .port_start = ata_port_start, 279 .port_start = ata_port_start,
281}; 280};
@@ -310,7 +309,6 @@ static struct ata_port_operations pdc2026x_port_ops = {
310 .irq_handler = ata_interrupt, 309 .irq_handler = ata_interrupt,
311 .irq_clear = ata_bmdma_irq_clear, 310 .irq_clear = ata_bmdma_irq_clear,
312 .irq_on = ata_irq_on, 311 .irq_on = ata_irq_on,
313 .irq_ack = ata_irq_ack,
314 312
315 .port_start = ata_port_start, 313 .port_start = ata_port_start,
316}; 314};
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
index 9dc628931e99..a616616706da 100644
--- a/drivers/ata/pata_platform.c
+++ b/drivers/ata/pata_platform.c
@@ -89,7 +89,6 @@ static struct ata_port_operations pata_platform_port_ops = {
89 89
90 .irq_clear = ata_bmdma_irq_clear, 90 .irq_clear = ata_bmdma_irq_clear,
91 .irq_on = ata_irq_on, 91 .irq_on = ata_irq_on,
92 .irq_ack = ata_irq_ack,
93 92
94 .port_start = ata_dummy_ret0, 93 .port_start = ata_dummy_ret0,
95}; 94};
diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.c
index ec2206e820ac..ade5a4421663 100644
--- a/drivers/ata/pata_qdi.c
+++ b/drivers/ata/pata_qdi.c
@@ -192,7 +192,6 @@ static struct ata_port_operations qdi6500_port_ops = {
192 192
193 .irq_clear = ata_bmdma_irq_clear, 193 .irq_clear = ata_bmdma_irq_clear,
194 .irq_on = ata_irq_on, 194 .irq_on = ata_irq_on,
195 .irq_ack = ata_irq_ack,
196 195
197 .port_start = ata_port_start, 196 .port_start = ata_port_start,
198}; 197};
@@ -220,7 +219,6 @@ static struct ata_port_operations qdi6580_port_ops = {
220 219
221 .irq_clear = ata_bmdma_irq_clear, 220 .irq_clear = ata_bmdma_irq_clear,
222 .irq_on = ata_irq_on, 221 .irq_on = ata_irq_on,
223 .irq_ack = ata_irq_ack,
224 222
225 .port_start = ata_port_start, 223 .port_start = ata_port_start,
226}; 224};
diff --git a/drivers/ata/pata_radisys.c b/drivers/ata/pata_radisys.c
index 7d1aabed422d..66b9a341931b 100644
--- a/drivers/ata/pata_radisys.c
+++ b/drivers/ata/pata_radisys.c
@@ -231,7 +231,6 @@ static const struct ata_port_operations radisys_pata_ops = {
231 .irq_handler = ata_interrupt, 231 .irq_handler = ata_interrupt,
232 .irq_clear = ata_bmdma_irq_clear, 232 .irq_clear = ata_bmdma_irq_clear,
233 .irq_on = ata_irq_on, 233 .irq_on = ata_irq_on,
234 .irq_ack = ata_irq_ack,
235 234
236 .port_start = ata_port_start, 235 .port_start = ata_port_start,
237}; 236};
diff --git a/drivers/ata/pata_rz1000.c b/drivers/ata/pata_rz1000.c
index de3698cf3b8c..98784647c7e8 100644
--- a/drivers/ata/pata_rz1000.c
+++ b/drivers/ata/pata_rz1000.c
@@ -99,7 +99,6 @@ static struct ata_port_operations rz1000_port_ops = {
99 .irq_handler = ata_interrupt, 99 .irq_handler = ata_interrupt,
100 .irq_clear = ata_bmdma_irq_clear, 100 .irq_clear = ata_bmdma_irq_clear,
101 .irq_on = ata_irq_on, 101 .irq_on = ata_irq_on,
102 .irq_ack = ata_irq_ack,
103 102
104 .port_start = ata_port_start, 103 .port_start = ata_port_start,
105}; 104};
diff --git a/drivers/ata/pata_sc1200.c b/drivers/ata/pata_sc1200.c
index 5edf67b1f3bf..61edff4a5c6e 100644
--- a/drivers/ata/pata_sc1200.c
+++ b/drivers/ata/pata_sc1200.c
@@ -227,7 +227,6 @@ static struct ata_port_operations sc1200_port_ops = {
227 .irq_handler = ata_interrupt, 227 .irq_handler = ata_interrupt,
228 .irq_clear = ata_bmdma_irq_clear, 228 .irq_clear = ata_bmdma_irq_clear,
229 .irq_on = ata_irq_on, 229 .irq_on = ata_irq_on,
230 .irq_ack = ata_irq_ack,
231 230
232 .port_start = ata_port_start, 231 .port_start = ata_port_start,
233}; 232};
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c
index 63fe99a10cd1..95f04b81352f 100644
--- a/drivers/ata/pata_scc.c
+++ b/drivers/ata/pata_scc.c
@@ -839,38 +839,6 @@ static u8 scc_irq_on (struct ata_port *ap)
839} 839}
840 840
841/** 841/**
842 * scc_irq_ack - Acknowledge a device interrupt.
843 * @ap: Port on which interrupts are enabled.
844 *
845 * Note: Original code is ata_irq_ack().
846 */
847
848static u8 scc_irq_ack (struct ata_port *ap, unsigned int chk_drq)
849{
850 unsigned int bits = chk_drq ? ATA_BUSY | ATA_DRQ : ATA_BUSY;
851 u8 host_stat, post_stat, status;
852
853 status = ata_busy_wait(ap, bits, 1000);
854 if (status & bits)
855 if (ata_msg_err(ap))
856 printk(KERN_ERR "abnormal status 0x%X\n", status);
857
858 /* get controller status; clear intr, err bits */
859 host_stat = in_be32(ap->ioaddr.bmdma_addr + SCC_DMA_STATUS);
860 out_be32(ap->ioaddr.bmdma_addr + SCC_DMA_STATUS,
861 host_stat | ATA_DMA_INTR | ATA_DMA_ERR);
862
863 post_stat = in_be32(ap->ioaddr.bmdma_addr + SCC_DMA_STATUS);
864
865 if (ata_msg_intr(ap))
866 printk(KERN_INFO "%s: irq ack: host_stat 0x%X, new host_stat 0x%X, drv_stat 0x%X\n",
867 __FUNCTION__,
868 host_stat, post_stat, status);
869
870 return status;
871}
872
873/**
874 * scc_bmdma_freeze - Freeze BMDMA controller port 842 * scc_bmdma_freeze - Freeze BMDMA controller port
875 * @ap: port to freeze 843 * @ap: port to freeze
876 * 844 *
@@ -1047,7 +1015,6 @@ static const struct ata_port_operations scc_pata_ops = {
1047 1015
1048 .irq_clear = scc_bmdma_irq_clear, 1016 .irq_clear = scc_bmdma_irq_clear,
1049 .irq_on = scc_irq_on, 1017 .irq_on = scc_irq_on,
1050 .irq_ack = scc_irq_ack,
1051 1018
1052 .port_start = scc_port_start, 1019 .port_start = scc_port_start,
1053 .port_stop = scc_port_stop, 1020 .port_stop = scc_port_stop,
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c
index 0faf99c8f13e..c87cd67f4152 100644
--- a/drivers/ata/pata_serverworks.c
+++ b/drivers/ata/pata_serverworks.c
@@ -348,7 +348,6 @@ static struct ata_port_operations serverworks_osb4_port_ops = {
348 .irq_handler = ata_interrupt, 348 .irq_handler = ata_interrupt,
349 .irq_clear = ata_bmdma_irq_clear, 349 .irq_clear = ata_bmdma_irq_clear,
350 .irq_on = ata_irq_on, 350 .irq_on = ata_irq_on,
351 .irq_ack = ata_irq_ack,
352 351
353 .port_start = ata_port_start, 352 .port_start = ata_port_start,
354}; 353};
@@ -384,7 +383,6 @@ static struct ata_port_operations serverworks_csb_port_ops = {
384 .irq_handler = ata_interrupt, 383 .irq_handler = ata_interrupt,
385 .irq_clear = ata_bmdma_irq_clear, 384 .irq_clear = ata_bmdma_irq_clear,
386 .irq_on = ata_irq_on, 385 .irq_on = ata_irq_on,
387 .irq_ack = ata_irq_ack,
388 386
389 .port_start = ata_port_start, 387 .port_start = ata_port_start,
390}; 388};
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c
index 45515a22d856..c5abf6616543 100644
--- a/drivers/ata/pata_sil680.c
+++ b/drivers/ata/pata_sil680.c
@@ -267,7 +267,6 @@ static struct ata_port_operations sil680_port_ops = {
267 .irq_handler = ata_interrupt, 267 .irq_handler = ata_interrupt,
268 .irq_clear = ata_bmdma_irq_clear, 268 .irq_clear = ata_bmdma_irq_clear,
269 .irq_on = ata_irq_on, 269 .irq_on = ata_irq_on,
270 .irq_ack = ata_irq_ack,
271 270
272 .port_start = ata_port_start, 271 .port_start = ata_port_start,
273}; 272};
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c
index b72227676f00..72850667d371 100644
--- a/drivers/ata/pata_sis.c
+++ b/drivers/ata/pata_sis.c
@@ -559,7 +559,6 @@ static const struct ata_port_operations sis_133_ops = {
559 .irq_handler = ata_interrupt, 559 .irq_handler = ata_interrupt,
560 .irq_clear = ata_bmdma_irq_clear, 560 .irq_clear = ata_bmdma_irq_clear,
561 .irq_on = ata_irq_on, 561 .irq_on = ata_irq_on,
562 .irq_ack = ata_irq_ack,
563 562
564 .port_start = ata_port_start, 563 .port_start = ata_port_start,
565}; 564};
@@ -593,7 +592,6 @@ static const struct ata_port_operations sis_133_for_sata_ops = {
593 .irq_handler = ata_interrupt, 592 .irq_handler = ata_interrupt,
594 .irq_clear = ata_bmdma_irq_clear, 593 .irq_clear = ata_bmdma_irq_clear,
595 .irq_on = ata_irq_on, 594 .irq_on = ata_irq_on,
596 .irq_ack = ata_irq_ack,
597 595
598 .port_start = ata_port_start, 596 .port_start = ata_port_start,
599}; 597};
@@ -627,7 +625,6 @@ static const struct ata_port_operations sis_133_early_ops = {
627 .irq_handler = ata_interrupt, 625 .irq_handler = ata_interrupt,
628 .irq_clear = ata_bmdma_irq_clear, 626 .irq_clear = ata_bmdma_irq_clear,
629 .irq_on = ata_irq_on, 627 .irq_on = ata_irq_on,
630 .irq_ack = ata_irq_ack,
631 628
632 .port_start = ata_port_start, 629 .port_start = ata_port_start,
633}; 630};
@@ -661,7 +658,6 @@ static const struct ata_port_operations sis_100_ops = {
661 .irq_handler = ata_interrupt, 658 .irq_handler = ata_interrupt,
662 .irq_clear = ata_bmdma_irq_clear, 659 .irq_clear = ata_bmdma_irq_clear,
663 .irq_on = ata_irq_on, 660 .irq_on = ata_irq_on,
664 .irq_ack = ata_irq_ack,
665 661
666 .port_start = ata_port_start, 662 .port_start = ata_port_start,
667}; 663};
@@ -695,7 +691,6 @@ static const struct ata_port_operations sis_66_ops = {
695 .irq_handler = ata_interrupt, 691 .irq_handler = ata_interrupt,
696 .irq_clear = ata_bmdma_irq_clear, 692 .irq_clear = ata_bmdma_irq_clear,
697 .irq_on = ata_irq_on, 693 .irq_on = ata_irq_on,
698 .irq_ack = ata_irq_ack,
699 694
700 .port_start = ata_port_start, 695 .port_start = ata_port_start,
701}; 696};
@@ -729,7 +724,6 @@ static const struct ata_port_operations sis_old_ops = {
729 .irq_handler = ata_interrupt, 724 .irq_handler = ata_interrupt,
730 .irq_clear = ata_bmdma_irq_clear, 725 .irq_clear = ata_bmdma_irq_clear,
731 .irq_on = ata_irq_on, 726 .irq_on = ata_irq_on,
732 .irq_ack = ata_irq_ack,
733 727
734 .port_start = ata_port_start, 728 .port_start = ata_port_start,
735}; 729};
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c
index 375c3705dc43..1c50c191e4bc 100644
--- a/drivers/ata/pata_sl82c105.c
+++ b/drivers/ata/pata_sl82c105.c
@@ -254,7 +254,6 @@ static struct ata_port_operations sl82c105_port_ops = {
254 .irq_handler = ata_interrupt, 254 .irq_handler = ata_interrupt,
255 .irq_clear = ata_bmdma_irq_clear, 255 .irq_clear = ata_bmdma_irq_clear,
256 .irq_on = ata_irq_on, 256 .irq_on = ata_irq_on,
257 .irq_ack = ata_irq_ack,
258 257
259 .port_start = ata_port_start, 258 .port_start = ata_port_start,
260}; 259};
diff --git a/drivers/ata/pata_triflex.c b/drivers/ata/pata_triflex.c
index bc4b6f6be963..2a55eed45ad8 100644
--- a/drivers/ata/pata_triflex.c
+++ b/drivers/ata/pata_triflex.c
@@ -227,7 +227,6 @@ static struct ata_port_operations triflex_port_ops = {
227 .irq_handler = ata_interrupt, 227 .irq_handler = ata_interrupt,
228 .irq_clear = ata_bmdma_irq_clear, 228 .irq_clear = ata_bmdma_irq_clear,
229 .irq_on = ata_irq_on, 229 .irq_on = ata_irq_on,
230 .irq_ack = ata_irq_ack,
231 230
232 .port_start = ata_port_start, 231 .port_start = ata_port_start,
233}; 232};
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index b612808a319e..4ddcae8b8c96 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -375,7 +375,6 @@ static struct ata_port_operations via_port_ops = {
375 .irq_handler = ata_interrupt, 375 .irq_handler = ata_interrupt,
376 .irq_clear = ata_bmdma_irq_clear, 376 .irq_clear = ata_bmdma_irq_clear,
377 .irq_on = ata_irq_on, 377 .irq_on = ata_irq_on,
378 .irq_ack = ata_irq_ack,
379 378
380 .port_start = ata_port_start, 379 .port_start = ata_port_start,
381}; 380};
@@ -411,7 +410,6 @@ static struct ata_port_operations via_port_ops_noirq = {
411 .irq_handler = ata_interrupt, 410 .irq_handler = ata_interrupt,
412 .irq_clear = ata_bmdma_irq_clear, 411 .irq_clear = ata_bmdma_irq_clear,
413 .irq_on = ata_irq_on, 412 .irq_on = ata_irq_on,
414 .irq_ack = ata_irq_ack,
415 413
416 .port_start = ata_port_start, 414 .port_start = ata_port_start,
417}; 415};
diff --git a/drivers/ata/pata_winbond.c b/drivers/ata/pata_winbond.c
index c37570330073..c1647da55543 100644
--- a/drivers/ata/pata_winbond.c
+++ b/drivers/ata/pata_winbond.c
@@ -160,7 +160,6 @@ static struct ata_port_operations winbond_port_ops = {
160 160
161 .irq_clear = ata_bmdma_irq_clear, 161 .irq_clear = ata_bmdma_irq_clear,
162 .irq_on = ata_irq_on, 162 .irq_on = ata_irq_on,
163 .irq_ack = ata_irq_ack,
164 163
165 .port_start = ata_port_start, 164 .port_start = ata_port_start,
166}; 165};
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c
index 304c19b9b0f2..7dd7361289c4 100644
--- a/drivers/ata/pdc_adma.c
+++ b/drivers/ata/pdc_adma.c
@@ -177,7 +177,6 @@ static const struct ata_port_operations adma_ata_ops = {
177 .error_handler = adma_error_handler, 177 .error_handler = adma_error_handler,
178 .irq_clear = adma_irq_clear, 178 .irq_clear = adma_irq_clear,
179 .irq_on = ata_irq_on, 179 .irq_on = ata_irq_on,
180 .irq_ack = ata_irq_ack,
181 .port_start = adma_port_start, 180 .port_start = adma_port_start,
182 .port_stop = adma_port_stop, 181 .port_stop = adma_port_stop,
183 .host_stop = adma_host_stop, 182 .host_stop = adma_host_stop,
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c
index 95caba0f910e..d6a3e286c79d 100644
--- a/drivers/ata/sata_inic162x.c
+++ b/drivers/ata/sata_inic162x.c
@@ -569,7 +569,6 @@ static struct ata_port_operations inic_port_ops = {
569 569
570 .irq_clear = inic_irq_clear, 570 .irq_clear = inic_irq_clear,
571 .irq_on = ata_irq_on, 571 .irq_on = ata_irq_on,
572 .irq_ack = ata_irq_ack,
573 572
574 .qc_prep = ata_qc_prep, 573 .qc_prep = ata_qc_prep,
575 .qc_issue = inic_qc_issue, 574 .qc_issue = inic_qc_issue,
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 56784ce10544..393fc655f8c1 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -499,7 +499,6 @@ static const struct ata_port_operations mv5_ops = {
499 499
500 .irq_clear = mv_irq_clear, 500 .irq_clear = mv_irq_clear,
501 .irq_on = ata_irq_on, 501 .irq_on = ata_irq_on,
502 .irq_ack = ata_irq_ack,
503 502
504 .error_handler = mv_error_handler, 503 .error_handler = mv_error_handler,
505 .post_internal_cmd = mv_post_int_cmd, 504 .post_internal_cmd = mv_post_int_cmd,
@@ -530,7 +529,6 @@ static const struct ata_port_operations mv6_ops = {
530 529
531 .irq_clear = mv_irq_clear, 530 .irq_clear = mv_irq_clear,
532 .irq_on = ata_irq_on, 531 .irq_on = ata_irq_on,
533 .irq_ack = ata_irq_ack,
534 532
535 .error_handler = mv_error_handler, 533 .error_handler = mv_error_handler,
536 .post_internal_cmd = mv_post_int_cmd, 534 .post_internal_cmd = mv_post_int_cmd,
@@ -561,7 +559,6 @@ static const struct ata_port_operations mv_iie_ops = {
561 559
562 .irq_clear = mv_irq_clear, 560 .irq_clear = mv_irq_clear,
563 .irq_on = ata_irq_on, 561 .irq_on = ata_irq_on,
564 .irq_ack = ata_irq_ack,
565 562
566 .error_handler = mv_error_handler, 563 .error_handler = mv_error_handler,
567 .post_internal_cmd = mv_post_int_cmd, 564 .post_internal_cmd = mv_post_int_cmd,
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 884d9f05e6c6..88ecca6343ea 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -359,7 +359,6 @@ static const struct ata_port_operations nv_generic_ops = {
359 .data_xfer = ata_data_xfer, 359 .data_xfer = ata_data_xfer,
360 .irq_clear = ata_bmdma_irq_clear, 360 .irq_clear = ata_bmdma_irq_clear,
361 .irq_on = ata_irq_on, 361 .irq_on = ata_irq_on,
362 .irq_ack = ata_irq_ack,
363 .scr_read = nv_scr_read, 362 .scr_read = nv_scr_read,
364 .scr_write = nv_scr_write, 363 .scr_write = nv_scr_write,
365 .port_start = ata_port_start, 364 .port_start = ata_port_start,
@@ -385,7 +384,6 @@ static const struct ata_port_operations nv_nf2_ops = {
385 .data_xfer = ata_data_xfer, 384 .data_xfer = ata_data_xfer,
386 .irq_clear = ata_bmdma_irq_clear, 385 .irq_clear = ata_bmdma_irq_clear,
387 .irq_on = ata_irq_on, 386 .irq_on = ata_irq_on,
388 .irq_ack = ata_irq_ack,
389 .scr_read = nv_scr_read, 387 .scr_read = nv_scr_read,
390 .scr_write = nv_scr_write, 388 .scr_write = nv_scr_write,
391 .port_start = ata_port_start, 389 .port_start = ata_port_start,
@@ -411,7 +409,6 @@ static const struct ata_port_operations nv_ck804_ops = {
411 .data_xfer = ata_data_xfer, 409 .data_xfer = ata_data_xfer,
412 .irq_clear = ata_bmdma_irq_clear, 410 .irq_clear = ata_bmdma_irq_clear,
413 .irq_on = ata_irq_on, 411 .irq_on = ata_irq_on,
414 .irq_ack = ata_irq_ack,
415 .scr_read = nv_scr_read, 412 .scr_read = nv_scr_read,
416 .scr_write = nv_scr_write, 413 .scr_write = nv_scr_write,
417 .port_start = ata_port_start, 414 .port_start = ata_port_start,
@@ -439,7 +436,6 @@ static const struct ata_port_operations nv_adma_ops = {
439 .data_xfer = ata_data_xfer, 436 .data_xfer = ata_data_xfer,
440 .irq_clear = nv_adma_irq_clear, 437 .irq_clear = nv_adma_irq_clear,
441 .irq_on = ata_irq_on, 438 .irq_on = ata_irq_on,
442 .irq_ack = ata_irq_ack,
443 .scr_read = nv_scr_read, 439 .scr_read = nv_scr_read,
444 .scr_write = nv_scr_write, 440 .scr_write = nv_scr_write,
445 .port_start = nv_adma_port_start, 441 .port_start = nv_adma_port_start,
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index c7238ce83541..37d737b442b5 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -185,7 +185,6 @@ static const struct ata_port_operations pdc_sata_ops = {
185 .data_xfer = ata_data_xfer, 185 .data_xfer = ata_data_xfer,
186 .irq_clear = pdc_irq_clear, 186 .irq_clear = pdc_irq_clear,
187 .irq_on = ata_irq_on, 187 .irq_on = ata_irq_on,
188 .irq_ack = ata_irq_ack,
189 188
190 .scr_read = pdc_sata_scr_read, 189 .scr_read = pdc_sata_scr_read,
191 .scr_write = pdc_sata_scr_write, 190 .scr_write = pdc_sata_scr_write,
@@ -212,7 +211,6 @@ static const struct ata_port_operations pdc_old_sata_ops = {
212 .data_xfer = ata_data_xfer, 211 .data_xfer = ata_data_xfer,
213 .irq_clear = pdc_irq_clear, 212 .irq_clear = pdc_irq_clear,
214 .irq_on = ata_irq_on, 213 .irq_on = ata_irq_on,
215 .irq_ack = ata_irq_ack,
216 214
217 .scr_read = pdc_sata_scr_read, 215 .scr_read = pdc_sata_scr_read,
218 .scr_write = pdc_sata_scr_write, 216 .scr_write = pdc_sata_scr_write,
@@ -238,7 +236,6 @@ static const struct ata_port_operations pdc_pata_ops = {
238 .data_xfer = ata_data_xfer, 236 .data_xfer = ata_data_xfer,
239 .irq_clear = pdc_irq_clear, 237 .irq_clear = pdc_irq_clear,
240 .irq_on = ata_irq_on, 238 .irq_on = ata_irq_on,
241 .irq_ack = ata_irq_ack,
242 239
243 .port_start = pdc_common_port_start, 240 .port_start = pdc_common_port_start,
244}; 241};
diff --git a/drivers/ata/sata_qstor.c b/drivers/ata/sata_qstor.c
index ef1ad69c26ed..5a60ab72ecb6 100644
--- a/drivers/ata/sata_qstor.c
+++ b/drivers/ata/sata_qstor.c
@@ -159,7 +159,6 @@ static const struct ata_port_operations qs_ata_ops = {
159 .eng_timeout = qs_eng_timeout, 159 .eng_timeout = qs_eng_timeout,
160 .irq_clear = qs_irq_clear, 160 .irq_clear = qs_irq_clear,
161 .irq_on = ata_irq_on, 161 .irq_on = ata_irq_on,
162 .irq_ack = ata_irq_ack,
163 .scr_read = qs_scr_read, 162 .scr_read = qs_scr_read,
164 .scr_write = qs_scr_write, 163 .scr_write = qs_scr_write,
165 .port_start = qs_port_start, 164 .port_start = qs_port_start,
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index 802d679dc994..1930e7cf1438 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -207,7 +207,6 @@ static const struct ata_port_operations sil_ops = {
207 .post_internal_cmd = ata_bmdma_post_internal_cmd, 207 .post_internal_cmd = ata_bmdma_post_internal_cmd,
208 .irq_clear = ata_bmdma_irq_clear, 208 .irq_clear = ata_bmdma_irq_clear,
209 .irq_on = ata_irq_on, 209 .irq_on = ata_irq_on,
210 .irq_ack = ata_irq_ack,
211 .scr_read = sil_scr_read, 210 .scr_read = sil_scr_read,
212 .scr_write = sil_scr_write, 211 .scr_write = sil_scr_write,
213 .port_start = ata_port_start, 212 .port_start = ata_port_start,
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index e2cccc7f4358..961b3f201a38 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -398,8 +398,6 @@ static const struct ata_port_operations sil24_ops = {
398 .qc_issue = sil24_qc_issue, 398 .qc_issue = sil24_qc_issue,
399 399
400 .irq_clear = sil24_irq_clear, 400 .irq_clear = sil24_irq_clear,
401 .irq_on = ata_dummy_irq_on,
402 .irq_ack = ata_dummy_irq_ack,
403 401
404 .scr_read = sil24_scr_read, 402 .scr_read = sil24_scr_read,
405 .scr_write = sil24_scr_write, 403 .scr_write = sil24_scr_write,
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
index 41c1d6e8f1fe..691017eddbb1 100644
--- a/drivers/ata/sata_sis.c
+++ b/drivers/ata/sata_sis.c
@@ -123,7 +123,6 @@ static const struct ata_port_operations sis_ops = {
123 .post_internal_cmd = ata_bmdma_post_internal_cmd, 123 .post_internal_cmd = ata_bmdma_post_internal_cmd,
124 .irq_clear = ata_bmdma_irq_clear, 124 .irq_clear = ata_bmdma_irq_clear,
125 .irq_on = ata_irq_on, 125 .irq_on = ata_irq_on,
126 .irq_ack = ata_irq_ack,
127 .scr_read = sis_scr_read, 126 .scr_read = sis_scr_read,
128 .scr_write = sis_scr_write, 127 .scr_write = sis_scr_write,
129 .port_start = ata_port_start, 128 .port_start = ata_port_start,
diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c
index d9678e7bc3a9..006a720da406 100644
--- a/drivers/ata/sata_svw.c
+++ b/drivers/ata/sata_svw.c
@@ -349,7 +349,6 @@ static const struct ata_port_operations k2_sata_ops = {
349 .post_internal_cmd = ata_bmdma_post_internal_cmd, 349 .post_internal_cmd = ata_bmdma_post_internal_cmd,
350 .irq_clear = ata_bmdma_irq_clear, 350 .irq_clear = ata_bmdma_irq_clear,
351 .irq_on = ata_irq_on, 351 .irq_on = ata_irq_on,
352 .irq_ack = ata_irq_ack,
353 .scr_read = k2_sata_scr_read, 352 .scr_read = k2_sata_scr_read,
354 .scr_write = k2_sata_scr_write, 353 .scr_write = k2_sata_scr_write,
355 .port_start = ata_port_start, 354 .port_start = ata_port_start,
diff --git a/drivers/ata/sata_sx4.c b/drivers/ata/sata_sx4.c
index 12691f091933..d5cbd16629ad 100644
--- a/drivers/ata/sata_sx4.c
+++ b/drivers/ata/sata_sx4.c
@@ -267,7 +267,6 @@ static const struct ata_port_operations pdc_20621_ops = {
267 .eng_timeout = pdc_eng_timeout, 267 .eng_timeout = pdc_eng_timeout,
268 .irq_clear = pdc20621_irq_clear, 268 .irq_clear = pdc20621_irq_clear,
269 .irq_on = ata_irq_on, 269 .irq_on = ata_irq_on,
270 .irq_ack = ata_irq_ack,
271 .port_start = pdc_port_start, 270 .port_start = pdc_port_start,
272}; 271};
273 272
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
index e6b8b45279af..d4514e2149bc 100644
--- a/drivers/ata/sata_uli.c
+++ b/drivers/ata/sata_uli.c
@@ -117,7 +117,6 @@ static const struct ata_port_operations uli_ops = {
117 117
118 .irq_clear = ata_bmdma_irq_clear, 118 .irq_clear = ata_bmdma_irq_clear,
119 .irq_on = ata_irq_on, 119 .irq_on = ata_irq_on,
120 .irq_ack = ata_irq_ack,
121 120
122 .scr_read = uli_scr_read, 121 .scr_read = uli_scr_read,
123 .scr_write = uli_scr_write, 122 .scr_write = uli_scr_write,
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 690280660b81..4b25c3ef986f 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -146,7 +146,6 @@ static const struct ata_port_operations vt6420_sata_ops = {
146 146
147 .irq_clear = ata_bmdma_irq_clear, 147 .irq_clear = ata_bmdma_irq_clear,
148 .irq_on = ata_irq_on, 148 .irq_on = ata_irq_on,
149 .irq_ack = ata_irq_ack,
150 149
151 .port_start = ata_port_start, 150 .port_start = ata_port_start,
152}; 151};
@@ -180,7 +179,6 @@ static const struct ata_port_operations vt6421_pata_ops = {
180 179
181 .irq_clear = ata_bmdma_irq_clear, 180 .irq_clear = ata_bmdma_irq_clear,
182 .irq_on = ata_irq_on, 181 .irq_on = ata_irq_on,
183 .irq_ack = ata_irq_ack,
184 182
185 .port_start = ata_port_start, 183 .port_start = ata_port_start,
186}; 184};
@@ -211,7 +209,6 @@ static const struct ata_port_operations vt6421_sata_ops = {
211 209
212 .irq_clear = ata_bmdma_irq_clear, 210 .irq_clear = ata_bmdma_irq_clear,
213 .irq_on = ata_irq_on, 211 .irq_on = ata_irq_on,
214 .irq_ack = ata_irq_ack,
215 212
216 .scr_read = svia_scr_read, 213 .scr_read = svia_scr_read,
217 .scr_write = svia_scr_write, 214 .scr_write = svia_scr_write,
diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
index 9586b8b51cea..55fb2e0b369a 100644
--- a/drivers/ata/sata_vsc.c
+++ b/drivers/ata/sata_vsc.c
@@ -336,7 +336,6 @@ static const struct ata_port_operations vsc_sata_ops = {
336 .post_internal_cmd = ata_bmdma_post_internal_cmd, 336 .post_internal_cmd = ata_bmdma_post_internal_cmd,
337 .irq_clear = ata_bmdma_irq_clear, 337 .irq_clear = ata_bmdma_irq_clear,
338 .irq_on = ata_irq_on, 338 .irq_on = ata_irq_on,
339 .irq_ack = ata_irq_ack,
340 .scr_read = vsc_sata_scr_read, 339 .scr_read = vsc_sata_scr_read,
341 .scr_write = vsc_sata_scr_write, 340 .scr_write = vsc_sata_scr_write,
342 .port_start = ata_port_start, 341 .port_start = ata_port_start,
diff --git a/include/linux/libata.h b/include/linux/libata.h
index b89d191ceb2b..9295cd541ffc 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -644,7 +644,6 @@ struct ata_port_operations {
644 irq_handler_t irq_handler; 644 irq_handler_t irq_handler;
645 void (*irq_clear) (struct ata_port *); 645 void (*irq_clear) (struct ata_port *);
646 u8 (*irq_on) (struct ata_port *); 646 u8 (*irq_on) (struct ata_port *);
647 u8 (*irq_ack) (struct ata_port *ap, unsigned int chk_drq);
648 647
649 int (*scr_read) (struct ata_port *ap, unsigned int sc_reg, u32 *val); 648 int (*scr_read) (struct ata_port *ap, unsigned int sc_reg, u32 *val);
650 int (*scr_write) (struct ata_port *ap, unsigned int sc_reg, u32 val); 649 int (*scr_write) (struct ata_port *ap, unsigned int sc_reg, u32 val);
@@ -852,9 +851,6 @@ extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
852extern struct ata_device *ata_dev_pair(struct ata_device *adev); 851extern struct ata_device *ata_dev_pair(struct ata_device *adev);
853extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev); 852extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
854extern u8 ata_irq_on(struct ata_port *ap); 853extern u8 ata_irq_on(struct ata_port *ap);
855extern u8 ata_dummy_irq_on(struct ata_port *ap);
856extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq);
857extern u8 ata_dummy_irq_ack(struct ata_port *ap, unsigned int chk_drq);
858 854
859extern int ata_cable_40wire(struct ata_port *ap); 855extern int ata_cable_40wire(struct ata_port *ap);
860extern int ata_cable_80wire(struct ata_port *ap); 856extern int ata_cable_80wire(struct ata_port *ap);