diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2010-09-27 12:44:56 +0000 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2010-10-04 12:43:42 +0200 | 
| commit | c5f756344c390f629243b4a28c2bd198fdfd7ee9 (patch) | |
| tree | 9bd1ce01615c9e29ccf970a6478d5eb75fe1ddde /kernel/irq/chip.c | |
| parent | 0c5c15572ac096001f52d37b416f2a4be9aebb80 (diff) | |
genirq: Provide compat handling for chip->enable()
Wrap the old chip function enable() 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.437159182@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 | 25 | 
1 files changed, 20 insertions, 5 deletions
| diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index c8648a83b80a..a95b47831269 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -287,9 +287,9 @@ EXPORT_SYMBOL_GPL(set_irq_nested_thread);  /*   * default enable function   */ -static void default_enable(unsigned int irq) +static void default_enable(struct irq_data *data)  { -	struct irq_desc *desc = irq_to_desc(irq); +	struct irq_desc *desc = irq_data_to_desc(data);  	desc->irq_data.chip->irq_unmask(&desc->irq_data);  	desc->status &= ~IRQ_MASKED; @@ -309,7 +309,7 @@ static unsigned int default_startup(unsigned int irq)  {  	struct irq_desc *desc = irq_to_desc(irq); -	desc->irq_data.chip->enable(irq); +	desc->irq_data.chip->irq_enable(&desc->irq_data);  	return 0;  } @@ -350,6 +350,11 @@ static void compat_irq_eoi(struct irq_data *data)  	data->chip->eoi(data->irq);  } +static void compat_irq_enable(struct irq_data *data) +{ +	data->chip->enable(data->irq); +} +  static void compat_bus_lock(struct irq_data *data)  {  	data->chip->bus_lock(data->irq); @@ -365,8 +370,18 @@ static void compat_bus_sync_unlock(struct irq_data *data)   */  void irq_chip_set_defaults(struct irq_chip *chip)  { -	if (!chip->enable) -		chip->enable = default_enable; +	/* +	 * Compat fixup functions need to be before we set the +	 * defaults for enable/disable/startup/shutdown +	 */ +	if (chip->enable) +		chip->irq_enable = compat_irq_enable; + +	/* +	 * The real defaults +	 */ +	if (!chip->irq_enable) +		chip->irq_enable = default_enable;  	if (!chip->disable)  		chip->disable = default_disable;  	if (!chip->startup) | 
