diff options
Diffstat (limited to 'drivers/gpio/gpio-rcar.c')
-rw-r--r-- | drivers/gpio/gpio-rcar.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-rcar.c b/drivers/gpio/gpio-rcar.c index d3f15ae93bd3..8b7e719a68c3 100644 --- a/drivers/gpio/gpio-rcar.c +++ b/drivers/gpio/gpio-rcar.c | |||
@@ -169,7 +169,8 @@ static irqreturn_t gpio_rcar_irq_handler(int irq, void *dev_id) | |||
169 | u32 pending; | 169 | u32 pending; |
170 | unsigned int offset, irqs_handled = 0; | 170 | unsigned int offset, irqs_handled = 0; |
171 | 171 | ||
172 | while ((pending = gpio_rcar_read(p, INTDT))) { | 172 | while ((pending = gpio_rcar_read(p, INTDT) & |
173 | gpio_rcar_read(p, INTMSK))) { | ||
173 | offset = __ffs(pending); | 174 | offset = __ffs(pending); |
174 | gpio_rcar_write(p, INTCLR, BIT(offset)); | 175 | gpio_rcar_write(p, INTCLR, BIT(offset)); |
175 | generic_handle_irq(irq_find_mapping(p->irq_domain, offset)); | 176 | generic_handle_irq(irq_find_mapping(p->irq_domain, offset)); |
@@ -381,7 +382,7 @@ static int gpio_rcar_probe(struct platform_device *pdev) | |||
381 | if (!p->irq_domain) { | 382 | if (!p->irq_domain) { |
382 | ret = -ENXIO; | 383 | ret = -ENXIO; |
383 | dev_err(&pdev->dev, "cannot initialize irq domain\n"); | 384 | dev_err(&pdev->dev, "cannot initialize irq domain\n"); |
384 | goto err1; | 385 | goto err0; |
385 | } | 386 | } |
386 | 387 | ||
387 | if (devm_request_irq(&pdev->dev, irq->start, | 388 | if (devm_request_irq(&pdev->dev, irq->start, |