diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-09-27 08:44:56 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-10-04 06:43:42 -0400 |
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); | |||
287 | /* | 287 | /* |
288 | * default enable function | 288 | * default enable function |
289 | */ | 289 | */ |
290 | static void default_enable(unsigned int irq) | 290 | static void default_enable(struct irq_data *data) |
291 | { | 291 | { |
292 | struct irq_desc *desc = irq_to_desc(irq); | 292 | struct irq_desc *desc = irq_data_to_desc(data); |
293 | 293 | ||
294 | desc->irq_data.chip->irq_unmask(&desc->irq_data); | 294 | desc->irq_data.chip->irq_unmask(&desc->irq_data); |
295 | desc->status &= ~IRQ_MASKED; | 295 | desc->status &= ~IRQ_MASKED; |
@@ -309,7 +309,7 @@ static unsigned int default_startup(unsigned int irq) | |||
309 | { | 309 | { |
310 | struct irq_desc *desc = irq_to_desc(irq); | 310 | struct irq_desc *desc = irq_to_desc(irq); |
311 | 311 | ||
312 | desc->irq_data.chip->enable(irq); | 312 | desc->irq_data.chip->irq_enable(&desc->irq_data); |
313 | return 0; | 313 | return 0; |
314 | } | 314 | } |
315 | 315 | ||
@@ -350,6 +350,11 @@ static void compat_irq_eoi(struct irq_data *data) | |||
350 | data->chip->eoi(data->irq); | 350 | data->chip->eoi(data->irq); |
351 | } | 351 | } |
352 | 352 | ||
353 | static void compat_irq_enable(struct irq_data *data) | ||
354 | { | ||
355 | data->chip->enable(data->irq); | ||
356 | } | ||
357 | |||
353 | static void compat_bus_lock(struct irq_data *data) | 358 | static void compat_bus_lock(struct irq_data *data) |
354 | { | 359 | { |
355 | data->chip->bus_lock(data->irq); | 360 | data->chip->bus_lock(data->irq); |
@@ -365,8 +370,18 @@ static void compat_bus_sync_unlock(struct irq_data *data) | |||
365 | */ | 370 | */ |
366 | void irq_chip_set_defaults(struct irq_chip *chip) | 371 | void irq_chip_set_defaults(struct irq_chip *chip) |
367 | { | 372 | { |
368 | if (!chip->enable) | 373 | /* |
369 | chip->enable = default_enable; | 374 | * Compat fixup functions need to be before we set the |
375 | * defaults for enable/disable/startup/shutdown | ||
376 | */ | ||
377 | if (chip->enable) | ||
378 | chip->irq_enable = compat_irq_enable; | ||
379 | |||
380 | /* | ||
381 | * The real defaults | ||
382 | */ | ||
383 | if (!chip->irq_enable) | ||
384 | chip->irq_enable = default_enable; | ||
370 | if (!chip->disable) | 385 | if (!chip->disable) |
371 | chip->disable = default_disable; | 386 | chip->disable = default_disable; |
372 | if (!chip->startup) | 387 | if (!chip->startup) |