diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2010-09-27 12:44:50 +0000 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2010-10-04 12:43:40 +0200 | 
| commit | 9205e31d1af0f725e71bbae10d199c6b9e8d6dd8 (patch) | |
| tree | 9ed35cf7a968ed94395ade073880c7b951f5aa92 /kernel/irq/chip.c | |
| parent | 22a49163e90dd7088f801dd54e25b04e1f337e9b (diff) | |
genirq: Provide compat handling for chip->mask_ack()
Wrap the old chip function mask_ack() until the migration is complete
and the old chip functions are removed.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <20100927121842.240806983@linutronix.de>
Reviewed-by: H. Peter Anvin <hpa@zytor.com>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/irq/chip.c')
| -rw-r--r-- | kernel/irq/chip.c | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 864c3abdf8f4..09c1a4493440 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -340,6 +340,11 @@ static void compat_irq_ack(struct irq_data *data)  	data->chip->ack(data->irq);  } +static void compat_irq_mask_ack(struct irq_data *data) +{ +	data->chip->mask_ack(data->irq); +} +  static void compat_bus_lock(struct irq_data *data)  {  	data->chip->bus_lock(data->irq); @@ -383,12 +388,14 @@ void irq_chip_set_defaults(struct irq_chip *chip)  		chip->irq_unmask = compat_irq_unmask;  	if (chip->ack)  		chip->irq_ack = compat_irq_ack; +	if (chip->mask_ack) +		chip->irq_mask_ack = compat_irq_mask_ack;  } -static inline void mask_ack_irq(struct irq_desc *desc, int irq) +static inline void mask_ack_irq(struct irq_desc *desc)  { -	if (desc->irq_data.chip->mask_ack) -		desc->irq_data.chip->mask_ack(irq); +	if (desc->irq_data.chip->irq_mask_ack) +		desc->irq_data.chip->irq_mask_ack(&desc->irq_data);  	else {  		desc->irq_data.chip->irq_mask(&desc->irq_data);  		if (desc->irq_data.chip->irq_ack) @@ -511,7 +518,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)  	irqreturn_t action_ret;  	raw_spin_lock(&desc->lock); -	mask_ack_irq(desc, irq); +	mask_ack_irq(desc);  	if (unlikely(desc->status & IRQ_INPROGRESS))  		goto out_unlock; @@ -625,7 +632,7 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)  	if (unlikely((desc->status & (IRQ_INPROGRESS | IRQ_DISABLED)) ||  		    !desc->action)) {  		desc->status |= (IRQ_PENDING | IRQ_MASKED); -		mask_ack_irq(desc, irq); +		mask_ack_irq(desc);  		goto out_unlock;  	}  	kstat_incr_irqs_this_cpu(irq, desc); @@ -729,7 +736,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,  	/* Uninstall? */  	if (handle == handle_bad_irq) {  		if (desc->irq_data.chip != &no_irq_chip) -			mask_ack_irq(desc, irq); +			mask_ack_irq(desc);  		desc->status |= IRQ_DISABLED;  		desc->depth = 1;  	} | 
