ASoC: max98390: Add reset gpio control
authorSteve Lee <steve.lee.analog@gmail.com>
Wed, 20 Apr 2022 04:48:59 +0000 (13:48 +0900)
committerMark Brown <broonie@kernel.org>
Thu, 21 Apr 2022 14:52:56 +0000 (15:52 +0100)
Add reset gpio control to support RESET PIN connected to gpio.

Signed-off-by: Steve Lee <steve.lee.analog@gmail.com>
Acked-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20220420044900.2989-1-steve.lee.analog@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/max98390.c

index d1fed8e..2a6b164 100644 (file)
@@ -1021,6 +1021,7 @@ static int max98390_i2c_probe(struct i2c_client *i2c)
 
        struct max98390_priv *max98390 = NULL;
        struct i2c_adapter *adapter = i2c->adapter;
+       struct gpio_desc *reset_gpio;
 
        ret = i2c_check_functionality(adapter,
                I2C_FUNC_SMBUS_BYTE
@@ -1072,6 +1073,17 @@ static int max98390_i2c_probe(struct i2c_client *i2c)
                return ret;
        }
 
+       reset_gpio = devm_gpiod_get_optional(&i2c->dev,
+                                            "reset", GPIOD_OUT_HIGH);
+
+       /* Power on device */
+       if (reset_gpio) {
+               usleep_range(1000, 2000);
+               /* bring out of reset */
+               gpiod_set_value_cansleep(reset_gpio, 0);
+               usleep_range(1000, 2000);
+       }
+
        /* Check Revision ID */
        ret = regmap_read(max98390->regmap,
                MAX98390_R24FF_REV_ID, &reg);