diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-09-27 08:45:02 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-10-04 06:43:43 -0400 |
commit | bc310dda41be6439364c8f3b9fe7c9d743d22b1c (patch) | |
tree | 86a8b4da3d9e81aad104b61023858813454b0f35 /kernel/irq/chip.c | |
parent | c5f756344c390f629243b4a28c2bd198fdfd7ee9 (diff) |
genirq: Provide compat handling for chip->disable()/shutdown()
Wrap the old chip functions disable() and shutdown() 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.532070631@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 | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index a95b47831269..b8a47f0a26cc 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -298,7 +298,7 @@ static void default_enable(struct irq_data *data) | |||
298 | /* | 298 | /* |
299 | * default disable function | 299 | * default disable function |
300 | */ | 300 | */ |
301 | static void default_disable(unsigned int irq) | 301 | static void default_disable(struct irq_data *data) |
302 | { | 302 | { |
303 | } | 303 | } |
304 | 304 | ||
@@ -316,9 +316,9 @@ static unsigned int default_startup(unsigned int irq) | |||
316 | /* | 316 | /* |
317 | * default shutdown function | 317 | * default shutdown function |
318 | */ | 318 | */ |
319 | static void default_shutdown(unsigned int irq) | 319 | static void default_shutdown(struct irq_data *data) |
320 | { | 320 | { |
321 | struct irq_desc *desc = irq_to_desc(irq); | 321 | struct irq_desc *desc = irq_data_to_desc(data); |
322 | 322 | ||
323 | desc->irq_data.chip->irq_mask(&desc->irq_data); | 323 | desc->irq_data.chip->irq_mask(&desc->irq_data); |
324 | desc->status |= IRQ_MASKED; | 324 | desc->status |= IRQ_MASKED; |
@@ -355,6 +355,16 @@ static void compat_irq_enable(struct irq_data *data) | |||
355 | data->chip->enable(data->irq); | 355 | data->chip->enable(data->irq); |
356 | } | 356 | } |
357 | 357 | ||
358 | static void compat_irq_disable(struct irq_data *data) | ||
359 | { | ||
360 | data->chip->disable(data->irq); | ||
361 | } | ||
362 | |||
363 | static void compat_irq_shutdown(struct irq_data *data) | ||
364 | { | ||
365 | data->chip->shutdown(data->irq); | ||
366 | } | ||
367 | |||
358 | static void compat_bus_lock(struct irq_data *data) | 368 | static void compat_bus_lock(struct irq_data *data) |
359 | { | 369 | { |
360 | data->chip->bus_lock(data->irq); | 370 | data->chip->bus_lock(data->irq); |
@@ -376,28 +386,35 @@ void irq_chip_set_defaults(struct irq_chip *chip) | |||
376 | */ | 386 | */ |
377 | if (chip->enable) | 387 | if (chip->enable) |
378 | chip->irq_enable = compat_irq_enable; | 388 | chip->irq_enable = compat_irq_enable; |
389 | if (chip->disable) | ||
390 | chip->irq_disable = compat_irq_disable; | ||
391 | if (chip->shutdown) | ||
392 | chip->irq_shutdown = compat_irq_shutdown; | ||
379 | 393 | ||
380 | /* | 394 | /* |
381 | * The real defaults | 395 | * The real defaults |
382 | */ | 396 | */ |
383 | if (!chip->irq_enable) | 397 | if (!chip->irq_enable) |
384 | chip->irq_enable = default_enable; | 398 | chip->irq_enable = default_enable; |
385 | if (!chip->disable) | 399 | if (!chip->irq_disable) |
386 | chip->disable = default_disable; | 400 | chip->irq_disable = default_disable; |
387 | if (!chip->startup) | 401 | if (!chip->startup) |
388 | chip->startup = default_startup; | 402 | chip->startup = default_startup; |
389 | /* | 403 | /* |
390 | * We use chip->disable, when the user provided its own. When | 404 | * We use chip->irq_disable, when the user provided its own. When |
391 | * we have default_disable set for chip->disable, then we need | 405 | * we have default_disable set for chip->irq_disable, then we need |
392 | * to use default_shutdown, otherwise the irq line is not | 406 | * to use default_shutdown, otherwise the irq line is not |
393 | * disabled on free_irq(): | 407 | * disabled on free_irq(): |
394 | */ | 408 | */ |
395 | if (!chip->shutdown) | 409 | if (!chip->irq_shutdown) |
396 | chip->shutdown = chip->disable != default_disable ? | 410 | chip->irq_shutdown = chip->irq_disable != default_disable ? |
397 | chip->disable : default_shutdown; | 411 | chip->irq_disable : default_shutdown; |
398 | if (!chip->end) | 412 | if (!chip->end) |
399 | chip->end = dummy_irq_chip.end; | 413 | chip->end = dummy_irq_chip.end; |
400 | 414 | ||
415 | /* | ||
416 | * Now fix up the remaining compat handlers | ||
417 | */ | ||
401 | if (chip->bus_lock) | 418 | if (chip->bus_lock) |
402 | chip->irq_bus_lock = compat_bus_lock; | 419 | chip->irq_bus_lock = compat_bus_lock; |
403 | if (chip->bus_sync_unlock) | 420 | if (chip->bus_sync_unlock) |