diff options
Diffstat (limited to 'arch/alpha/kernel/sys_wildfire.c')
| -rw-r--r-- | arch/alpha/kernel/sys_wildfire.c | 32 | 
1 files changed, 19 insertions, 13 deletions
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c index eec52594d41..ca60a387ef0 100644 --- a/arch/alpha/kernel/sys_wildfire.c +++ b/arch/alpha/kernel/sys_wildfire.c @@ -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  |