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) |
