upgrade to fedora-2.6.12-1.1398.FC4 + vserver 2.0.rc7
[linux-2.6.git] / arch / mips / jmr3927 / rbhma3100 / irq.c
index a0dc567..b9799b8 100644 (file)
@@ -89,38 +89,10 @@ static unsigned char irc_level[TX3927_NUM_IR] = {
        6, 6, 6                 /* TMR */
 };
 
-static inline void mask_irq(unsigned int irq_nr)
-{
-       struct tb_irq_space* sp;
-       for (sp = tb_irq_spaces; sp; sp = sp->next) {
-               if (sp->start_irqno <= irq_nr &&
-                   irq_nr < sp->start_irqno + sp->nr_irqs) {
-                       if (sp->mask_func)
-                               sp->mask_func(irq_nr - sp->start_irqno,
-                                             sp->space_id);
-                       break;
-               }
-       }
-}
-
-static inline void unmask_irq(unsigned int irq_nr)
-{
-       struct tb_irq_space* sp;
-       for (sp = tb_irq_spaces; sp; sp = sp->next) {
-               if (sp->start_irqno <= irq_nr &&
-                   irq_nr < sp->start_irqno + sp->nr_irqs) {
-                       if (sp->unmask_func)
-                               sp->unmask_func(irq_nr - sp->start_irqno,
-                                               sp->space_id);
-                       break;
-               }
-       }
-}
-
 static void jmr3927_irq_disable(unsigned int irq_nr);
 static void jmr3927_irq_enable(unsigned int irq_nr);
 
-static spinlock_t jmr3927_irq_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(jmr3927_irq_lock);
 
 static unsigned int jmr3927_irq_startup(unsigned int irq)
 {
@@ -133,9 +105,8 @@ static unsigned int jmr3927_irq_startup(unsigned int irq)
 
 static void jmr3927_irq_ack(unsigned int irq)
 {
-       if (irq == JMR3927_IRQ_IRC_TMR0) {
+       if (irq == JMR3927_IRQ_IRC_TMR0)
                jmr3927_tmrptr->tisr = 0;       /* ack interrupt */
-       }
 
        jmr3927_irq_disable(irq);
 }
@@ -147,19 +118,37 @@ static void jmr3927_irq_end(unsigned int irq)
 
 static void jmr3927_irq_disable(unsigned int irq_nr)
 {
+       struct tb_irq_space* sp;
        unsigned long flags;
 
        spinlock_irqsave(&jmr3927_irq_lock, flags);
-       mask_irq(irq_nr);
+       for (sp = tb_irq_spaces; sp; sp = sp->next) {
+               if (sp->start_irqno <= irq_nr &&
+                   irq_nr < sp->start_irqno + sp->nr_irqs) {
+                       if (sp->mask_func)
+                               sp->mask_func(irq_nr - sp->start_irqno,
+                                             sp->space_id);
+                       break;
+               }
+       }
        spinlock_irqrestore(&jmr3927_irq_lock, flags);
 }
 
 static void jmr3927_irq_enable(unsigned int irq_nr)
 {
+       struct tb_irq_space* sp;
        unsigned long flags;
 
        spinlock_irqsave(&jmr3927_irq_lock, flags);
-       unmask_irq(irq_nr);
+       for (sp = tb_irq_spaces; sp; sp = sp->next) {
+               if (sp->start_irqno <= irq_nr &&
+                   irq_nr < sp->start_irqno + sp->nr_irqs) {
+                       if (sp->unmask_func)
+                               sp->unmask_func(irq_nr - sp->start_irqno,
+                                               sp->space_id);
+                       break;
+               }
+       }
        spinlock_irqrestore(&jmr3927_irq_lock, flags);
 }