diff options
Diffstat (limited to 'drivers/mfd/wm8350-irq.c')
-rw-r--r-- | drivers/mfd/wm8350-irq.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/mfd/wm8350-irq.c b/drivers/mfd/wm8350-irq.c index ed4b22a167b3..8a1fafd0bf7d 100644 --- a/drivers/mfd/wm8350-irq.c +++ b/drivers/mfd/wm8350-irq.c | |||
@@ -473,17 +473,13 @@ int wm8350_irq_init(struct wm8350 *wm8350, int irq, | |||
473 | { | 473 | { |
474 | int ret, cur_irq, i; | 474 | int ret, cur_irq, i; |
475 | int flags = IRQF_ONESHOT; | 475 | int flags = IRQF_ONESHOT; |
476 | int irq_base = -1; | ||
476 | 477 | ||
477 | if (!irq) { | 478 | if (!irq) { |
478 | dev_warn(wm8350->dev, "No interrupt support, no core IRQ\n"); | 479 | dev_warn(wm8350->dev, "No interrupt support, no core IRQ\n"); |
479 | return 0; | 480 | return 0; |
480 | } | 481 | } |
481 | 482 | ||
482 | if (!pdata || !pdata->irq_base) { | ||
483 | dev_warn(wm8350->dev, "No interrupt support, no IRQ base\n"); | ||
484 | return 0; | ||
485 | } | ||
486 | |||
487 | /* Mask top level interrupts */ | 483 | /* Mask top level interrupts */ |
488 | wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0xFFFF); | 484 | wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0xFFFF); |
489 | 485 | ||
@@ -502,7 +498,17 @@ int wm8350_irq_init(struct wm8350 *wm8350, int irq, | |||
502 | wm8350->chip_irq = irq; | 498 | wm8350->chip_irq = irq; |
503 | wm8350->irq_base = pdata->irq_base; | 499 | wm8350->irq_base = pdata->irq_base; |
504 | 500 | ||
505 | if (pdata->irq_high) { | 501 | if (pdata && pdata->irq_base > 0) |
502 | irq_base = pdata->irq_base; | ||
503 | |||
504 | wm8350->irq_base = irq_alloc_descs(irq_base, 0, ARRAY_SIZE(wm8350_irqs), 0); | ||
505 | if (wm8350->irq_base < 0) { | ||
506 | dev_warn(wm8350->dev, "Allocating irqs failed with %d\n", | ||
507 | wm8350->irq_base); | ||
508 | return 0; | ||
509 | } | ||
510 | |||
511 | if (pdata && pdata->irq_high) { | ||
506 | flags |= IRQF_TRIGGER_HIGH; | 512 | flags |= IRQF_TRIGGER_HIGH; |
507 | 513 | ||
508 | wm8350_set_bits(wm8350, WM8350_SYSTEM_CONTROL_1, | 514 | wm8350_set_bits(wm8350, WM8350_SYSTEM_CONTROL_1, |