|
@@ -32,7 +32,7 @@
|
|
|
*/
|
|
|
|
|
|
static int i8259A_auto_eoi;
|
|
|
-DEFINE_SPINLOCK(i8259A_lock);
|
|
|
+DEFINE_RAW_SPINLOCK(i8259A_lock);
|
|
|
static void mask_and_ack_8259A(unsigned int);
|
|
|
|
|
|
struct irq_chip i8259A_chip = {
|
|
@@ -68,13 +68,13 @@ void disable_8259A_irq(unsigned int irq)
|
|
|
unsigned int mask = 1 << irq;
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
cached_irq_mask |= mask;
|
|
|
if (irq & 8)
|
|
|
outb(cached_slave_mask, PIC_SLAVE_IMR);
|
|
|
else
|
|
|
outb(cached_master_mask, PIC_MASTER_IMR);
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
}
|
|
|
|
|
|
void enable_8259A_irq(unsigned int irq)
|
|
@@ -82,13 +82,13 @@ void enable_8259A_irq(unsigned int irq)
|
|
|
unsigned int mask = ~(1 << irq);
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
cached_irq_mask &= mask;
|
|
|
if (irq & 8)
|
|
|
outb(cached_slave_mask, PIC_SLAVE_IMR);
|
|
|
else
|
|
|
outb(cached_master_mask, PIC_MASTER_IMR);
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
}
|
|
|
|
|
|
int i8259A_irq_pending(unsigned int irq)
|
|
@@ -97,12 +97,12 @@ int i8259A_irq_pending(unsigned int irq)
|
|
|
unsigned long flags;
|
|
|
int ret;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
if (irq < 8)
|
|
|
ret = inb(PIC_MASTER_CMD) & mask;
|
|
|
else
|
|
|
ret = inb(PIC_SLAVE_CMD) & (mask >> 8);
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
@@ -150,7 +150,7 @@ static void mask_and_ack_8259A(unsigned int irq)
|
|
|
unsigned int irqmask = 1 << irq;
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
/*
|
|
|
* Lightweight spurious IRQ detection. We do not want
|
|
|
* to overdo spurious IRQ handling - it's usually a sign
|
|
@@ -183,7 +183,7 @@ handle_real_irq:
|
|
|
outb(cached_master_mask, PIC_MASTER_IMR);
|
|
|
outb(0x60+irq, PIC_MASTER_CMD); /* 'Specific EOI to master */
|
|
|
}
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
return;
|
|
|
|
|
|
spurious_8259A_irq:
|
|
@@ -285,24 +285,24 @@ void mask_8259A(void)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
|
|
|
outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */
|
|
|
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
|
|
|
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
}
|
|
|
|
|
|
void unmask_8259A(void)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
|
|
|
outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */
|
|
|
outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */
|
|
|
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
}
|
|
|
|
|
|
void init_8259A(int auto_eoi)
|
|
@@ -311,7 +311,7 @@ void init_8259A(int auto_eoi)
|
|
|
|
|
|
i8259A_auto_eoi = auto_eoi;
|
|
|
|
|
|
- spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
+ raw_spin_lock_irqsave(&i8259A_lock, flags);
|
|
|
|
|
|
outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */
|
|
|
outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */
|
|
@@ -356,5 +356,5 @@ void init_8259A(int auto_eoi)
|
|
|
outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */
|
|
|
outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */
|
|
|
|
|
|
- spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
+ raw_spin_unlock_irqrestore(&i8259A_lock, flags);
|
|
|
}
|