diff mbox

ASoC: Codec: wm8962: balance pm_runtime_enable

Message ID 1443588853-8778-1-git-send-email-jiada_wang@mentor.com (mailing list archive)
State Accepted
Commit 57622aef86d21d459e937c72f578050ff4a91af5
Headers show

Commit Message

Wang, Jiada Sept. 30, 2015, 4:54 a.m. UTC
pm_runtime_enable is called in probe to enable runtime PM
for wm8962 codec, but pm_runtime_disable isn't called in remove
callback, nor is called in error path if probe fails after runtime
PM is enabled, this causes unbalanced pm_runtime_enable.

This patch Adds pm_runtime_disable in remove callback and error path,
to balance pm_runtime_enable.

Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
---
 sound/soc/codecs/wm8962.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Charles Keepax Sept. 30, 2015, 7:48 a.m. UTC | #1
On Wed, Sep 30, 2015 at 01:54:13PM +0900, Jiada Wang wrote:
> pm_runtime_enable is called in probe to enable runtime PM
> for wm8962 codec, but pm_runtime_disable isn't called in remove
> callback, nor is called in error path if probe fails after runtime
> PM is enabled, this causes unbalanced pm_runtime_enable.
> 
> This patch Adds pm_runtime_disable in remove callback and error path,
> to balance pm_runtime_enable.
> 
> Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
> ---

Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>

Thanks,
Charles
Mark Brown Sept. 30, 2015, 6:11 p.m. UTC | #2
On Wed, Sep 30, 2015 at 01:54:13PM +0900, Jiada Wang wrote:
> pm_runtime_enable is called in probe to enable runtime PM
> for wm8962 codec, but pm_runtime_disable isn't called in remove
> callback, nor is called in error path if probe fails after runtime
> PM is enabled, this causes unbalanced pm_runtime_enable.

Applied, but please use subject lines matching the normal style for the
subsystem.
diff mbox

Patch

diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index 293e47a..2fbc6ef 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -3760,7 +3760,7 @@  static int wm8962_i2c_probe(struct i2c_client *i2c,
 	ret = snd_soc_register_codec(&i2c->dev,
 				     &soc_codec_dev_wm8962, &wm8962_dai, 1);
 	if (ret < 0)
-		goto err_enable;
+		goto err_pm_runtime;
 
 	regcache_cache_only(wm8962->regmap, true);
 
@@ -3769,6 +3769,8 @@  static int wm8962_i2c_probe(struct i2c_client *i2c,
 
 	return 0;
 
+err_pm_runtime:
+	pm_runtime_disable(&i2c->dev);
 err_enable:
 	regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
 err:
@@ -3778,6 +3780,7 @@  err:
 static int wm8962_i2c_remove(struct i2c_client *client)
 {
 	snd_soc_unregister_codec(&client->dev);
+	pm_runtime_disable(&client->dev);
 	return 0;
 }