mfd: twl4030: Make twl4030_exit_irq() return void
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 13 Jan 2022 10:14:30 +0000 (11:14 +0100)
committerLee Jones <lee.jones@linaro.org>
Thu, 28 Apr 2022 16:24:40 +0000 (17:24 +0100)
If twl4030_exit_irq() returns an error, the effect is that the caller
(twl_remove()) forwards the error to the i2c core without unregistering
its dummy slave devices. This only makes the i2c core emit another
error message and then it still removes the device.

In this situation it doesn't make sense to abort the remove cleanup and not
unregister the slave devices. So do that. Then return value is actually
unused and twl4030_exit_irq() can better be changed to return no value at
all.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Link: https://lore.kernel.org/r/20220113101430.12869-3-u.kleine-koenig@pengutronix.de
drivers/mfd/twl-core.c
drivers/mfd/twl-core.h
drivers/mfd/twl4030-irq.c

index d4194faf1cc3589c9f84fb4ee03fb4a5c4939702..bd6659cf3bc036fa399c5a8a58c4bcb95aeb4379 100644 (file)
@@ -1036,16 +1036,12 @@ static void clocks_init(struct device *dev,
 static int twl_remove(struct i2c_client *client)
 {
        unsigned i, num_slaves;
-       int status = 0;
 
        if (twl_class_is_4030())
-               status = twl4030_exit_irq();
+               twl4030_exit_irq();
        else
                twl6030_exit_irq();
 
-       if (status < 0)
-               return status;
-
        num_slaves = twl_get_num_slaves();
        for (i = 0; i < num_slaves; i++) {
                struct twl_client       *twl = &twl_priv->twl_modules[i];
index 1b916d2e87529f997364541161b01f1c6b338986..b4bf6a233bd0cc9a7b6e915bae2ad66af64a9897 100644 (file)
@@ -5,7 +5,7 @@
 extern int twl6030_init_irq(struct device *dev, int irq_num);
 extern void twl6030_exit_irq(void);
 extern int twl4030_init_irq(struct device *dev, int irq_num);
-extern int twl4030_exit_irq(void);
+extern void twl4030_exit_irq(void);
 extern int twl4030_init_chip_irq(const char *chip);
 
 #endif /*  __TWL_CORE_H__ */
index ab417438d1faa4c8f3734ddad4b4c01a2dffa595..4f576f0160a94ee7f34b70863b361dee33357907 100644 (file)
@@ -753,14 +753,11 @@ fail:
        return status;
 }
 
-int twl4030_exit_irq(void)
+void twl4030_exit_irq(void)
 {
        /* FIXME undo twl_init_irq() */
-       if (twl4030_irq_base) {
+       if (twl4030_irq_base)
                pr_err("twl4030: can't yet clean up IRQs?\n");
-               return -ENOSYS;
-       }
-       return 0;
 }
 
 int twl4030_init_chip_irq(const char *chip)