Skip to content

Commit

Permalink
mfd: twl4030: Make twl4030_exit_irq() return void
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Uwe Kleine-König authored and Lee Jones committed Apr 28, 2022
1 parent b6f2943 commit 724c3be
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 11 deletions.
6 changes: 1 addition & 5 deletions drivers/mfd/twl-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down
2 changes: 1 addition & 1 deletion drivers/mfd/twl-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -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__ */
7 changes: 2 additions & 5 deletions drivers/mfd/twl4030-irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -753,14 +753,11 @@ int twl4030_init_irq(struct device *dev, int irq_num)
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)
Expand Down

0 comments on commit 724c3be

Please sign in to comment.