The driver forgets to call regulator_bulk_disable() in remove like that
in probe failure.
Add the missed call to fix it.
Signed-off-by: Chuhong Yuan <[email protected]>
---
sound/soc/codecs/wm5100.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
index 91cc63c5a51f..d985b2061169 100644
--- a/sound/soc/codecs/wm5100.c
+++ b/sound/soc/codecs/wm5100.c
@@ -2653,6 +2653,8 @@ static int wm5100_i2c_remove(struct i2c_client *i2c)
gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0);
gpio_free(wm5100->pdata.ldo_ena);
}
+ regulator_bulk_disable(ARRAY_SIZE(wm5100->core_supplies),
+ wm5100->core_supplies);
return 0;
}
--
2.24.0
On Fri, Dec 06, 2019 at 03:53:00PM +0800, Chuhong Yuan wrote:
> The driver forgets to call regulator_bulk_disable() in remove like that
> in probe failure.
> Add the missed call to fix it.
>
> Signed-off-by: Chuhong Yuan <[email protected]>
> ---
> sound/soc/codecs/wm5100.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
> index 91cc63c5a51f..d985b2061169 100644
> --- a/sound/soc/codecs/wm5100.c
> +++ b/sound/soc/codecs/wm5100.c
> @@ -2653,6 +2653,8 @@ static int wm5100_i2c_remove(struct i2c_client *i2c)
> gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0);
> gpio_free(wm5100->pdata.ldo_ena);
> }
> + regulator_bulk_disable(ARRAY_SIZE(wm5100->core_supplies),
> + wm5100->core_supplies);
>
This is a bit trickier than this since these regulators are being
controlled by PM runtime, and it doesn't necessarily leave things
in an enabled state when it is disabled.
Thanks,
Charles