aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/amiga/cia.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m68k/amiga/cia.c')
-rw-r--r--arch/m68k/amiga/cia.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/arch/m68k/amiga/cia.c b/arch/m68k/amiga/cia.c
index 637ef53112b6..b04b453718d9 100644
--- a/arch/m68k/amiga/cia.c
+++ b/arch/m68k/amiga/cia.c
@@ -98,8 +98,9 @@ static irqreturn_t cia_handler(int irq, void *dev_id)
98 return IRQ_HANDLED; 98 return IRQ_HANDLED;
99} 99}
100 100
101static void cia_enable_irq(unsigned int irq) 101static void cia_irq_enable(struct irq_data *data)
102{ 102{
103 unsigned int irq = data->irq;
103 unsigned char mask; 104 unsigned char mask;
104 105
105 if (irq >= IRQ_AMIGA_CIAB) { 106 if (irq >= IRQ_AMIGA_CIAB) {
@@ -113,8 +114,10 @@ static void cia_enable_irq(unsigned int irq)
113 } 114 }
114} 115}
115 116
116static void cia_disable_irq(unsigned int irq) 117static void cia_irq_disable(struct irq_data *data)
117{ 118{
119 unsigned int irq = data->irq;
120
118 if (irq >= IRQ_AMIGA_CIAB) 121 if (irq >= IRQ_AMIGA_CIAB)
119 cia_able_irq(&ciab_base, 1 << (irq - IRQ_AMIGA_CIAB)); 122 cia_able_irq(&ciab_base, 1 << (irq - IRQ_AMIGA_CIAB));
120 else 123 else
@@ -123,8 +126,8 @@ static void cia_disable_irq(unsigned int irq)
123 126
124static struct irq_chip cia_irq_chip = { 127static struct irq_chip cia_irq_chip = {
125 .name = "cia", 128 .name = "cia",
126 .irq_enable = cia_enable_irq, 129 .irq_enable = cia_irq_enable,
127 .irq_disable = cia_disable_irq, 130 .irq_disable = cia_irq_disable,
128}; 131};
129 132
130/* 133/*
@@ -133,9 +136,9 @@ static struct irq_chip cia_irq_chip = {
133 * into this chain. 136 * into this chain.
134 */ 137 */
135 138
136static void auto_enable_irq(unsigned int irq) 139static void auto_irq_enable(struct irq_data *data)
137{ 140{
138 switch (irq) { 141 switch (data->irq) {
139 case IRQ_AUTO_2: 142 case IRQ_AUTO_2:
140 amiga_custom.intena = IF_SETCLR | IF_PORTS; 143 amiga_custom.intena = IF_SETCLR | IF_PORTS;
141 break; 144 break;
@@ -145,9 +148,9 @@ static void auto_enable_irq(unsigned int irq)
145 } 148 }
146} 149}
147 150
148static void auto_disable_irq(unsigned int irq) 151static void auto_irq_disable(struct irq_data *data)
149{ 152{
150 switch (irq) { 153 switch (data->irq) {
151 case IRQ_AUTO_2: 154 case IRQ_AUTO_2:
152 amiga_custom.intena = IF_PORTS; 155 amiga_custom.intena = IF_PORTS;
153 break; 156 break;
@@ -159,8 +162,8 @@ static void auto_disable_irq(unsigned int irq)
159 162
160static struct irq_chip auto_irq_chip = { 163static struct irq_chip auto_irq_chip = {
161 .name = "auto", 164 .name = "auto",
162 .irq_enable = auto_enable_irq, 165 .irq_enable = auto_irq_enable,
163 .irq_disable = auto_disable_irq, 166 .irq_disable = auto_irq_disable,
164}; 167};
165 168
166void __init cia_init_IRQ(struct ciabase *base) 169void __init cia_init_IRQ(struct ciabase *base)
@@ -173,7 +176,7 @@ void __init cia_init_IRQ(struct ciabase *base)
173 176
174 /* override auto int and install CIA handler */ 177 /* override auto int and install CIA handler */
175 m68k_setup_irq_chip(&auto_irq_chip, base->handler_irq, 1); 178 m68k_setup_irq_chip(&auto_irq_chip, base->handler_irq, 1);
176 m68k_irq_startup(base->handler_irq); 179 m68k_irq_startup_irq(base->handler_irq);
177 if (request_irq(base->handler_irq, cia_handler, IRQF_SHARED, 180 if (request_irq(base->handler_irq, cia_handler, IRQF_SHARED,
178 base->name, base)) 181 base->name, base))
179 pr_err("Couldn't register %s interrupt\n", base->name); 182 pr_err("Couldn't register %s interrupt\n", base->name);