[alsa-devel] [PATCH 0/1] ASoC: max98090: add shutdown callback for max98090
Tested on veyron devices,play music then shutdown device,here carefully to speaker or headphone.
Caesar Wang (1): ASoC: max98090: add shutdown callback for max98090
sound/soc/codecs/max98090.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
To fix pop noise when shutdown,the pop noise during shutdown is the pmic cutoff power of codec without any notice.
Signed-off-by: jay.xu xjq@rock-chips.com Signed-off-by: zhengxing zhengxing@rock-chips.com Signed-off-by: Caesar Wang wxt@rock-chips.com
Serien-cc: linux-kernel@vger.kernel.org Serien-cc: devicetree@vger.kernel.org Serien-cc: dianders@chromium.org
---
sound/soc/codecs/max98090.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index b112b1c..066954a0 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c @@ -2611,6 +2611,22 @@ static int max98090_i2c_remove(struct i2c_client *client) return 0; }
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{ + struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev); + + dev_info(&i2c->dev, "shut down device\n"); + + /* Enable volume smoothing, disable zero cross. This will cause + * a quick 40ms ramp to mute on shutdown. + */ + regmap_write(max98090->regmap, + M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK); + regmap_write(max98090->regmap, + M98090_REG_DEVICE_SHUTDOWN, 0x00); + msleep(40); +} + #ifdef CONFIG_PM static int max98090_runtime_resume(struct device *dev) { @@ -2697,6 +2713,7 @@ static struct i2c_driver max98090_i2c_driver = { }, .probe = max98090_i2c_probe, .remove = max98090_i2c_remove, + .shutdown = max98090_i2c_shutdown, .id_table = max98090_i2c_id, };
Hi Caesar,
Am Mittwoch, 8. April 2015, 16:52:08 schrieb Caesar Wang:
To fix pop noise when shutdown,the pop noise during shutdown is the pmic cutoff power of codec without any notice.
Signed-off-by: jay.xu xjq@rock-chips.com Signed-off-by: zhengxing zhengxing@rock-chips.com Signed-off-by: Caesar Wang wxt@rock-chips.com
Serien-cc: linux-kernel@vger.kernel.org Serien-cc: devicetree@vger.kernel.org Serien-cc: dianders@chromium.org
sound/soc/codecs/max98090.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index b112b1c..066954a0 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c @@ -2611,6 +2611,22 @@ static int max98090_i2c_remove(struct i2c_client *client) return 0; }
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{
- struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);
- dev_info(&i2c->dev, "shut down device\n");
is this dev_info really necessary? dev_dbg might be better, or leave it out completely, as it doesn't really provide any additional benefit.
- /* Enable volume smoothing, disable zero cross. This will cause
* a quick 40ms ramp to mute on shutdown.
*/
Comment style is off ... should be
/* * Enable volume smoothing, disable zero cross. This will cause * a quick 40ms ramp to mute on shutdown. */
- regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK);
- regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
- msleep(40);
+}
#ifdef CONFIG_PM static int max98090_runtime_resume(struct device *dev) { @@ -2697,6 +2713,7 @@ static struct i2c_driver max98090_i2c_driver = { }, .probe = max98090_i2c_probe, .remove = max98090_i2c_remove,
- .shutdown = max98090_i2c_shutdown, .id_table = max98090_i2c_id,
};
Heiko,
在 2015年04月08日 17:25, Heiko Stübner 写道:
Hi Caesar,
Am Mittwoch, 8. April 2015, 16:52:08 schrieb Caesar Wang:
To fix pop noise when shutdown,the pop noise during shutdown is the pmic cutoff power of codec without any notice.
Signed-off-by: jay.xu xjq@rock-chips.com Signed-off-by: zhengxing zhengxing@rock-chips.com Signed-off-by: Caesar Wang wxt@rock-chips.com
Serien-cc: linux-kernel@vger.kernel.org Serien-cc: devicetree@vger.kernel.org Serien-cc: dianders@chromium.org
sound/soc/codecs/max98090.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index b112b1c..066954a0 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c @@ -2611,6 +2611,22 @@ static int max98090_i2c_remove(struct i2c_client *client) return 0; }
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{
- struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);
- dev_info(&i2c->dev, "shut down device\n");
is this dev_info really necessary? dev_dbg might be better, or leave it out completely, as it doesn't really provide any additional benefit.
As Mark suggestion, I will remove it.
- /* Enable volume smoothing, disable zero cross. This will cause
* a quick 40ms ramp to mute on shutdown.
*/
Comment style is off ... should be
/*
- Enable volume smoothing, disable zero cross. This will cause
- a quick 40ms ramp to mute on shutdown.
*/
Done
- regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK);
- regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
- msleep(40);
+}
- #ifdef CONFIG_PM static int max98090_runtime_resume(struct device *dev) {
@@ -2697,6 +2713,7 @@ static struct i2c_driver max98090_i2c_driver = { }, .probe = max98090_i2c_probe, .remove = max98090_i2c_remove,
- .shutdown = max98090_i2c_shutdown, .id_table = max98090_i2c_id, };
On Wed, Apr 08, 2015 at 04:52:08PM +0800, Caesar Wang wrote:
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{
- struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);
- dev_info(&i2c->dev, "shut down device\n");
Remove this, it's adding noise.
- /* Enable volume smoothing, disable zero cross. This will cause
* a quick 40ms ramp to mute on shutdown.
*/
- regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK);
- regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
- msleep(40);
+}
This is OK but equivalent code should be being added to the driver remove path as the same thing should be happening there.
Mark,
在 2015年04月08日 17:50, Mark Brown 写道:
On Wed, Apr 08, 2015 at 04:52:08PM +0800, Caesar Wang wrote:
+static void max98090_i2c_shutdown(struct i2c_client *i2c) +{
- struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);
- dev_info(&i2c->dev, "shut down device\n");
Remove this, it's adding noise.
Done
- /* Enable volume smoothing, disable zero cross. This will cause
* a quick 40ms ramp to mute on shutdown.
*/
- regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK);
- regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
- msleep(40);
+}
This is OK but equivalent code should be being added to the driver remove path as the same thing should be happening there.
Yeah.I will fix it in v2 patch.
Thanks!
On Wed, Apr 08, 2015 at 04:52:07PM +0800, Caesar Wang wrote:
Tested on veyron devices,play music then shutdown device,here carefully to speaker or headphone.
Caesar Wang (1): ASoC: max98090: add shutdown callback for max98090
Don't send cover letters for single patches, if there's anything that needs saying it should either be in the changelog or after the --- in the mail. If there's any content in the cover letter that's usually a sign that the changelog on the actual patch needs improving.
participants (3)
-
Caesar Wang
-
Heiko Stübner
-
Mark Brown