Message ID | 20220310081548.31846-1-steve.lee.analog@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ASoC: max98390: Add reset gpio control | expand |
On Thu, Mar 10, 2022 at 5:48 PM Sa, Nuno <Nuno.Sa@analog.com> wrote: > > Hi Steve, > > > From: Steve Lee <steve.lee.analog@gmail.com> > > Sent: Thursday, March 10, 2022 9:16 AM > > To: lgirdwood@gmail.com; broonie@kernel.org; perex@perex.cz; > > tiwai@suse.com; ckeepax@opensource.cirrus.com; geert@linux- > > m68k.org; rf@opensource.wolfsonmicro.com; shumingf@realtek.com; > > srinivas.kandagatla@linaro.org; krzk@kernel.org; dmurphy@ti.com; > > jack.yu@realtek.com; Sa, Nuno <Nuno.Sa@analog.com>; > > steves.lee@maximintegrated.com; linux-kernel@vger.kernel.org; > > alsa-devel@alsa-project.org > > Cc: Steve Lee <steve.lee.analog@gmail.com> > > Subject: [PATCH] ASoC: max98390: Add reset gpio control > > > > [External] > > > > Add reset gpio control to support RESET PIN connected to gpio. > > > > Signed-off-by: Steve Lee <steve.lee.analog@gmail.com> > > --- > > sound/soc/codecs/max98390.c | 18 ++++++++++++++++++ > > sound/soc/codecs/max98390.h | 1 + > > 2 files changed, 19 insertions(+) > > > > diff --git a/sound/soc/codecs/max98390.c > > b/sound/soc/codecs/max98390.c > > index b392567c2b3e..574d8d5f1119 100644 > > --- a/sound/soc/codecs/max98390.c > > +++ b/sound/soc/codecs/max98390.c > > @@ -1073,6 +1073,24 @@ static int max98390_i2c_probe(struct > > i2c_client *i2c, > > return ret; > > } > > > > + max98390->reset_gpio = of_get_named_gpio(i2c- > > >dev.of_node, > > + "maxim,reset-gpios", 0); > > Why not using devm_gpiod_get_optional()? We could request the pin > already in the asserted state and make the code slightly better... > > /* I guess there's no need to save it in our struct as we only use it here? */ > struct gpio_desc *reset_gpio; > > reset_gpio = devm_gpiod_get_optional(&i2c->dev, "reset", GPIOD_OUT_HIGH); > if (reset_gpio) { > usleep_range(1000, 2000); > /* bring out of reset */ > gpio_direction_output(max98390->reset_gpio, 0); > usleep_range(1000, 2000); > } > > Also, do we have this on the bindings doc? If not, it should be done on a second > patch on this series... > > - Nuno Sá > Thanks for comment on this patch. I will check and update as commented.
On Thu, Mar 10, 2022 at 8:29 PM Mark Brown <broonie@kernel.org> wrote: > > On Thu, Mar 10, 2022 at 08:48:09AM +0000, Sa, Nuno wrote: > > > > + max98390->reset_gpio = of_get_named_gpio(i2c- > > > >dev.of_node, > > > + "maxim,reset-gpios", 0); > > > Why not using devm_gpiod_get_optional()? We could request the pin > > already in the asserted state and make the code slightly better... > > Yes, and it'd support other firmware interfaces too. We also need an > update to the binding document covering the new property. > > Might also be worth putting the device into reset when unloading the > driver, though that's not essential. I will check and update v2 patch.
diff --git a/sound/soc/codecs/max98390.c b/sound/soc/codecs/max98390.c index b392567c2b3e..574d8d5f1119 100644 --- a/sound/soc/codecs/max98390.c +++ b/sound/soc/codecs/max98390.c @@ -1073,6 +1073,24 @@ static int max98390_i2c_probe(struct i2c_client *i2c, return ret; } + max98390->reset_gpio = of_get_named_gpio(i2c->dev.of_node, + "maxim,reset-gpios", 0); + + /* Power on device */ + if (gpio_is_valid(max98390->reset_gpio)) { + ret = devm_gpio_request(&i2c->dev, max98390->reset_gpio, + "MAX98390_RESET"); + if (ret) { + dev_err(&i2c->dev, "%s: Failed to request gpio %d\n", + __func__, max98390->reset_gpio); + return -EINVAL; + } + gpio_direction_output(max98390->reset_gpio, 0); + usleep_range(1000, 2000); + gpio_direction_output(max98390->reset_gpio, 1); + usleep_range(1000, 2000); + } + /* Check Revision ID */ ret = regmap_read(max98390->regmap, MAX98390_R24FF_REV_ID, ®); diff --git a/sound/soc/codecs/max98390.h b/sound/soc/codecs/max98390.h index c250740f73a2..5518f2340247 100644 --- a/sound/soc/codecs/max98390.h +++ b/sound/soc/codecs/max98390.h @@ -655,6 +655,7 @@ struct max98390_priv { struct regmap *regmap; + int reset_gpio; unsigned int sysclk; unsigned int master; unsigned int tdm_mode;
Add reset gpio control to support RESET PIN connected to gpio. Signed-off-by: Steve Lee <steve.lee.analog@gmail.com> --- sound/soc/codecs/max98390.c | 18 ++++++++++++++++++ sound/soc/codecs/max98390.h | 1 + 2 files changed, 19 insertions(+)