2023-07-23 08:25:58

by Zhang Shurong

[permalink] [raw]
Subject: [PATCH] ASoC: rt5665: add missed regulator_bulk_disable

The driver forgets to call regulator_bulk_disable()

Add the missed call to fix it.

Fixes: 33ada14a26c8 ("ASoC: add rt5665 codec driver")
Signed-off-by: Zhang Shurong <[email protected]>
---
sound/soc/codecs/rt5665.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/sound/soc/codecs/rt5665.c b/sound/soc/codecs/rt5665.c
index 83c367af91da..de36cad8a559 100644
--- a/sound/soc/codecs/rt5665.c
+++ b/sound/soc/codecs/rt5665.c
@@ -4756,6 +4756,13 @@ static void rt5665_calibrate_handler(struct work_struct *work)
rt5665_calibrate(rt5665);
}

+static void rt5665_i2c_disable_regulators(void *data)
+{
+ struct rt5665_priv *rt5665 = data;
+
+ regulator_bulk_disable(ARRAY_SIZE(rt5665->supplies), rt5665->supplies);
+}
+
static int rt5665_i2c_probe(struct i2c_client *i2c)
{
struct rt5665_platform_data *pdata = dev_get_platdata(&i2c->dev);
@@ -4786,6 +4793,11 @@ static int rt5665_i2c_probe(struct i2c_client *i2c)
return ret;
}

+ ret = devm_add_action_or_reset(&i2c->dev, rt5665_i2c_disable_regulators,
+ rt5665);
+ if (ret)
+ return ret;
+
ret = regulator_bulk_enable(ARRAY_SIZE(rt5665->supplies),
rt5665->supplies);
if (ret != 0) {
--
2.41.0




2023-07-23 16:10:13

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: rt5665: add missed regulator_bulk_disable

On Sun, Jul 23, 2023 at 03:07:31PM +0800, Zhang Shurong wrote:

> + ret = devm_add_action_or_reset(&i2c->dev, rt5665_i2c_disable_regulators,
> + rt5665);
> + if (ret)
> + return ret;
> +
> ret = regulator_bulk_enable(ARRAY_SIZE(rt5665->supplies),
> rt5665->supplies);
> if (ret != 0) {

This will attempt to disable the regulators if the initial enable fails
which is a bug.


Attachments:
(No filename) (404.00 B)
signature.asc (499.00 B)
Download all attachments

2023-08-01 17:14:39

by Zhang Shurong

[permalink] [raw]
Subject: Re: [PATCH] ASoC: rt5665: add missed regulator_bulk_disable

在 2023年7月23日星期日 CST 下午11:12:17,Mark Brown 写道:
> On Sun, Jul 23, 2023 at 03:07:31PM +0800, Zhang Shurong wrote:
> > + ret = devm_add_action_or_reset(&i2c->dev,
rt5665_i2c_disable_regulators,
> > + rt5665);
> > + if (ret)
> > + return ret;
> > +
> >
> > ret = regulator_bulk_enable(ARRAY_SIZE(rt5665->supplies),
> >
> > rt5665->supplies);
> >
> > if (ret != 0) {
>
> This will attempt to disable the regulators if the initial enable fails
> which is a bug.
You are right. I will move this to rt5663_i2c_remove() in next version.