pinctrl: microchip-sgpio: Correct the fwnode_irq_get() return value check
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 6 Sep 2022 11:50:21 +0000 (14:50 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 8 Sep 2022 08:34:27 +0000 (10:34 +0200)
fwnode_irq_get() may return all possible signed values, such as Linux
error code. Fix the code to handle this properly.

Fixes: be2dc859abd4 ("pinctrl: pinctrl-microchip-sgpio: Add irq support (for sparx5)")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Michael Walle <michael@walle.cc>
Link: https://lore.kernel.org/r/20220906115021.8661-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-microchip-sgpio.c

index 6f55bf7..0771b74 100644 (file)
@@ -864,9 +864,10 @@ static int microchip_sgpio_register_bank(struct device *dev,
        gc->can_sleep           = !bank->is_input;
 
        if (bank->is_input && priv->properties->flags & SGPIO_FLAGS_HAS_IRQ) {
-               int irq = fwnode_irq_get(fwnode, 0);
+               int irq;
 
-               if (irq) {
+               irq = fwnode_irq_get(fwnode, 0);
+               if (irq > 0) {
                        struct gpio_irq_chip *girq = &gc->irq;
 
                        gpio_irq_chip_set_chip(girq, &microchip_sgpio_irqchip);