|
@@ -104,10 +104,12 @@ wildfire_init_irq_hw(void)
|
|
|
}
|
|
|
|
|
|
static void
|
|
|
-wildfire_enable_irq(unsigned int irq)
|
|
|
+wildfire_enable_irq(struct irq_data *d)
|
|
|
{
|
|
|
+ unsigned int irq = d->irq;
|
|
|
+
|
|
|
if (irq < 16)
|
|
|
- i8259a_enable_irq(irq);
|
|
|
+ i8259a_enable_irq(d);
|
|
|
|
|
|
spin_lock(&wildfire_irq_lock);
|
|
|
set_bit(irq, &cached_irq_mask);
|
|
@@ -116,10 +118,12 @@ wildfire_enable_irq(unsigned int irq)
|
|
|
}
|
|
|
|
|
|
static void
|
|
|
-wildfire_disable_irq(unsigned int irq)
|
|
|
+wildfire_disable_irq(struct irq_data *d)
|
|
|
{
|
|
|
+ unsigned int irq = d->irq;
|
|
|
+
|
|
|
if (irq < 16)
|
|
|
- i8259a_disable_irq(irq);
|
|
|
+ i8259a_disable_irq(d);
|
|
|
|
|
|
spin_lock(&wildfire_irq_lock);
|
|
|
clear_bit(irq, &cached_irq_mask);
|
|
@@ -128,10 +132,12 @@ wildfire_disable_irq(unsigned int irq)
|
|
|
}
|
|
|
|
|
|
static void
|
|
|
-wildfire_mask_and_ack_irq(unsigned int irq)
|
|
|
+wildfire_mask_and_ack_irq(struct irq_data *d)
|
|
|
{
|
|
|
+ unsigned int irq = d->irq;
|
|
|
+
|
|
|
if (irq < 16)
|
|
|
- i8259a_mask_and_ack_irq(irq);
|
|
|
+ i8259a_mask_and_ack_irq(d);
|
|
|
|
|
|
spin_lock(&wildfire_irq_lock);
|
|
|
clear_bit(irq, &cached_irq_mask);
|
|
@@ -141,9 +147,9 @@ wildfire_mask_and_ack_irq(unsigned int irq)
|
|
|
|
|
|
static struct irq_chip wildfire_irq_type = {
|
|
|
.name = "WILDFIRE",
|
|
|
- .unmask = wildfire_enable_irq,
|
|
|
- .mask = wildfire_disable_irq,
|
|
|
- .mask_ack = wildfire_mask_and_ack_irq,
|
|
|
+ .irq_unmask = wildfire_enable_irq,
|
|
|
+ .irq_mask = wildfire_disable_irq,
|
|
|
+ .irq_mask_ack = wildfire_mask_and_ack_irq,
|
|
|
};
|
|
|
|
|
|
static void __init
|
|
@@ -177,21 +183,21 @@ wildfire_init_irq_per_pca(int qbbno, int pcano)
|
|
|
for (i = 0; i < 16; ++i) {
|
|
|
if (i == 2)
|
|
|
continue;
|
|
|
- irq_to_desc(i+irq_bias)->status |= IRQ_LEVEL;
|
|
|
set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type,
|
|
|
handle_level_irq);
|
|
|
+ irq_set_status_flags(i + irq_bias, IRQ_LEVEL);
|
|
|
}
|
|
|
|
|
|
- irq_to_desc(36+irq_bias)->status |= IRQ_LEVEL;
|
|
|
set_irq_chip_and_handler(36+irq_bias, &wildfire_irq_type,
|
|
|
handle_level_irq);
|
|
|
+ irq_set_status_flags(36 + irq_bias, IRQ_LEVEL);
|
|
|
for (i = 40; i < 64; ++i) {
|
|
|
- irq_to_desc(i+irq_bias)->status |= IRQ_LEVEL;
|
|
|
set_irq_chip_and_handler(i+irq_bias, &wildfire_irq_type,
|
|
|
handle_level_irq);
|
|
|
+ irq_set_status_flags(i + irq_bias, IRQ_LEVEL);
|
|
|
}
|
|
|
|
|
|
- setup_irq(32+irq_bias, &isa_enable);
|
|
|
+ setup_irq(32+irq_bias, &isa_enable);
|
|
|
}
|
|
|
|
|
|
static void __init
|