Commit 37e12df709f09eac17314d79a52190ac46746e33

Authored by Thomas Gleixner
1 parent bc310dda41

genirq: Provide compat handling for chip->startup()

Wrap the old chip function startup() 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.635152961@linutronix.de>
Reviewed-by: H. Peter Anvin <hpa@zytor.com>
Reviewed-by: Ingo Molnar <mingo@elte.hu>

Showing 4 changed files with 16 additions and 16 deletions Side-by-side Diff

kernel/irq/autoprobe.c
... ... @@ -59,7 +59,7 @@
59 59 */
60 60 if (desc->irq_data.chip->set_type)
61 61 desc->irq_data.chip->set_type(i, IRQ_TYPE_PROBE);
62   - desc->irq_data.chip->startup(i);
  62 + desc->irq_data.chip->irq_startup(&desc->irq_data);
63 63 }
64 64 raw_spin_unlock_irq(&desc->lock);
65 65 }
... ... @@ -76,7 +76,7 @@
76 76 raw_spin_lock_irq(&desc->lock);
77 77 if (!desc->action && !(desc->status & IRQ_NOPROBE)) {
78 78 desc->status |= IRQ_AUTODETECT | IRQ_WAITING;
79   - if (desc->irq_data.chip->startup(i))
  79 + if (desc->irq_data.chip->irq_startup(&desc->irq_data))
80 80 desc->status |= IRQ_PENDING;
81 81 }
82 82 raw_spin_unlock_irq(&desc->lock);
... ... @@ -305,11 +305,11 @@
305 305 /*
306 306 * default startup function
307 307 */
308   -static unsigned int default_startup(unsigned int irq)
  308 +static unsigned int default_startup(struct irq_data *data)
309 309 {
310   - struct irq_desc *desc = irq_to_desc(irq);
  310 + struct irq_desc *desc = irq_data_to_desc(data);
311 311  
312   - desc->irq_data.chip->irq_enable(&desc->irq_data);
  312 + desc->irq_data.chip->irq_enable(data);
313 313 return 0;
314 314 }
315 315  
... ... @@ -365,6 +365,11 @@
365 365 data->chip->shutdown(data->irq);
366 366 }
367 367  
  368 +static unsigned int compat_irq_startup(struct irq_data *data)
  369 +{
  370 + return data->chip->startup(data->irq);
  371 +}
  372 +
368 373 static void compat_bus_lock(struct irq_data *data)
369 374 {
370 375 data->chip->bus_lock(data->irq);
... ... @@ -390,6 +395,8 @@
390 395 chip->irq_disable = compat_irq_disable;
391 396 if (chip->shutdown)
392 397 chip->irq_shutdown = compat_irq_shutdown;
  398 + if (chip->startup)
  399 + chip->irq_startup = compat_irq_startup;
393 400  
394 401 /*
395 402 * The real defaults
... ... @@ -398,8 +405,8 @@
398 405 chip->irq_enable = default_enable;
399 406 if (!chip->irq_disable)
400 407 chip->irq_disable = default_disable;
401   - if (!chip->startup)
402   - chip->startup = default_startup;
  408 + if (!chip->irq_startup)
  409 + chip->irq_startup = default_startup;
403 410 /*
404 411 * We use chip->irq_disable, when the user provided its own. When
405 412 * we have default_disable set for chip->irq_disable, then we need
... ... @@ -786,7 +793,7 @@
786 793 desc->status &= ~IRQ_DISABLED;
787 794 desc->status |= IRQ_NOREQUEST | IRQ_NOPROBE;
788 795 desc->depth = 0;
789   - desc->irq_data.chip->startup(irq);
  796 + desc->irq_data.chip->irq_startup(&desc->irq_data);
790 797 }
791 798 raw_spin_unlock_irqrestore(&desc->lock, flags);
792 799 chip_bus_sync_unlock(desc);
... ... @@ -311,11 +311,6 @@
311 311  
312 312 static void compat_noop(unsigned int irq) { }
313 313  
314   -static unsigned int compat_noop_ret(unsigned int irq)
315   -{
316   - return 0;
317   -}
318   -
319 314 /*
320 315 * Generic no controller implementation
321 316 */
... ... @@ -326,7 +321,6 @@
326 321 .irq_enable = noop,
327 322 .irq_disable = noop,
328 323 .irq_ack = ack_bad,
329   - .startup = compat_noop_ret,
330 324 .end = compat_noop,
331 325 };
332 326  
... ... @@ -343,7 +337,6 @@
343 337 .irq_ack = noop,
344 338 .irq_mask = noop,
345 339 .irq_unmask = noop,
346   - .startup = compat_noop_ret,
347 340 .end = compat_noop,
348 341 };
349 342  
... ... @@ -779,7 +779,7 @@
779 779 if (!(desc->status & IRQ_NOAUTOEN)) {
780 780 desc->depth = 0;
781 781 desc->status &= ~IRQ_DISABLED;
782   - desc->irq_data.chip->startup(irq);
  782 + desc->irq_data.chip->irq_startup(&desc->irq_data);
783 783 } else
784 784 /* Undo nested disables: */
785 785 desc->depth = 1;