RE: [PATCH] ASoC: max98390: Add reset gpio control

From: Sa, Nuno
Date: Thu Mar 10 2022 - 03:49:27 EST


Hi Steve,

> From: Steve Lee <steve.lee.analog@xxxxxxxxx>
> Sent: Thursday, March 10, 2022 9:16 AM
> To: lgirdwood@xxxxxxxxx; broonie@xxxxxxxxxx; perex@xxxxxxxx;
> tiwai@xxxxxxxx; ckeepax@xxxxxxxxxxxxxxxxxxxxx; geert@linux-
> m68k.org; rf@xxxxxxxxxxxxxxxxxxxxxxxxxxx; shumingf@xxxxxxxxxxx;
> srinivas.kandagatla@xxxxxxxxxx; krzk@xxxxxxxxxx; dmurphy@xxxxxx;
> jack.yu@xxxxxxxxxxx; Sa, Nuno <Nuno.Sa@xxxxxxxxxx>;
> steves.lee@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> alsa-devel@xxxxxxxxxxxxxxxx
> Cc: Steve Lee <steve.lee.analog@xxxxxxxxx>
> 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@xxxxxxxxx>
> ---
> 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á