mfd: stmfx: Improve error message triggered by regulator fault in .remove()
Returning a non-zero value in an i2c remove callback results in the i2c core emitting a very generic error message ("remove failed (-ESOMETHING), will be ignored") and as the message indicates not further error handling is done. Instead emit a more specific error message and then return zero in .remove(). The long-term goal is to make the i2c remove prototype return void, making all implementations return 0 is preparatory work for this change. 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/20220214150710.312269-1-u.kleine-koenig@pengutronix.de
This commit is contained in:
Родитель
2a6bacf79b
Коммит
c788f6e6aa
|
@ -392,17 +392,22 @@ err:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int stmfx_chip_exit(struct i2c_client *client)
|
||||
static void stmfx_chip_exit(struct i2c_client *client)
|
||||
{
|
||||
struct stmfx *stmfx = i2c_get_clientdata(client);
|
||||
|
||||
regmap_write(stmfx->map, STMFX_REG_IRQ_SRC_EN, 0);
|
||||
regmap_write(stmfx->map, STMFX_REG_SYS_CTRL, 0);
|
||||
|
||||
if (stmfx->vdd)
|
||||
return regulator_disable(stmfx->vdd);
|
||||
if (stmfx->vdd) {
|
||||
int ret;
|
||||
|
||||
return 0;
|
||||
ret = regulator_disable(stmfx->vdd);
|
||||
if (ret)
|
||||
dev_err(&client->dev,
|
||||
"Failed to disable vdd regulator: %pe\n",
|
||||
ERR_PTR(ret));
|
||||
}
|
||||
}
|
||||
|
||||
static int stmfx_probe(struct i2c_client *client,
|
||||
|
@ -466,7 +471,9 @@ static int stmfx_remove(struct i2c_client *client)
|
|||
{
|
||||
stmfx_irq_exit(client);
|
||||
|
||||
return stmfx_chip_exit(client);
|
||||
stmfx_chip_exit(client);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
|
Загрузка…
Ссылка в новой задаче