aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/parisc/eisa.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/parisc/eisa.c
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'drivers/parisc/eisa.c')
-rw-r--r--drivers/parisc/eisa.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/drivers/parisc/eisa.c b/drivers/parisc/eisa.c
index 46f503fb7fc5..103095bbe8c0 100644
--- a/drivers/parisc/eisa.c
+++ b/drivers/parisc/eisa.c
@@ -144,8 +144,9 @@ static unsigned int eisa_irq_level __read_mostly; /* default to edge triggered *
144 144
145 145
146/* called by free irq */ 146/* called by free irq */
147static void eisa_disable_irq(unsigned int irq) 147static void eisa_mask_irq(struct irq_data *d)
148{ 148{
149 unsigned int irq = d->irq;
149 unsigned long flags; 150 unsigned long flags;
150 151
151 EISA_DBG("disable irq %d\n", irq); 152 EISA_DBG("disable irq %d\n", irq);
@@ -164,8 +165,9 @@ static void eisa_disable_irq(unsigned int irq)
164} 165}
165 166
166/* called by request irq */ 167/* called by request irq */
167static void eisa_enable_irq(unsigned int irq) 168static void eisa_unmask_irq(struct irq_data *d)
168{ 169{
170 unsigned int irq = d->irq;
169 unsigned long flags; 171 unsigned long flags;
170 EISA_DBG("enable irq %d\n", irq); 172 EISA_DBG("enable irq %d\n", irq);
171 173
@@ -182,20 +184,10 @@ static void eisa_enable_irq(unsigned int irq)
182 EISA_DBG("pic1 mask %02x\n", eisa_in8(0xa1)); 184 EISA_DBG("pic1 mask %02x\n", eisa_in8(0xa1));
183} 185}
184 186
185static unsigned int eisa_startup_irq(unsigned int irq)
186{
187 eisa_enable_irq(irq);
188 return 0;
189}
190
191static struct irq_chip eisa_interrupt_type = { 187static struct irq_chip eisa_interrupt_type = {
192 .name = "EISA", 188 .name = "EISA",
193 .startup = eisa_startup_irq, 189 .irq_unmask = eisa_unmask_irq,
194 .shutdown = eisa_disable_irq, 190 .irq_mask = eisa_mask_irq,
195 .enable = eisa_enable_irq,
196 .disable = eisa_disable_irq,
197 .ack = no_ack_irq,
198 .end = no_end_irq,
199}; 191};
200 192
201static irqreturn_t eisa_irq(int wax_irq, void *intr_dev) 193static irqreturn_t eisa_irq(int wax_irq, void *intr_dev)
@@ -233,7 +225,7 @@ static irqreturn_t eisa_irq(int wax_irq, void *intr_dev)
233 } 225 }
234 spin_unlock_irqrestore(&eisa_irq_lock, flags); 226 spin_unlock_irqrestore(&eisa_irq_lock, flags);
235 227
236 __do_IRQ(irq); 228 generic_handle_irq(irq);
237 229
238 spin_lock_irqsave(&eisa_irq_lock, flags); 230 spin_lock_irqsave(&eisa_irq_lock, flags);
239 /* unmask */ 231 /* unmask */
@@ -346,10 +338,10 @@ static int __init eisa_probe(struct parisc_device *dev)
346 } 338 }
347 339
348 /* Reserve IRQ2 */ 340 /* Reserve IRQ2 */
349 irq_to_desc(2)->action = &irq2_action; 341 setup_irq(2, &irq2_action);
350
351 for (i = 0; i < 16; i++) { 342 for (i = 0; i < 16; i++) {
352 irq_to_desc(i)->chip = &eisa_interrupt_type; 343 irq_set_chip_and_handler(i, &eisa_interrupt_type,
344 handle_simple_irq);
353 } 345 }
354 346
355 EISA_bus = 1; 347 EISA_bus = 1;