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 /drivers/ata/pata_legacy.c | |
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>
Diffstat (limited to 'drivers/ata/pata_legacy.c')
-rw-r--r-- | drivers/ata/pata_legacy.c | 22 |
1 files changed, 11 insertions, 11 deletions
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, |