ASoC: cs4265: Add a remove() function
authorFabio Estevam <festevam@denx.de>
Tue, 4 Jan 2022 18:06:13 +0000 (15:06 -0300)
committerMark Brown <broonie@kernel.org>
Wed, 5 Jan 2022 13:53:58 +0000 (13:53 +0000)
When the reset_gpio GPIO is used, it is better to put the codec
back into reset state when the driver unbinds.

Add a remove() function to accomplish that.

Suggested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Fabio Estevam <festevam@denx.de>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220104180613.639317-1-festevam@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs4265.c

index b890021..4aaee18 100644 (file)
@@ -626,6 +626,16 @@ static int cs4265_i2c_probe(struct i2c_client *i2c_client,
                        ARRAY_SIZE(cs4265_dai));
 }
 
+static int cs4265_i2c_remove(struct i2c_client *i2c)
+{
+       struct cs4265_private *cs4265 = i2c_get_clientdata(i2c);
+
+       if (cs4265->reset_gpio)
+               gpiod_set_value_cansleep(cs4265->reset_gpio, 0);
+
+       return 0;
+}
+
 static const struct of_device_id cs4265_of_match[] = {
        { .compatible = "cirrus,cs4265", },
        { }
@@ -645,6 +655,7 @@ static struct i2c_driver cs4265_i2c_driver = {
        },
        .id_table = cs4265_id,
        .probe =    cs4265_i2c_probe,
+       .remove =   cs4265_i2c_remove,
 };
 
 module_i2c_driver(cs4265_i2c_driver);