diff options
author | Tejun Heo <htejun@gmail.com> | 2008-03-24 23:22:47 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-04-17 15:44:16 -0400 |
commit | 358f9a77a668660729e705fde9c3cf69f013aa98 (patch) | |
tree | a249660fdd9f252925eff9eaac3ed7836c839f91 | |
parent | c1bc899f5805771926c9198e2ab4d77122c356a1 (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.c | 12 | ||||
-rw-r--r-- | drivers/ata/libata-core.c | 1 | ||||
-rw-r--r-- | drivers/ata/libata-sff.c | 8 | ||||
-rw-r--r-- | drivers/ata/pata_ali.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_at32.c | 7 | ||||
-rw-r--r-- | drivers/ata/pata_icside.c | 7 | ||||
-rw-r--r-- | drivers/ata/pata_isapnp.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_ixp4xx_cf.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_legacy.c | 22 | ||||
-rw-r--r-- | drivers/ata/pata_mpc52xx.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_mpiix.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_ns87410.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_pcmcia.c | 4 | ||||
-rw-r--r-- | drivers/ata/pata_platform.c | 2 | ||||
-rw-r--r-- | drivers/ata/pata_qdi.c | 4 | ||||
-rw-r--r-- | drivers/ata/pata_rb500_cf.c | 6 | ||||
-rw-r--r-- | drivers/ata/pata_winbond.c | 2 | ||||
-rw-r--r-- | drivers/ata/pdc_adma.c | 8 | ||||
-rw-r--r-- | drivers/ata/sata_fsl.c | 7 | ||||
-rw-r--r-- | drivers/ata/sata_inic162x.c | 7 | ||||
-rw-r--r-- | drivers/ata/sata_mv.c | 11 | ||||
-rw-r--r-- | drivers/ata/sata_qstor.c | 8 | ||||
-rw-r--r-- | drivers/ata/sata_sil24.c | 8 | ||||
-rw-r--r-- | include/linux/libata.h | 1 |
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); | |||
244 | static int ahci_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val); | 244 | static int ahci_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val); |
245 | static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); | 245 | static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); |
246 | static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); | 246 | static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); |
247 | static void ahci_irq_clear(struct ata_port *ap); | ||
248 | static int ahci_port_start(struct ata_port *ap); | 247 | static int ahci_port_start(struct ata_port *ap); |
249 | static void ahci_port_stop(struct ata_port *ap); | 248 | static void ahci_port_stop(struct ata_port *ap); |
250 | static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf); | 249 | static 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 | ||
1772 | static void ahci_irq_clear(struct ata_port *ap) | ||
1773 | { | ||
1774 | /* TODO */ | ||
1775 | } | ||
1776 | |||
1777 | static irqreturn_t ahci_interrupt(int irq, void *dev_instance) | 1771 | static 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); | |||
7824 | EXPORT_SYMBOL_GPL(ata_bmdma_setup); | 7824 | EXPORT_SYMBOL_GPL(ata_bmdma_setup); |
7825 | EXPORT_SYMBOL_GPL(ata_bmdma_start); | 7825 | EXPORT_SYMBOL_GPL(ata_bmdma_start); |
7826 | EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear); | 7826 | EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear); |
7827 | EXPORT_SYMBOL_GPL(ata_noop_irq_clear); | ||
7827 | EXPORT_SYMBOL_GPL(ata_bmdma_status); | 7828 | EXPORT_SYMBOL_GPL(ata_bmdma_status); |
7828 | EXPORT_SYMBOL_GPL(ata_bmdma_stop); | 7829 | EXPORT_SYMBOL_GPL(ata_bmdma_stop); |
7829 | EXPORT_SYMBOL_GPL(ata_bmdma_freeze); | 7830 | EXPORT_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 | */ | ||
309 | void 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 | ||
169 | static void pata_at32_irq_clear(struct ata_port *ap) | ||
170 | { | ||
171 | /* No DMA controller yet */ | ||
172 | } | ||
173 | |||
174 | static struct scsi_host_template at32_sht = { | 169 | static 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 */ | ||
326 | static void ata_dummy_noret(struct ata_port *port) | ||
327 | { | ||
328 | } | ||
329 | |||
330 | static void pata_icside_postreset(struct ata_link *link, unsigned int *classes) | 325 | static 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 | ||
120 | static void rb500_pata_irq_clear(struct ata_port *ap) | ||
121 | { | ||
122 | } | ||
123 | |||
124 | static int rb500_pata_port_start(struct ata_port *ap) | 120 | static 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); | |||
138 | static int adma_check_atapi_dma(struct ata_queued_cmd *qc); | 138 | static int adma_check_atapi_dma(struct ata_queued_cmd *qc); |
139 | static void adma_bmdma_stop(struct ata_queued_cmd *qc); | 139 | static void adma_bmdma_stop(struct ata_queued_cmd *qc); |
140 | static u8 adma_bmdma_status(struct ata_port *ap); | 140 | static u8 adma_bmdma_status(struct ata_port *ap); |
141 | static void adma_irq_clear(struct ata_port *ap); | ||
142 | static void adma_freeze(struct ata_port *ap); | 141 | static void adma_freeze(struct ata_port *ap); |
143 | static void adma_thaw(struct ata_port *ap); | 142 | static void adma_thaw(struct ata_port *ap); |
144 | static void adma_error_handler(struct ata_port *ap); | 143 | static 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 | ||
226 | static void adma_irq_clear(struct ata_port *ap) | ||
227 | { | ||
228 | /* nothing */ | ||
229 | } | ||
230 | |||
231 | static void adma_reset_engine(struct ata_port *ap) | 225 | static 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 | ||
936 | static void sata_fsl_irq_clear(struct ata_port *ap) | ||
937 | { | ||
938 | /* unused */ | ||
939 | } | ||
940 | |||
941 | static void sata_fsl_error_intr(struct ata_port *ap) | 936 | static 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 | ||
269 | static void inic_irq_clear(struct ata_port *ap) | ||
270 | { | ||
271 | /* noop */ | ||
272 | } | ||
273 | |||
274 | static void inic_host_intr(struct ata_port *ap) | 269 | static 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 | ||
464 | static void mv_irq_clear(struct ata_port *ap); | ||
465 | static int mv_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val); | 464 | static int mv_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val); |
466 | static int mv_scr_write(struct ata_port *ap, unsigned int sc_reg_in, u32 val); | 465 | static int mv_scr_write(struct ata_port *ap, unsigned int sc_reg_in, u32 val); |
467 | static int mv5_scr_read(struct ata_port *ap, unsigned int sc_reg_in, u32 *val); | 466 | static 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 | ||
804 | static void mv_irq_clear(struct ata_port *ap) | ||
805 | { | ||
806 | } | ||
807 | |||
808 | static void mv_set_edma_ptrs(void __iomem *port_mmio, | 803 | static 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); | |||
121 | static int qs_check_atapi_dma(struct ata_queued_cmd *qc); | 121 | static int qs_check_atapi_dma(struct ata_queued_cmd *qc); |
122 | static void qs_bmdma_stop(struct ata_queued_cmd *qc); | 122 | static void qs_bmdma_stop(struct ata_queued_cmd *qc); |
123 | static u8 qs_bmdma_status(struct ata_port *ap); | 123 | static u8 qs_bmdma_status(struct ata_port *ap); |
124 | static void qs_irq_clear(struct ata_port *ap); | ||
125 | static void qs_freeze(struct ata_port *ap); | 124 | static void qs_freeze(struct ata_port *ap); |
126 | static void qs_thaw(struct ata_port *ap); | 125 | static void qs_thaw(struct ata_port *ap); |
127 | static void qs_error_handler(struct ata_port *ap); | 126 | static 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 | ||
214 | static void qs_irq_clear(struct ata_port *ap) | ||
215 | { | ||
216 | /* nothing */ | ||
217 | } | ||
218 | |||
219 | static inline void qs_enter_reg_mode(struct ata_port *ap) | 213 | static 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); | |||
348 | static int sil24_qc_defer(struct ata_queued_cmd *qc); | 348 | static int sil24_qc_defer(struct ata_queued_cmd *qc); |
349 | static void sil24_qc_prep(struct ata_queued_cmd *qc); | 349 | static void sil24_qc_prep(struct ata_queued_cmd *qc); |
350 | static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc); | 350 | static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc); |
351 | static void sil24_irq_clear(struct ata_port *ap); | ||
352 | static void sil24_pmp_attach(struct ata_port *ap); | 351 | static void sil24_pmp_attach(struct ata_port *ap); |
353 | static void sil24_pmp_detach(struct ata_port *ap); | 352 | static void sil24_pmp_detach(struct ata_port *ap); |
354 | static void sil24_freeze(struct ata_port *ap); | 353 | static 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 | ||
924 | static void sil24_irq_clear(struct ata_port *ap) | ||
925 | { | ||
926 | /* unused */ | ||
927 | } | ||
928 | |||
929 | static void sil24_pmp_attach(struct ata_port *ap) | 923 | static 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); | |||
896 | extern void ata_bmdma_stop(struct ata_queued_cmd *qc); | 896 | extern void ata_bmdma_stop(struct ata_queued_cmd *qc); |
897 | extern u8 ata_bmdma_status(struct ata_port *ap); | 897 | extern u8 ata_bmdma_status(struct ata_port *ap); |
898 | extern void ata_bmdma_irq_clear(struct ata_port *ap); | 898 | extern void ata_bmdma_irq_clear(struct ata_port *ap); |
899 | extern void ata_noop_irq_clear(struct ata_port *ap); | ||
899 | extern void ata_bmdma_freeze(struct ata_port *ap); | 900 | extern void ata_bmdma_freeze(struct ata_port *ap); |
900 | extern void ata_bmdma_thaw(struct ata_port *ap); | 901 | extern void ata_bmdma_thaw(struct ata_port *ap); |
901 | extern void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset, | 902 | extern void ata_bmdma_drive_eh(struct ata_port *ap, ata_prereset_fn_t prereset, |