diff options
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/twl6030-irq.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c index 776402566c9e..f94a04ca1d37 100644 --- a/drivers/mfd/twl6030-irq.c +++ b/drivers/mfd/twl6030-irq.c | |||
@@ -187,6 +187,13 @@ static inline void activate_irq(int irq) | |||
187 | #endif | 187 | #endif |
188 | } | 188 | } |
189 | 189 | ||
190 | int twl6030_irq_set_wake(struct irq_data *d, unsigned int on) | ||
191 | { | ||
192 | int twl_irq = (int)irq_get_chip_data(d->irq); | ||
193 | |||
194 | return irq_set_irq_wake(twl_irq, on); | ||
195 | } | ||
196 | |||
190 | /*----------------------------------------------------------------------*/ | 197 | /*----------------------------------------------------------------------*/ |
191 | 198 | ||
192 | static unsigned twl6030_irq_next; | 199 | static unsigned twl6030_irq_next; |
@@ -318,10 +325,12 @@ int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end) | |||
318 | twl6030_irq_chip = dummy_irq_chip; | 325 | twl6030_irq_chip = dummy_irq_chip; |
319 | twl6030_irq_chip.name = "twl6030"; | 326 | twl6030_irq_chip.name = "twl6030"; |
320 | twl6030_irq_chip.irq_set_type = NULL; | 327 | twl6030_irq_chip.irq_set_type = NULL; |
328 | twl6030_irq_chip.irq_set_wake = twl6030_irq_set_wake; | ||
321 | 329 | ||
322 | for (i = irq_base; i < irq_end; i++) { | 330 | for (i = irq_base; i < irq_end; i++) { |
323 | irq_set_chip_and_handler(i, &twl6030_irq_chip, | 331 | irq_set_chip_and_handler(i, &twl6030_irq_chip, |
324 | handle_simple_irq); | 332 | handle_simple_irq); |
333 | irq_set_chip_data(i, (void *)irq_num); | ||
325 | activate_irq(i); | 334 | activate_irq(i); |
326 | } | 335 | } |
327 | 336 | ||