diff options
author | Kamlakant Patel <kamlakant.patel@broadcom.com> | 2016-06-05 11:30:43 +0300 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2016-06-08 11:52:49 +0300 |
commit | 1630a0624a1b8e8d8d9c0cb1a584c5a9d4671101 (patch) | |
tree | 3cb9f97f14ec1ab71c0d5dcad76780a48303671a /drivers/gpio | |
parent | 1bdb5c8e03f1dd657d8afdbd50910eaebfc822e4 (diff) | |
download | linux-1630a0624a1b8e8d8d9c0cb1a584c5a9d4671101.tar.xz |
gpio: xlp: Fix vulcan IRQ descriptor allocation
irq_alloc_descs need not be called in case of Vulcan, where we use
a dynamic IRQ range for GPIO interrupt numbers.
Update code not to call irq_alloc_descs and pass 0 as irq_base in
case of Vulcan.
Signed-off-by: Kamlakant Patel <kamlakant.patel@broadcom.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpio-xlp.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-xlp.c b/drivers/gpio/gpio-xlp.c index 1a33a19d95b9..6acf8aa3b02d 100644 --- a/drivers/gpio/gpio-xlp.c +++ b/drivers/gpio/gpio-xlp.c @@ -388,14 +388,16 @@ static int xlp_gpio_probe(struct platform_device *pdev) gc->get = xlp_gpio_get; spin_lock_init(&priv->lock); - /* XLP has fixed IRQ range for GPIO interrupts */ - if (soc_type == GPIO_VARIANT_VULCAN) - irq_base = irq_alloc_descs(-1, 0, gc->ngpio, 0); - else + + /* XLP(MIPS) has fixed range for GPIO IRQs, Vulcan(ARM64) does not */ + if (soc_type != GPIO_VARIANT_VULCAN) { irq_base = irq_alloc_descs(-1, XLP_GPIO_IRQ_BASE, gc->ngpio, 0); - if (irq_base < 0) { - dev_err(&pdev->dev, "Failed to allocate IRQ numbers\n"); - return irq_base; + if (irq_base < 0) { + dev_err(&pdev->dev, "Failed to allocate IRQ numbers\n"); + return irq_base; + } + } else { + irq_base = 0; } err = gpiochip_add_data(gc, priv); |