aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2008-03-24 23:22:47 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-04-17 15:44:16 -0400
commit358f9a77a668660729e705fde9c3cf69f013aa98 (patch)
treea249660fdd9f252925eff9eaac3ed7836c839f91
parentc1bc899f5805771926c9198e2ab4d77122c356a1 (diff)
libata: implement and use ata_noop_irq_clear()
->irq_clear() is used to clear IRQ bit of a SFF controller and isn't useful for drivers which don't use libata SFF HSM implementation. However, it's a required callback and many drivers implement their own noop version as placeholder. This patch implements ata_noop_irq_clear and use it to replace those custom placeholders. Also, SFF drivers which don't support BMDMA don't need to use ata_bmdma_irq_clear(). It becomes noop if BMDMA address isn't initialized. Convert them to use ata_noop_irq_clear(). Signed-off-by: Tejun Heo <htejun@gmail.com>
-rw-r--r--drivers/ata/ahci.c12
-rw-r--r--drivers/ata/libata-core.c1
-rw-r--r--drivers/ata/libata-sff.c8
-rw-r--r--drivers/ata/pata_ali.c2
-rw-r--r--drivers/ata/pata_at32.c7
-rw-r--r--drivers/ata/pata_icside.c7
-rw-r--r--drivers/ata/pata_isapnp.c2
-rw-r--r--drivers/ata/pata_ixp4xx_cf.c2
-rw-r--r--drivers/ata/pata_legacy.c22
-rw-r--r--drivers/ata/pata_mpc52xx.c2
-rw-r--r--drivers/ata/pata_mpiix.c2
-rw-r--r--drivers/ata/pata_ns87410.c2
-rw-r--r--drivers/ata/pata_pcmcia.c4
-rw-r--r--drivers/ata/pata_platform.c2
-rw-r--r--drivers/ata/pata_qdi.c4
-rw-r--r--drivers/ata/pata_rb500_cf.c6
-rw-r--r--drivers/ata/pata_winbond.c2
-rw-r--r--drivers/ata/pdc_adma.c8
-rw-r--r--drivers/ata/sata_fsl.c7
-rw-r--r--drivers/ata/sata_inic162x.c7
-rw-r--r--drivers/ata/sata_mv.c11
-rw-r--r--drivers/ata/sata_qstor.c8
-rw-r--r--drivers/ata/sata_sil24.c8
-rw-r--r--include/linux/libata.h1
24 files changed, 47 insertions, 90 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 1bd258e5390f..492e521715d6 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -244,7 +244,6 @@ static int ahci_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val);
244static int ahci_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val); 244static int ahci_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val);
245static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); 245static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
246static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); 246static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc);
247static void ahci_irq_clear(struct ata_port *ap);
248static int ahci_port_start(struct ata_port *ap); 247static int ahci_port_start(struct ata_port *ap);
249static void ahci_port_stop(struct ata_port *ap); 248static void ahci_port_stop(struct ata_port *ap);
250static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf); 249static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
@@ -307,7 +306,7 @@ static const struct ata_port_operations ahci_ops = {
307 .qc_prep = ahci_qc_prep, 306 .qc_prep = ahci_qc_prep,
308 .qc_issue = ahci_qc_issue, 307 .qc_issue = ahci_qc_issue,
309 308
310 .irq_clear = ahci_irq_clear, 309 .irq_clear = ata_noop_irq_clear,
311 310
312 .scr_read = ahci_scr_read, 311 .scr_read = ahci_scr_read,
313 .scr_write = ahci_scr_write, 312 .scr_write = ahci_scr_write,
@@ -343,7 +342,7 @@ static const struct ata_port_operations ahci_vt8251_ops = {
343 .qc_prep = ahci_qc_prep, 342 .qc_prep = ahci_qc_prep,
344 .qc_issue = ahci_qc_issue, 343 .qc_issue = ahci_qc_issue,
345 344
346 .irq_clear = ahci_irq_clear, 345 .irq_clear = ata_noop_irq_clear,
347 346
348 .scr_read = ahci_scr_read, 347 .scr_read = ahci_scr_read,
349 .scr_write = ahci_scr_write, 348 .scr_write = ahci_scr_write,
@@ -377,7 +376,7 @@ static const struct ata_port_operations ahci_p5wdh_ops = {
377 .qc_prep = ahci_qc_prep, 376 .qc_prep = ahci_qc_prep,
378 .qc_issue = ahci_qc_issue, 377 .qc_issue = ahci_qc_issue,
379 378
380 .irq_clear = ahci_irq_clear, 379 .irq_clear = ata_noop_irq_clear,
381 380
382 .scr_read = ahci_scr_read, 381 .scr_read = ahci_scr_read,
383 .scr_write = ahci_scr_write, 382 .scr_write = ahci_scr_write,
@@ -1769,11 +1768,6 @@ static void ahci_port_intr(struct ata_port *ap)
1769 } 1768 }
1770} 1769}
1771 1770
1772static void ahci_irq_clear(struct ata_port *ap)
1773{
1774 /* TODO */
1775}
1776
1777static irqreturn_t ahci_interrupt(int irq, void *dev_instance) 1771static irqreturn_t ahci_interrupt(int irq, void *dev_instance)
1778{ 1772{
1779 struct ata_host *host = dev_instance; 1773 struct ata_host *host = dev_instance;
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 4dc429fd0056..394edf937cf2 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -7824,6 +7824,7 @@ EXPORT_SYMBOL_GPL(ata_noop_qc_prep);
7824EXPORT_SYMBOL_GPL(ata_bmdma_setup); 7824EXPORT_SYMBOL_GPL(ata_bmdma_setup);
7825EXPORT_SYMBOL_GPL(ata_bmdma_start); 7825EXPORT_SYMBOL_GPL(ata_bmdma_start);
7826EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear); 7826EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
7827EXPORT_SYMBOL_GPL(ata_noop_irq_clear);
7827EXPORT_SYMBOL_GPL(ata_bmdma_status); 7828EXPORT_SYMBOL_GPL(ata_bmdma_status);
7828EXPORT_SYMBOL_GPL(ata_bmdma_stop); 7829EXPORT_SYMBOL_GPL(ata_bmdma_stop);
7829EXPORT_SYMBOL_GPL(ata_bmdma_freeze); 7830EXPORT_SYMBOL_GPL(ata_bmdma_freeze);
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 20dc572fb45a..1cf03d41aa33 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -303,6 +303,14 @@ void ata_bmdma_irq_clear(struct ata_port *ap)
303} 303}
304 304
305/** 305/**
306 * ata_noop_irq_clear - Noop placeholder for irq_clear
307 * @ap: Port associated with this ATA transaction.
308 */
309void ata_noop_irq_clear(struct ata_port *ap)
310{
311}
312
313/**
306 * ata_bmdma_status - Read PCI IDE BMDMA status 314 * ata_bmdma_status - Read PCI IDE BMDMA status
307 * @ap: Port associated with this ATA transaction. 315 * @ap: Port associated with this ATA transaction.
308 * 316 *
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c
index 3814aebefb2d..84b748aef386 100644
--- a/drivers/ata/pata_ali.c
+++ b/drivers/ata/pata_ali.c
@@ -380,7 +380,7 @@ static struct ata_port_operations ali_early_port_ops = {
380 .data_xfer = ata_data_xfer, 380 .data_xfer = ata_data_xfer,
381 381
382 .irq_handler = ata_interrupt, 382 .irq_handler = ata_interrupt,
383 .irq_clear = ata_bmdma_irq_clear, 383 .irq_clear = ata_noop_irq_clear,
384 .irq_on = ata_irq_on, 384 .irq_on = ata_irq_on,
385 385
386 .port_start = ata_sff_port_start, 386 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_at32.c b/drivers/ata/pata_at32.c
index db057b183d60..27c959f35c2c 100644
--- a/drivers/ata/pata_at32.c
+++ b/drivers/ata/pata_at32.c
@@ -166,11 +166,6 @@ static void pata_at32_set_piomode(struct ata_port *ap, struct ata_device *adev)
166 } 166 }
167} 167}
168 168
169static void pata_at32_irq_clear(struct ata_port *ap)
170{
171 /* No DMA controller yet */
172}
173
174static struct scsi_host_template at32_sht = { 169static struct scsi_host_template at32_sht = {
175 .module = THIS_MODULE, 170 .module = THIS_MODULE,
176 .name = DRV_NAME, 171 .name = DRV_NAME,
@@ -208,7 +203,7 @@ static struct ata_port_operations at32_port_ops = {
208 203
209 .data_xfer = ata_data_xfer, 204 .data_xfer = ata_data_xfer,
210 205
211 .irq_clear = pata_at32_irq_clear, 206 .irq_clear = ata_noop_irq_clear,
212 .irq_on = ata_irq_on, 207 .irq_on = ata_irq_on,
213 208
214 .port_start = ata_sff_port_start, 209 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_icside.c b/drivers/ata/pata_icside.c
index f97068be2d79..e1230cae7ff1 100644
--- a/drivers/ata/pata_icside.c
+++ b/drivers/ata/pata_icside.c
@@ -322,11 +322,6 @@ static struct scsi_host_template pata_icside_sht = {
322 .bios_param = ata_std_bios_param, 322 .bios_param = ata_std_bios_param,
323}; 323};
324 324
325/* wish this was exported from libata-core */
326static void ata_dummy_noret(struct ata_port *port)
327{
328}
329
330static void pata_icside_postreset(struct ata_link *link, unsigned int *classes) 325static void pata_icside_postreset(struct ata_link *link, unsigned int *classes)
331{ 326{
332 struct ata_port *ap = link->ap; 327 struct ata_port *ap = link->ap;
@@ -380,7 +375,7 @@ static struct ata_port_operations pata_icside_port_ops = {
380 .error_handler = pata_icside_error_handler, 375 .error_handler = pata_icside_error_handler,
381 .post_internal_cmd = pata_icside_bmdma_stop, 376 .post_internal_cmd = pata_icside_bmdma_stop,
382 377
383 .irq_clear = ata_dummy_noret, 378 .irq_clear = ata_noop_irq_clear,
384 .irq_on = ata_irq_on, 379 .irq_on = ata_irq_on,
385 380
386 .bmdma_stop = pata_icside_bmdma_stop, 381 .bmdma_stop = pata_icside_bmdma_stop,
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c
index 4320e7986321..ef561de0c24d 100644
--- a/drivers/ata/pata_isapnp.c
+++ b/drivers/ata/pata_isapnp.c
@@ -55,7 +55,7 @@ static struct ata_port_operations isapnp_port_ops = {
55 55
56 .data_xfer = ata_data_xfer, 56 .data_xfer = ata_data_xfer,
57 57
58 .irq_clear = ata_bmdma_irq_clear, 58 .irq_clear = ata_noop_irq_clear,
59 .irq_on = ata_irq_on, 59 .irq_on = ata_irq_on,
60 60
61 .port_start = ata_sff_port_start, 61 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
index 030878fedeb5..83e38cc077e1 100644
--- a/drivers/ata/pata_ixp4xx_cf.c
+++ b/drivers/ata/pata_ixp4xx_cf.c
@@ -126,7 +126,7 @@ static struct ata_port_operations ixp4xx_port_ops = {
126 .cable_detect = ata_cable_40wire, 126 .cable_detect = ata_cable_40wire,
127 127
128 .irq_handler = ata_interrupt, 128 .irq_handler = ata_interrupt,
129 .irq_clear = ata_bmdma_irq_clear, 129 .irq_clear = ata_noop_irq_clear,
130 .irq_on = ata_irq_on, 130 .irq_on = ata_irq_on,
131 131
132 .port_start = ata_port_start, 132 .port_start = ata_port_start,
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index 50fe08ebe23c..6ac02f7d5289 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -252,7 +252,7 @@ static struct ata_port_operations simple_port_ops = {
252 .data_xfer = ata_data_xfer_noirq, 252 .data_xfer = ata_data_xfer_noirq,
253 253
254 .irq_handler = ata_interrupt, 254 .irq_handler = ata_interrupt,
255 .irq_clear = ata_bmdma_irq_clear, 255 .irq_clear = ata_noop_irq_clear,
256 .irq_on = ata_irq_on, 256 .irq_on = ata_irq_on,
257 257
258 .port_start = ata_sff_port_start, 258 .port_start = ata_sff_port_start,
@@ -279,7 +279,7 @@ static struct ata_port_operations legacy_port_ops = {
279 .data_xfer = ata_data_xfer_noirq, 279 .data_xfer = ata_data_xfer_noirq,
280 280
281 .irq_handler = ata_interrupt, 281 .irq_handler = ata_interrupt,
282 .irq_clear = ata_bmdma_irq_clear, 282 .irq_clear = ata_noop_irq_clear,
283 .irq_on = ata_irq_on, 283 .irq_on = ata_irq_on,
284 284
285 .port_start = ata_sff_port_start, 285 .port_start = ata_sff_port_start,
@@ -393,7 +393,7 @@ static struct ata_port_operations pdc20230_port_ops = {
393 .data_xfer = pdc_data_xfer_vlb, 393 .data_xfer = pdc_data_xfer_vlb,
394 394
395 .irq_handler = ata_interrupt, 395 .irq_handler = ata_interrupt,
396 .irq_clear = ata_bmdma_irq_clear, 396 .irq_clear = ata_noop_irq_clear,
397 .irq_on = ata_irq_on, 397 .irq_on = ata_irq_on,
398 398
399 .port_start = ata_sff_port_start, 399 .port_start = ata_sff_port_start,
@@ -447,7 +447,7 @@ static struct ata_port_operations ht6560a_port_ops = {
447 .data_xfer = ata_data_xfer, /* Check vlb/noirq */ 447 .data_xfer = ata_data_xfer, /* Check vlb/noirq */
448 448
449 .irq_handler = ata_interrupt, 449 .irq_handler = ata_interrupt,
450 .irq_clear = ata_bmdma_irq_clear, 450 .irq_clear = ata_noop_irq_clear,
451 .irq_on = ata_irq_on, 451 .irq_on = ata_irq_on,
452 452
453 .port_start = ata_sff_port_start, 453 .port_start = ata_sff_port_start,
@@ -512,7 +512,7 @@ static struct ata_port_operations ht6560b_port_ops = {
512 .data_xfer = ata_data_xfer, /* FIXME: Check 32bit and noirq */ 512 .data_xfer = ata_data_xfer, /* FIXME: Check 32bit and noirq */
513 513
514 .irq_handler = ata_interrupt, 514 .irq_handler = ata_interrupt,
515 .irq_clear = ata_bmdma_irq_clear, 515 .irq_clear = ata_noop_irq_clear,
516 .irq_on = ata_irq_on, 516 .irq_on = ata_irq_on,
517 517
518 .port_start = ata_sff_port_start, 518 .port_start = ata_sff_port_start,
@@ -633,7 +633,7 @@ static struct ata_port_operations opti82c611a_port_ops = {
633 .data_xfer = ata_data_xfer, 633 .data_xfer = ata_data_xfer,
634 634
635 .irq_handler = ata_interrupt, 635 .irq_handler = ata_interrupt,
636 .irq_clear = ata_bmdma_irq_clear, 636 .irq_clear = ata_noop_irq_clear,
637 .irq_on = ata_irq_on, 637 .irq_on = ata_irq_on,
638 638
639 .port_start = ata_sff_port_start, 639 .port_start = ata_sff_port_start,
@@ -765,7 +765,7 @@ static struct ata_port_operations opti82c46x_port_ops = {
765 .data_xfer = ata_data_xfer, 765 .data_xfer = ata_data_xfer,
766 766
767 .irq_handler = ata_interrupt, 767 .irq_handler = ata_interrupt,
768 .irq_clear = ata_bmdma_irq_clear, 768 .irq_clear = ata_noop_irq_clear,
769 .irq_on = ata_irq_on, 769 .irq_on = ata_irq_on,
770 770
771 .port_start = ata_sff_port_start, 771 .port_start = ata_sff_port_start,
@@ -950,7 +950,7 @@ static struct ata_port_operations qdi6500_port_ops = {
950 .data_xfer = vlb32_data_xfer, 950 .data_xfer = vlb32_data_xfer,
951 951
952 .irq_handler = ata_interrupt, 952 .irq_handler = ata_interrupt,
953 .irq_clear = ata_bmdma_irq_clear, 953 .irq_clear = ata_noop_irq_clear,
954 .irq_on = ata_irq_on, 954 .irq_on = ata_irq_on,
955 955
956 .port_start = ata_sff_port_start, 956 .port_start = ata_sff_port_start,
@@ -977,7 +977,7 @@ static struct ata_port_operations qdi6580_port_ops = {
977 .data_xfer = vlb32_data_xfer, 977 .data_xfer = vlb32_data_xfer,
978 978
979 .irq_handler = ata_interrupt, 979 .irq_handler = ata_interrupt,
980 .irq_clear = ata_bmdma_irq_clear, 980 .irq_clear = ata_noop_irq_clear,
981 .irq_on = ata_irq_on, 981 .irq_on = ata_irq_on,
982 982
983 .port_start = ata_sff_port_start, 983 .port_start = ata_sff_port_start,
@@ -1004,7 +1004,7 @@ static struct ata_port_operations qdi6580dp_port_ops = {
1004 .data_xfer = vlb32_data_xfer, 1004 .data_xfer = vlb32_data_xfer,
1005 1005
1006 .irq_handler = ata_interrupt, 1006 .irq_handler = ata_interrupt,
1007 .irq_clear = ata_bmdma_irq_clear, 1007 .irq_clear = ata_noop_irq_clear,
1008 .irq_on = ata_irq_on, 1008 .irq_on = ata_irq_on,
1009 1009
1010 .port_start = ata_sff_port_start, 1010 .port_start = ata_sff_port_start,
@@ -1095,7 +1095,7 @@ static struct ata_port_operations winbond_port_ops = {
1095 1095
1096 .data_xfer = vlb32_data_xfer, 1096 .data_xfer = vlb32_data_xfer,
1097 1097
1098 .irq_clear = ata_bmdma_irq_clear, 1098 .irq_clear = ata_noop_irq_clear,
1099 .irq_on = ata_irq_on, 1099 .irq_on = ata_irq_on,
1100 1100
1101 .port_start = ata_sff_port_start, 1101 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
index 5413ebfa72e5..d84e0c8ea02f 100644
--- a/drivers/ata/pata_mpc52xx.c
+++ b/drivers/ata/pata_mpc52xx.c
@@ -296,7 +296,7 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
296 .qc_prep = ata_qc_prep, 296 .qc_prep = ata_qc_prep,
297 .qc_issue = ata_qc_issue_prot, 297 .qc_issue = ata_qc_issue_prot,
298 .data_xfer = ata_data_xfer, 298 .data_xfer = ata_data_xfer,
299 .irq_clear = ata_bmdma_irq_clear, 299 .irq_clear = ata_noop_irq_clear,
300 .irq_on = ata_irq_on, 300 .irq_on = ata_irq_on,
301 .port_start = ata_port_start, 301 .port_start = ata_port_start,
302}; 302};
diff --git a/drivers/ata/pata_mpiix.c b/drivers/ata/pata_mpiix.c
index c0d9e0cf208c..ced6372749b3 100644
--- a/drivers/ata/pata_mpiix.c
+++ b/drivers/ata/pata_mpiix.c
@@ -187,7 +187,7 @@ static struct ata_port_operations mpiix_port_ops = {
187 .qc_issue = mpiix_qc_issue_prot, 187 .qc_issue = mpiix_qc_issue_prot,
188 .data_xfer = ata_data_xfer, 188 .data_xfer = ata_data_xfer,
189 189
190 .irq_clear = ata_bmdma_irq_clear, 190 .irq_clear = ata_noop_irq_clear,
191 .irq_on = ata_irq_on, 191 .irq_on = ata_irq_on,
192 192
193 .port_start = ata_sff_port_start, 193 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_ns87410.c b/drivers/ata/pata_ns87410.c
index 9fe66fd75017..d182bdf31ee1 100644
--- a/drivers/ata/pata_ns87410.c
+++ b/drivers/ata/pata_ns87410.c
@@ -182,7 +182,7 @@ static struct ata_port_operations ns87410_port_ops = {
182 .data_xfer = ata_data_xfer, 182 .data_xfer = ata_data_xfer,
183 183
184 .irq_handler = ata_interrupt, 184 .irq_handler = ata_interrupt,
185 .irq_clear = ata_bmdma_irq_clear, 185 .irq_clear = ata_noop_irq_clear,
186 .irq_on = ata_irq_on, 186 .irq_on = ata_irq_on,
187 187
188 .port_start = ata_sff_port_start, 188 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c
index 3e7f6a9da28b..9881a9e004a4 100644
--- a/drivers/ata/pata_pcmcia.c
+++ b/drivers/ata/pata_pcmcia.c
@@ -164,7 +164,7 @@ static struct ata_port_operations pcmcia_port_ops = {
164 164
165 .data_xfer = ata_data_xfer_noirq, 165 .data_xfer = ata_data_xfer_noirq,
166 166
167 .irq_clear = ata_bmdma_irq_clear, 167 .irq_clear = ata_noop_irq_clear,
168 .irq_on = ata_irq_on, 168 .irq_on = ata_irq_on,
169 169
170 .port_start = ata_sff_port_start, 170 .port_start = ata_sff_port_start,
@@ -189,7 +189,7 @@ static struct ata_port_operations pcmcia_8bit_port_ops = {
189 189
190 .data_xfer = ata_data_xfer_8bit, 190 .data_xfer = ata_data_xfer_8bit,
191 191
192 .irq_clear = ata_bmdma_irq_clear, 192 .irq_clear = ata_noop_irq_clear,
193 .irq_on = ata_irq_on, 193 .irq_on = ata_irq_on,
194 194
195 .port_start = ata_sff_port_start, 195 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c
index aad7adc6ea56..a8429f5c3006 100644
--- a/drivers/ata/pata_platform.c
+++ b/drivers/ata/pata_platform.c
@@ -86,7 +86,7 @@ static struct ata_port_operations pata_platform_port_ops = {
86 86
87 .data_xfer = ata_data_xfer_noirq, 87 .data_xfer = ata_data_xfer_noirq,
88 88
89 .irq_clear = ata_bmdma_irq_clear, 89 .irq_clear = ata_noop_irq_clear,
90 .irq_on = ata_irq_on, 90 .irq_on = ata_irq_on,
91 91
92 .port_start = ata_dummy_ret0, 92 .port_start = ata_dummy_ret0,
diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.c
index 9f308ed76cc8..60238d5748a7 100644
--- a/drivers/ata/pata_qdi.c
+++ b/drivers/ata/pata_qdi.c
@@ -191,7 +191,7 @@ static struct ata_port_operations qdi6500_port_ops = {
191 191
192 .data_xfer = qdi_data_xfer, 192 .data_xfer = qdi_data_xfer,
193 193
194 .irq_clear = ata_bmdma_irq_clear, 194 .irq_clear = ata_noop_irq_clear,
195 .irq_on = ata_irq_on, 195 .irq_on = ata_irq_on,
196 196
197 .port_start = ata_sff_port_start, 197 .port_start = ata_sff_port_start,
@@ -217,7 +217,7 @@ static struct ata_port_operations qdi6580_port_ops = {
217 217
218 .data_xfer = qdi_data_xfer, 218 .data_xfer = qdi_data_xfer,
219 219
220 .irq_clear = ata_bmdma_irq_clear, 220 .irq_clear = ata_noop_irq_clear,
221 .irq_on = ata_irq_on, 221 .irq_on = ata_irq_on,
222 222
223 .port_start = ata_sff_port_start, 223 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pata_rb500_cf.c b/drivers/ata/pata_rb500_cf.c
index 4ce9b03fe6c8..08c32af1c84d 100644
--- a/drivers/ata/pata_rb500_cf.c
+++ b/drivers/ata/pata_rb500_cf.c
@@ -117,10 +117,6 @@ static irqreturn_t rb500_pata_irq_handler(int irq, void *dev_instance)
117 return IRQ_HANDLED; 117 return IRQ_HANDLED;
118} 118}
119 119
120static void rb500_pata_irq_clear(struct ata_port *ap)
121{
122}
123
124static int rb500_pata_port_start(struct ata_port *ap) 120static int rb500_pata_port_start(struct ata_port *ap)
125{ 121{
126 return 0; 122 return 0;
@@ -144,7 +140,7 @@ static struct ata_port_operations rb500_pata_port_ops = {
144 .error_handler = ata_bmdma_error_handler, 140 .error_handler = ata_bmdma_error_handler,
145 141
146 .irq_handler = rb500_pata_irq_handler, 142 .irq_handler = rb500_pata_irq_handler,
147 .irq_clear = rb500_pata_irq_clear, 143 .irq_clear = ata_noop_irq_clear,
148 .irq_on = ata_irq_on, 144 .irq_on = ata_irq_on,
149 145
150 .port_start = rb500_pata_port_start, 146 .port_start = rb500_pata_port_start,
diff --git a/drivers/ata/pata_winbond.c b/drivers/ata/pata_winbond.c
index 99c92eda217b..5318248782bb 100644
--- a/drivers/ata/pata_winbond.c
+++ b/drivers/ata/pata_winbond.c
@@ -159,7 +159,7 @@ static struct ata_port_operations winbond_port_ops = {
159 159
160 .data_xfer = winbond_data_xfer, 160 .data_xfer = winbond_data_xfer,
161 161
162 .irq_clear = ata_bmdma_irq_clear, 162 .irq_clear = ata_noop_irq_clear,
163 .irq_on = ata_irq_on, 163 .irq_on = ata_irq_on,
164 164
165 .port_start = ata_sff_port_start, 165 .port_start = ata_sff_port_start,
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c
index 8e1b7e9c0ae4..bc2d12a2da30 100644
--- a/drivers/ata/pdc_adma.c
+++ b/drivers/ata/pdc_adma.c
@@ -138,7 +138,6 @@ static unsigned int adma_qc_issue(struct ata_queued_cmd *qc);
138static int adma_check_atapi_dma(struct ata_queued_cmd *qc); 138static int adma_check_atapi_dma(struct ata_queued_cmd *qc);
139static void adma_bmdma_stop(struct ata_queued_cmd *qc); 139static void adma_bmdma_stop(struct ata_queued_cmd *qc);
140static u8 adma_bmdma_status(struct ata_port *ap); 140static u8 adma_bmdma_status(struct ata_port *ap);
141static void adma_irq_clear(struct ata_port *ap);
142static void adma_freeze(struct ata_port *ap); 141static void adma_freeze(struct ata_port *ap);
143static void adma_thaw(struct ata_port *ap); 142static void adma_thaw(struct ata_port *ap);
144static void adma_error_handler(struct ata_port *ap); 143static void adma_error_handler(struct ata_port *ap);
@@ -174,7 +173,7 @@ static const struct ata_port_operations adma_ata_ops = {
174 .freeze = adma_freeze, 173 .freeze = adma_freeze,
175 .thaw = adma_thaw, 174 .thaw = adma_thaw,
176 .error_handler = adma_error_handler, 175 .error_handler = adma_error_handler,
177 .irq_clear = adma_irq_clear, 176 .irq_clear = ata_noop_irq_clear,
178 .irq_on = ata_irq_on, 177 .irq_on = ata_irq_on,
179 .port_start = adma_port_start, 178 .port_start = adma_port_start,
180 .port_stop = adma_port_stop, 179 .port_stop = adma_port_stop,
@@ -223,11 +222,6 @@ static u8 adma_bmdma_status(struct ata_port *ap)
223 return 0; 222 return 0;
224} 223}
225 224
226static void adma_irq_clear(struct ata_port *ap)
227{
228 /* nothing */
229}
230
231static void adma_reset_engine(struct ata_port *ap) 225static void adma_reset_engine(struct ata_port *ap)
232{ 226{
233 void __iomem *chan = ADMA_PORT_REGS(ap); 227 void __iomem *chan = ADMA_PORT_REGS(ap);
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index d23b690ed1a1..031a512cbaa8 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -933,11 +933,6 @@ static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc)
933 } 933 }
934} 934}
935 935
936static void sata_fsl_irq_clear(struct ata_port *ap)
937{
938 /* unused */
939}
940
941static void sata_fsl_error_intr(struct ata_port *ap) 936static void sata_fsl_error_intr(struct ata_port *ap)
942{ 937{
943 struct ata_link *link = &ap->link; 938 struct ata_link *link = &ap->link;
@@ -1223,7 +1218,7 @@ static const struct ata_port_operations sata_fsl_ops = {
1223 1218
1224 .qc_prep = sata_fsl_qc_prep, 1219 .qc_prep = sata_fsl_qc_prep,
1225 .qc_issue = sata_fsl_qc_issue, 1220 .qc_issue = sata_fsl_qc_issue,
1226 .irq_clear = sata_fsl_irq_clear, 1221 .irq_clear = ata_noop_irq_clear,
1227 1222
1228 .scr_read = sata_fsl_scr_read, 1223 .scr_read = sata_fsl_scr_read,
1229 .scr_write = sata_fsl_scr_write, 1224 .scr_write = sata_fsl_scr_write,
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c
index 59e65edc5820..74f14369dc8d 100644
--- a/drivers/ata/sata_inic162x.c
+++ b/drivers/ata/sata_inic162x.c
@@ -266,11 +266,6 @@ static u8 inic_bmdma_status(struct ata_port *ap)
266 return ATA_DMA_INTR; 266 return ATA_DMA_INTR;
267} 267}
268 268
269static void inic_irq_clear(struct ata_port *ap)
270{
271 /* noop */
272}
273
274static void inic_host_intr(struct ata_port *ap) 269static void inic_host_intr(struct ata_port *ap)
275{ 270{
276 void __iomem *port_base = inic_port_base(ap); 271 void __iomem *port_base = inic_port_base(ap);
@@ -555,7 +550,7 @@ static struct ata_port_operations inic_port_ops = {
555 .bmdma_stop = inic_bmdma_stop, 550 .bmdma_stop = inic_bmdma_stop,
556 .bmdma_status = inic_bmdma_status, 551 .bmdma_status = inic_bmdma_status,
557 552
558 .irq_clear = inic_irq_clear, 553 .irq_clear = ata_noop_irq_clear,
559 .irq_on = ata_irq_on, 554 .irq_on = ata_irq_on,
560 555
561 .qc_prep = ata_qc_prep, 556 .qc_prep = ata_qc_prep,
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index a4944c8ad46d..b3b3da4eaa03 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -461,7 +461,6 @@ struct mv_hw_ops {
461 void (*reset_bus)(struct ata_host *host, void __iomem *mmio); 461 void (*reset_bus)(struct ata_host *host, void __iomem *mmio);
462}; 462};
463 463
464static void mv_irq_clear(struct ata_port *ap);
465static int mv_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val); 464static int mv_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val);
466static int mv_scr_write(struct ata_port *ap, unsigned int sc_reg_in, u32 val); 465static int mv_scr_write(struct ata_port *ap, unsigned int sc_reg_in, u32 val);
467static int mv5_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val); 466static int mv5_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val);
@@ -564,7 +563,7 @@ static const struct ata_port_operations mv5_ops = {
564 .qc_issue = mv_qc_issue, 563 .qc_issue = mv_qc_issue,
565 .data_xfer = ata_data_xfer, 564 .data_xfer = ata_data_xfer,
566 565
567 .irq_clear = mv_irq_clear, 566 .irq_clear = ata_noop_irq_clear,
568 .irq_on = ata_irq_on, 567 .irq_on = ata_irq_on,
569 568
570 .error_handler = mv_error_handler, 569 .error_handler = mv_error_handler,
@@ -592,7 +591,7 @@ static const struct ata_port_operations mv6_ops = {
592 .qc_issue = mv_qc_issue, 591 .qc_issue = mv_qc_issue,
593 .data_xfer = ata_data_xfer, 592 .data_xfer = ata_data_xfer,
594 593
595 .irq_clear = mv_irq_clear, 594 .irq_clear = ata_noop_irq_clear,
596 .irq_on = ata_irq_on, 595 .irq_on = ata_irq_on,
597 596
598 .error_handler = mv_error_handler, 597 .error_handler = mv_error_handler,
@@ -620,7 +619,7 @@ static const struct ata_port_operations mv_iie_ops = {
620 .qc_issue = mv_qc_issue, 619 .qc_issue = mv_qc_issue,
621 .data_xfer = ata_data_xfer, 620 .data_xfer = ata_data_xfer,
622 621
623 .irq_clear = mv_irq_clear, 622 .irq_clear = ata_noop_irq_clear,
624 .irq_on = ata_irq_on, 623 .irq_on = ata_irq_on,
625 624
626 .error_handler = mv_error_handler, 625 .error_handler = mv_error_handler,
@@ -801,10 +800,6 @@ static inline int mv_get_hc_count(unsigned long port_flags)
801 return ((port_flags & MV_FLAG_DUAL_HC) ? 2 : 1); 800 return ((port_flags & MV_FLAG_DUAL_HC) ? 2 : 1);
802} 801}
803 802
804static void mv_irq_clear(struct ata_port *ap)
805{
806}
807
808static void mv_set_edma_ptrs(void __iomem *port_mmio, 803static void mv_set_edma_ptrs(void __iomem *port_mmio,
809 struct mv_host_priv *hpriv, 804 struct mv_host_priv *hpriv,
810 struct mv_port_priv *pp) 805 struct mv_port_priv *pp)
diff --git a/drivers/ata/sata_qstor.c b/drivers/ata/sata_qstor.c
index 91cc12c82040..3c8e97f251f9 100644
--- a/drivers/ata/sata_qstor.c
+++ b/drivers/ata/sata_qstor.c
@@ -121,7 +121,6 @@ static unsigned int qs_qc_issue(struct ata_queued_cmd *qc);
121static int qs_check_atapi_dma(struct ata_queued_cmd *qc); 121static int qs_check_atapi_dma(struct ata_queued_cmd *qc);
122static void qs_bmdma_stop(struct ata_queued_cmd *qc); 122static void qs_bmdma_stop(struct ata_queued_cmd *qc);
123static u8 qs_bmdma_status(struct ata_port *ap); 123static u8 qs_bmdma_status(struct ata_port *ap);
124static void qs_irq_clear(struct ata_port *ap);
125static void qs_freeze(struct ata_port *ap); 124static void qs_freeze(struct ata_port *ap);
126static void qs_thaw(struct ata_port *ap); 125static void qs_thaw(struct ata_port *ap);
127static void qs_error_handler(struct ata_port *ap); 126static void qs_error_handler(struct ata_port *ap);
@@ -157,7 +156,7 @@ static const struct ata_port_operations qs_ata_ops = {
157 .freeze = qs_freeze, 156 .freeze = qs_freeze,
158 .thaw = qs_thaw, 157 .thaw = qs_thaw,
159 .error_handler = qs_error_handler, 158 .error_handler = qs_error_handler,
160 .irq_clear = qs_irq_clear, 159 .irq_clear = ata_noop_irq_clear,
161 .irq_on = ata_irq_on, 160 .irq_on = ata_irq_on,
162 .scr_read = qs_scr_read, 161 .scr_read = qs_scr_read,
163 .scr_write = qs_scr_write, 162 .scr_write = qs_scr_write,
@@ -211,11 +210,6 @@ static u8 qs_bmdma_status(struct ata_port *ap)
211 return 0; 210 return 0;
212} 211}
213 212
214static void qs_irq_clear(struct ata_port *ap)
215{
216 /* nothing */
217}
218
219static inline void qs_enter_reg_mode(struct ata_port *ap) 213static inline void qs_enter_reg_mode(struct ata_port *ap)
220{ 214{
221 u8 __iomem *chan = qs_mmio_base(ap->host) + (ap->port_no * 0x4000); 215 u8 __iomem *chan = qs_mmio_base(ap->host) + (ap->port_no * 0x4000);
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index ba0c00e8ee7f..b85464d51f68 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -348,7 +348,6 @@ static void sil24_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
348static int sil24_qc_defer(struct ata_queued_cmd *qc); 348static int sil24_qc_defer(struct ata_queued_cmd *qc);
349static void sil24_qc_prep(struct ata_queued_cmd *qc); 349static void sil24_qc_prep(struct ata_queued_cmd *qc);
350static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc); 350static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc);
351static void sil24_irq_clear(struct ata_port *ap);
352static void sil24_pmp_attach(struct ata_port *ap); 351static void sil24_pmp_attach(struct ata_port *ap);
353static void sil24_pmp_detach(struct ata_port *ap); 352static void sil24_pmp_detach(struct ata_port *ap);
354static void sil24_freeze(struct ata_port *ap); 353static void sil24_freeze(struct ata_port *ap);
@@ -416,7 +415,7 @@ static const struct ata_port_operations sil24_ops = {
416 .qc_prep = sil24_qc_prep, 415 .qc_prep = sil24_qc_prep,
417 .qc_issue = sil24_qc_issue, 416 .qc_issue = sil24_qc_issue,
418 417
419 .irq_clear = sil24_irq_clear, 418 .irq_clear = ata_noop_irq_clear,
420 419
421 .scr_read = sil24_scr_read, 420 .scr_read = sil24_scr_read,
422 .scr_write = sil24_scr_write, 421 .scr_write = sil24_scr_write,
@@ -921,11 +920,6 @@ static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc)
921 return 0; 920 return 0;
922} 921}
923 922
924static void sil24_irq_clear(struct ata_port *ap)
925{
926 /* unused */
927}
928
929static void sil24_pmp_attach(struct ata_port *ap) 923static void sil24_pmp_attach(struct ata_port *ap)
930{ 924{
931 sil24_config_pmp(ap, 1); 925 sil24_config_pmp(ap, 1);
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 9476a479691b..639298af583e 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -896,6 +896,7 @@ extern void ata_bmdma_start(struct ata_queued_cmd *qc);
896extern void ata_bmdma_stop(struct ata_queued_cmd *qc); 896extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
897extern u8 ata_bmdma_status(struct ata_port *ap); 897extern u8 ata_bmdma_status(struct ata_port *ap);
898extern void ata_bmdma_irq_clear(struct ata_port *ap); 898extern void ata_bmdma_irq_clear(struct ata_port *ap);
899extern void ata_noop_irq_clear(struct ata_port *ap);
899extern void ata_bmdma_freeze(struct ata_port *ap); 900extern void ata_bmdma_freeze(struct ata_port *ap);
900extern void ata_bmdma_thaw(struct ata_port *ap); 901extern void ata_bmdma_thaw(struct ata_port *ap);
901extern void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset, 902extern void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset,