瀏覽代碼

libata: add another IRQ calls (libata drivers)

This patch is against each libata driver.

Two IRQ calls are added in ata_port_operations.
- irq_on() is used to enable interrupts.
- irq_ack() is used to acknowledge a device interrupt.

In most drivers, ata_irq_on() and ata_irq_ack() are used for
irq_on and irq_ack respectively.

In some drivers (ex: ahci, sata_sil24) which cannot use them
as is, ata_dummy_irq_on() and ata_dummy_irq_ack() are used.

Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Signed-off-by: Akira Iguchi <akira2.iguchi@toshiba.co.jp>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Akira Iguchi 18 年之前
父節點
當前提交
246ce3b675
共有 60 個文件被更改,包括 206 次插入0 次删除
  1. 4 0
      drivers/ata/ahci.c
  2. 2 0
      drivers/ata/ata_generic.c
  3. 6 0
      drivers/ata/ata_piix.c
  4. 8 0
      drivers/ata/pata_ali.c
  5. 12 0
      drivers/ata/pata_amd.c
  6. 4 0
      drivers/ata/pata_artop.c
  7. 2 0
      drivers/ata/pata_atiixp.c
  8. 6 0
      drivers/ata/pata_cmd64x.c
  9. 2 0
      drivers/ata/pata_cs5520.c
  10. 2 0
      drivers/ata/pata_cs5530.c
  11. 2 0
      drivers/ata/pata_cs5535.c
  12. 2 0
      drivers/ata/pata_cypress.c
  13. 2 0
      drivers/ata/pata_efar.c
  14. 2 0
      drivers/ata/pata_hpt366.c
  15. 8 0
      drivers/ata/pata_hpt37x.c
  16. 2 0
      drivers/ata/pata_hpt3x2n.c
  17. 2 0
      drivers/ata/pata_hpt3x3.c
  18. 2 0
      drivers/ata/pata_isapnp.c
  19. 2 0
      drivers/ata/pata_it8213.c
  20. 4 0
      drivers/ata/pata_it821x.c
  21. 2 0
      drivers/ata/pata_ixp4xx_cf.c
  22. 2 0
      drivers/ata/pata_jmicron.c
  23. 14 0
      drivers/ata/pata_legacy.c
  24. 2 0
      drivers/ata/pata_marvell.c
  25. 2 0
      drivers/ata/pata_mpc52xx.c
  26. 2 0
      drivers/ata/pata_mpiix.c
  27. 2 0
      drivers/ata/pata_netcell.c
  28. 2 0
      drivers/ata/pata_ns87410.c
  29. 2 0
      drivers/ata/pata_oldpiix.c
  30. 2 0
      drivers/ata/pata_opti.c
  31. 4 0
      drivers/ata/pata_optidma.c
  32. 2 0
      drivers/ata/pata_pcmcia.c
  33. 4 0
      drivers/ata/pata_pdc2027x.c
  34. 4 0
      drivers/ata/pata_pdc202xx_old.c
  35. 2 0
      drivers/ata/pata_platform.c
  36. 4 0
      drivers/ata/pata_qdi.c
  37. 2 0
      drivers/ata/pata_radisys.c
  38. 2 0
      drivers/ata/pata_rz1000.c
  39. 2 0
      drivers/ata/pata_sc1200.c
  40. 4 0
      drivers/ata/pata_serverworks.c
  41. 2 0
      drivers/ata/pata_sil680.c
  42. 10 0
      drivers/ata/pata_sis.c
  43. 2 0
      drivers/ata/pata_sl82c105.c
  44. 2 0
      drivers/ata/pata_triflex.c
  45. 4 0
      drivers/ata/pata_via.c
  46. 2 0
      drivers/ata/pata_winbond.c
  47. 2 0
      drivers/ata/pdc_adma.c
  48. 2 0
      drivers/ata/sata_inic162x.c
  49. 6 0
      drivers/ata/sata_mv.c
  50. 8 0
      drivers/ata/sata_nv.c
  51. 6 0
      drivers/ata/sata_promise.c
  52. 2 0
      drivers/ata/sata_qstor.c
  53. 2 0
      drivers/ata/sata_sil.c
  54. 2 0
      drivers/ata/sata_sil24.c
  55. 2 0
      drivers/ata/sata_sis.c
  56. 2 0
      drivers/ata/sata_svw.c
  57. 2 0
      drivers/ata/sata_sx4.c
  58. 2 0
      drivers/ata/sata_uli.c
  59. 6 0
      drivers/ata/sata_via.c
  60. 2 0
      drivers/ata/sata_vsc.c

+ 4 - 0
drivers/ata/ahci.c

@@ -260,6 +260,8 @@ static const struct ata_port_operations ahci_ops = {
 
 
 	.irq_handler		= ahci_interrupt,
 	.irq_handler		= ahci_interrupt,
 	.irq_clear		= ahci_irq_clear,
 	.irq_clear		= ahci_irq_clear,
+	.irq_on			= ata_dummy_irq_on,
+	.irq_ack		= ata_dummy_irq_ack,
 
 
 	.scr_read		= ahci_scr_read,
 	.scr_read		= ahci_scr_read,
 	.scr_write		= ahci_scr_write,
 	.scr_write		= ahci_scr_write,
@@ -291,6 +293,8 @@ static const struct ata_port_operations ahci_vt8251_ops = {
 
 
 	.irq_handler		= ahci_interrupt,
 	.irq_handler		= ahci_interrupt,
 	.irq_clear		= ahci_irq_clear,
 	.irq_clear		= ahci_irq_clear,
+	.irq_on			= ata_dummy_irq_on,
+	.irq_ack		= ata_dummy_irq_ack,
 
 
 	.scr_read		= ahci_scr_read,
 	.scr_read		= ahci_scr_read,
 	.scr_write		= ahci_scr_write,
 	.scr_write		= ahci_scr_write,

+ 2 - 0
drivers/ata/ata_generic.c

@@ -150,6 +150,8 @@ static struct ata_port_operations generic_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 6 - 0
drivers/ata/ata_piix.c

@@ -308,6 +308,8 @@ static const struct ata_port_operations piix_pata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -339,6 +341,8 @@ static const struct ata_port_operations ich_pata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -367,6 +371,8 @@ static const struct ata_port_operations piix_sata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 8 - 0
drivers/ata/pata_ali.c

@@ -374,6 +374,8 @@ static struct ata_port_operations ali_early_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -413,6 +415,8 @@ static struct ata_port_operations ali_20_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -449,6 +453,8 @@ static struct ata_port_operations ali_c2_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -484,6 +490,8 @@ static struct ata_port_operations ali_c5_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 12 - 0
drivers/ata/pata_amd.c

@@ -366,6 +366,8 @@ static struct ata_port_operations amd33_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -398,6 +400,8 @@ static struct ata_port_operations amd66_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -430,6 +434,8 @@ static struct ata_port_operations amd100_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -462,6 +468,8 @@ static struct ata_port_operations amd133_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -494,6 +502,8 @@ static struct ata_port_operations nv100_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -526,6 +536,8 @@ static struct ata_port_operations nv133_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_artop.c

@@ -345,6 +345,8 @@ static const struct ata_port_operations artop6210_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -375,6 +377,8 @@ static const struct ata_port_operations artop6260_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_atiixp.c

@@ -256,6 +256,8 @@ static struct ata_port_operations atiixp_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 6 - 0
drivers/ata/pata_cmd64x.c

@@ -317,6 +317,8 @@ static struct ata_port_operations cmd64x_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -349,6 +351,8 @@ static struct ata_port_operations cmd646r1_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -381,6 +385,8 @@ static struct ata_port_operations cmd648_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_cs5520.c

@@ -197,6 +197,8 @@ static struct ata_port_operations cs5520_port_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_cs5530.c

@@ -221,6 +221,8 @@ static struct ata_port_operations cs5530_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_cs5535.c

@@ -218,6 +218,8 @@ static struct ata_port_operations cs5535_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_cypress.c

@@ -169,6 +169,8 @@ static struct ata_port_operations cy82c693_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_efar.c

@@ -265,6 +265,8 @@ static const struct ata_port_operations efar_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_hpt366.c

@@ -365,6 +365,8 @@ static struct ata_port_operations hpt366_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 8 - 0
drivers/ata/pata_hpt37x.c

@@ -800,6 +800,8 @@ static struct ata_port_operations hpt370_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -837,6 +839,8 @@ static struct ata_port_operations hpt370a_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -875,6 +879,8 @@ static struct ata_port_operations hpt372_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -913,6 +919,8 @@ static struct ata_port_operations hpt374_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_hpt3x2n.c

@@ -377,6 +377,8 @@ static struct ata_port_operations hpt3x2n_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_hpt3x3.c

@@ -152,6 +152,8 @@ static struct ata_port_operations hpt3x3_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_isapnp.c

@@ -57,6 +57,8 @@ static struct ata_port_operations isapnp_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_it8213.c

@@ -277,6 +277,8 @@ static const struct ata_port_operations it8213_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_it821x.c

@@ -678,6 +678,8 @@ static struct ata_port_operations it821x_smart_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= it821x_port_start,
 	.port_start	= it821x_port_start,
 };
 };
@@ -712,6 +714,8 @@ static struct ata_port_operations it821x_passthru_port_ops = {
 
 
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= it821x_port_start,
 	.port_start	= it821x_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_ixp4xx_cf.c

@@ -131,6 +131,8 @@ static struct ata_port_operations ixp4xx_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ixp4xx_irq_clear,
 	.irq_clear	= ixp4xx_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 
 

+ 2 - 0
drivers/ata/pata_jmicron.c

@@ -166,6 +166,8 @@ static const struct ata_port_operations jmicron_ops = {
 	/* IRQ-related hooks */
 	/* IRQ-related hooks */
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	/* Generic PATA PCI ATA helpers */
 	/* Generic PATA PCI ATA helpers */
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,

+ 14 - 0
drivers/ata/pata_legacy.c

@@ -168,6 +168,8 @@ static struct ata_port_operations simple_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -191,6 +193,8 @@ static struct ata_port_operations legacy_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -301,6 +305,8 @@ static struct ata_port_operations pdc20230_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -351,6 +357,8 @@ static struct ata_port_operations ht6560a_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -412,6 +420,8 @@ static struct ata_port_operations ht6560b_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -528,6 +538,8 @@ static struct ata_port_operations opti82c611a_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -656,6 +668,8 @@ static struct ata_port_operations opti82c46x_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_marvell.c

@@ -134,6 +134,8 @@ static const struct ata_port_operations marvell_ops = {
 	/* Timeout handling */
 	/* Timeout handling */
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	/* Generic PATA PCI ATA helpers */
 	/* Generic PATA PCI ATA helpers */
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,

+ 2 - 0
drivers/ata/pata_mpc52xx.c

@@ -298,6 +298,8 @@ static struct ata_port_operations mpc52xx_ata_port_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
 
 

+ 2 - 0
drivers/ata/pata_mpiix.c

@@ -192,6 +192,8 @@ static struct ata_port_operations mpiix_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_netcell.c

@@ -94,6 +94,8 @@ static const struct ata_port_operations netcell_ops = {
 	/* IRQ-related hooks */
 	/* IRQ-related hooks */
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	/* Generic PATA PCI ATA helpers */
 	/* Generic PATA PCI ATA helpers */
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,

+ 2 - 0
drivers/ata/pata_ns87410.c

@@ -183,6 +183,8 @@ static struct ata_port_operations ns87410_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_oldpiix.c

@@ -263,6 +263,8 @@ static const struct ata_port_operations oldpiix_pata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_opti.c

@@ -209,6 +209,8 @@ static struct ata_port_operations opti_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_optidma.c

@@ -393,6 +393,8 @@ static struct ata_port_operations optidma_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -426,6 +428,8 @@ static struct ata_port_operations optiplus_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_pcmcia.c

@@ -92,6 +92,8 @@ static struct ata_port_operations pcmcia_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_pdc2027x.c

@@ -169,6 +169,8 @@ static struct ata_port_operations pdc2027x_pata100_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -201,6 +203,8 @@ static struct ata_port_operations pdc2027x_pata133_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_pdc202xx_old.c

@@ -298,6 +298,8 @@ static struct ata_port_operations pdc2024x_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -330,6 +332,8 @@ static struct ata_port_operations pdc2026x_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_platform.c

@@ -87,6 +87,8 @@ static struct ata_port_operations pata_platform_port_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_qdi.c

@@ -191,6 +191,8 @@ static struct ata_port_operations qdi6500_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -217,6 +219,8 @@ static struct ata_port_operations qdi6580_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_radisys.c

@@ -259,6 +259,8 @@ static const struct ata_port_operations radisys_pata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_rz1000.c

@@ -124,6 +124,8 @@ static struct ata_port_operations rz1000_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_sc1200.c

@@ -224,6 +224,8 @@ static struct ata_port_operations sc1200_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_serverworks.c

@@ -352,6 +352,8 @@ static struct ata_port_operations serverworks_osb4_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -385,6 +387,8 @@ static struct ata_port_operations serverworks_csb_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_sil680.c

@@ -256,6 +256,8 @@ static struct ata_port_operations sil680_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 10 - 0
drivers/ata/pata_sis.c

@@ -607,6 +607,8 @@ static const struct ata_port_operations sis_133_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -638,6 +640,8 @@ static const struct ata_port_operations sis_133_early_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -670,6 +674,8 @@ static const struct ata_port_operations sis_100_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -701,6 +707,8 @@ static const struct ata_port_operations sis_66_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -732,6 +740,8 @@ static const struct ata_port_operations sis_old_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_sl82c105.c

@@ -266,6 +266,8 @@ static struct ata_port_operations sl82c105_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_triflex.c

@@ -225,6 +225,8 @@ static struct ata_port_operations triflex_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 4 - 0
drivers/ata/pata_via.c

@@ -338,6 +338,8 @@ static struct ata_port_operations via_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };
@@ -371,6 +373,8 @@ static struct ata_port_operations via_port_ops_noirq = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pata_winbond.c

@@ -160,6 +160,8 @@ static struct ata_port_operations winbond_port_ops = {
 
 
 	.irq_handler	= ata_interrupt,
 	.irq_handler	= ata_interrupt,
 	.irq_clear	= ata_bmdma_irq_clear,
 	.irq_clear	= ata_bmdma_irq_clear,
+	.irq_on		= ata_irq_on,
+	.irq_ack	= ata_irq_ack,
 
 
 	.port_start	= ata_port_start,
 	.port_start	= ata_port_start,
 };
 };

+ 2 - 0
drivers/ata/pdc_adma.c

@@ -175,6 +175,8 @@ static const struct ata_port_operations adma_ata_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= adma_intr,
 	.irq_handler		= adma_intr,
 	.irq_clear		= adma_irq_clear,
 	.irq_clear		= adma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.port_start		= adma_port_start,
 	.port_start		= adma_port_start,
 	.port_stop		= adma_port_stop,
 	.port_stop		= adma_port_stop,
 	.host_stop		= adma_host_stop,
 	.host_stop		= adma_host_stop,

+ 2 - 0
drivers/ata/sata_inic162x.c

@@ -563,6 +563,8 @@ static struct ata_port_operations inic_port_ops = {
 
 
 	.irq_handler		= inic_interrupt,
 	.irq_handler		= inic_interrupt,
 	.irq_clear		= inic_irq_clear,
 	.irq_clear		= inic_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.qc_prep	 	= ata_qc_prep,
 	.qc_prep	 	= ata_qc_prep,
 	.qc_issue		= inic_qc_issue,
 	.qc_issue		= inic_qc_issue,

+ 6 - 0
drivers/ata/sata_mv.c

@@ -410,6 +410,8 @@ static const struct ata_port_operations mv5_ops = {
 
 
 	.irq_handler		= mv_interrupt,
 	.irq_handler		= mv_interrupt,
 	.irq_clear		= mv_irq_clear,
 	.irq_clear		= mv_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= mv5_scr_read,
 	.scr_read		= mv5_scr_read,
 	.scr_write		= mv5_scr_write,
 	.scr_write		= mv5_scr_write,
@@ -437,6 +439,8 @@ static const struct ata_port_operations mv6_ops = {
 
 
 	.irq_handler		= mv_interrupt,
 	.irq_handler		= mv_interrupt,
 	.irq_clear		= mv_irq_clear,
 	.irq_clear		= mv_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= mv_scr_read,
 	.scr_read		= mv_scr_read,
 	.scr_write		= mv_scr_write,
 	.scr_write		= mv_scr_write,
@@ -464,6 +468,8 @@ static const struct ata_port_operations mv_iie_ops = {
 
 
 	.irq_handler		= mv_interrupt,
 	.irq_handler		= mv_interrupt,
 	.irq_clear		= mv_irq_clear,
 	.irq_clear		= mv_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= mv_scr_read,
 	.scr_read		= mv_scr_read,
 	.scr_write		= mv_scr_write,
 	.scr_write		= mv_scr_write,

+ 8 - 0
drivers/ata/sata_nv.c

@@ -362,6 +362,8 @@ static const struct ata_port_operations nv_generic_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= nv_generic_interrupt,
 	.irq_handler		= nv_generic_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= nv_scr_read,
 	.scr_read		= nv_scr_read,
 	.scr_write		= nv_scr_write,
 	.scr_write		= nv_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
@@ -387,6 +389,8 @@ static const struct ata_port_operations nv_nf2_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= nv_nf2_interrupt,
 	.irq_handler		= nv_nf2_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= nv_scr_read,
 	.scr_read		= nv_scr_read,
 	.scr_write		= nv_scr_write,
 	.scr_write		= nv_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
@@ -412,6 +416,8 @@ static const struct ata_port_operations nv_ck804_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= nv_ck804_interrupt,
 	.irq_handler		= nv_ck804_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= nv_scr_read,
 	.scr_read		= nv_scr_read,
 	.scr_write		= nv_scr_write,
 	.scr_write		= nv_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
@@ -439,6 +445,8 @@ static const struct ata_port_operations nv_adma_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= nv_adma_interrupt,
 	.irq_handler		= nv_adma_interrupt,
 	.irq_clear		= nv_adma_irq_clear,
 	.irq_clear		= nv_adma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= nv_scr_read,
 	.scr_read		= nv_scr_read,
 	.scr_write		= nv_scr_write,
 	.scr_write		= nv_scr_write,
 	.port_start		= nv_adma_port_start,
 	.port_start		= nv_adma_port_start,

+ 6 - 0
drivers/ata/sata_promise.c

@@ -172,6 +172,8 @@ static const struct ata_port_operations pdc_sata_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= pdc_interrupt,
 	.irq_handler		= pdc_interrupt,
 	.irq_clear		= pdc_irq_clear,
 	.irq_clear		= pdc_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= pdc_sata_scr_read,
 	.scr_read		= pdc_sata_scr_read,
 	.scr_write		= pdc_sata_scr_write,
 	.scr_write		= pdc_sata_scr_write,
@@ -197,6 +199,8 @@ static const struct ata_port_operations pdc_old_sata_ops = {
 	.data_xfer		= ata_data_xfer,
 	.data_xfer		= ata_data_xfer,
 	.irq_handler		= pdc_interrupt,
 	.irq_handler		= pdc_interrupt,
 	.irq_clear		= pdc_irq_clear,
 	.irq_clear		= pdc_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= pdc_sata_scr_read,
 	.scr_read		= pdc_sata_scr_read,
 	.scr_write		= pdc_sata_scr_write,
 	.scr_write		= pdc_sata_scr_write,
@@ -220,6 +224,8 @@ static const struct ata_port_operations pdc_pata_ops = {
 	.eng_timeout		= pdc_eng_timeout,
 	.eng_timeout		= pdc_eng_timeout,
 	.irq_handler		= pdc_interrupt,
 	.irq_handler		= pdc_interrupt,
 	.irq_clear		= pdc_irq_clear,
 	.irq_clear		= pdc_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= pdc_port_start,
 	.port_start		= pdc_port_start,
 };
 };

+ 2 - 0
drivers/ata/sata_qstor.c

@@ -161,6 +161,8 @@ static const struct ata_port_operations qs_ata_ops = {
 	.eng_timeout		= qs_eng_timeout,
 	.eng_timeout		= qs_eng_timeout,
 	.irq_handler		= qs_intr,
 	.irq_handler		= qs_intr,
 	.irq_clear		= qs_irq_clear,
 	.irq_clear		= qs_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= qs_scr_read,
 	.scr_read		= qs_scr_read,
 	.scr_write		= qs_scr_write,
 	.scr_write		= qs_scr_write,
 	.port_start		= qs_port_start,
 	.port_start		= qs_port_start,

+ 2 - 0
drivers/ata/sata_sil.c

@@ -209,6 +209,8 @@ static const struct ata_port_operations sil_ops = {
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.irq_handler		= sil_interrupt,
 	.irq_handler		= sil_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= sil_scr_read,
 	.scr_read		= sil_scr_read,
 	.scr_write		= sil_scr_write,
 	.scr_write		= sil_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,

+ 2 - 0
drivers/ata/sata_sil24.c

@@ -400,6 +400,8 @@ static const struct ata_port_operations sil24_ops = {
 
 
 	.irq_handler		= sil24_interrupt,
 	.irq_handler		= sil24_interrupt,
 	.irq_clear		= sil24_irq_clear,
 	.irq_clear		= sil24_irq_clear,
+	.irq_on			= ata_dummy_irq_on,
+	.irq_ack		= ata_dummy_irq_ack,
 
 
 	.scr_read		= sil24_scr_read,
 	.scr_read		= sil24_scr_read,
 	.scr_write		= sil24_scr_write,
 	.scr_write		= sil24_scr_write,

+ 2 - 0
drivers/ata/sata_sis.c

@@ -124,6 +124,8 @@ static const struct ata_port_operations sis_ops = {
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= sis_scr_read,
 	.scr_read		= sis_scr_read,
 	.scr_write		= sis_scr_write,
 	.scr_write		= sis_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,

+ 2 - 0
drivers/ata/sata_svw.c

@@ -356,6 +356,8 @@ static const struct ata_port_operations k2_sata_ops = {
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= k2_sata_scr_read,
 	.scr_read		= k2_sata_scr_read,
 	.scr_write		= k2_sata_scr_write,
 	.scr_write		= k2_sata_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,

+ 2 - 0
drivers/ata/sata_sx4.c

@@ -207,6 +207,8 @@ static const struct ata_port_operations pdc_20621_ops = {
 	.eng_timeout		= pdc_eng_timeout,
 	.eng_timeout		= pdc_eng_timeout,
 	.irq_handler		= pdc20621_interrupt,
 	.irq_handler		= pdc20621_interrupt,
 	.irq_clear		= pdc20621_irq_clear,
 	.irq_clear		= pdc20621_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.port_start		= pdc_port_start,
 	.port_start		= pdc_port_start,
 };
 };
 
 

+ 2 - 0
drivers/ata/sata_uli.c

@@ -117,6 +117,8 @@ static const struct ata_port_operations uli_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= uli_scr_read,
 	.scr_read		= uli_scr_read,
 	.scr_write		= uli_scr_write,
 	.scr_write		= uli_scr_write,

+ 6 - 0
drivers/ata/sata_via.c

@@ -143,6 +143,8 @@ static const struct ata_port_operations vt6420_sata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,
 };
 };
@@ -175,6 +177,8 @@ static const struct ata_port_operations vt6421_pata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.port_start		= vt6421_port_start,
 	.port_start		= vt6421_port_start,
 };
 };
@@ -204,6 +208,8 @@ static const struct ata_port_operations vt6421_sata_ops = {
 
 
 	.irq_handler		= ata_interrupt,
 	.irq_handler		= ata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 
 
 	.scr_read		= svia_scr_read,
 	.scr_read		= svia_scr_read,
 	.scr_write		= svia_scr_write,
 	.scr_write		= svia_scr_write,

+ 2 - 0
drivers/ata/sata_vsc.c

@@ -310,6 +310,8 @@ static const struct ata_port_operations vsc_sata_ops = {
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
 	.irq_handler		= vsc_sata_interrupt,
 	.irq_handler		= vsc_sata_interrupt,
 	.irq_clear		= ata_bmdma_irq_clear,
 	.irq_clear		= ata_bmdma_irq_clear,
+	.irq_on			= ata_irq_on,
+	.irq_ack		= ata_irq_ack,
 	.scr_read		= vsc_sata_scr_read,
 	.scr_read		= vsc_sata_scr_read,
 	.scr_write		= vsc_sata_scr_write,
 	.scr_write		= vsc_sata_scr_write,
 	.port_start		= ata_port_start,
 	.port_start		= ata_port_start,