ASoC: wm8994: Fix PM disable depth imbalance on error
authorZhang Qilong <zhangqilong3@huawei.com>
Wed, 11 Nov 2020 04:13:24 +0000 (12:13 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 11 Nov 2020 12:35:08 +0000 (12:35 +0000)
The pm_runtime_enable will increase power disable depth. Thus
a pairing decrement is needed on the error handling path to
keep it balanced according to context.

Fixes: 57e265c8d71fb ("ASoC: wm8994: Move runtime PM init to platform device init")
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20201111041326.1257558-2-zhangqilong3@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm8994.c

index fc9ea19..f578841 100644 (file)
@@ -4645,8 +4645,12 @@ static int wm8994_probe(struct platform_device *pdev)
        pm_runtime_enable(&pdev->dev);
        pm_runtime_idle(&pdev->dev);
 
-       return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8994,
+       ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8994,
                        wm8994_dai, ARRAY_SIZE(wm8994_dai));
+       if (ret < 0)
+               pm_runtime_disable(&pdev->dev);
+
+       return ret;
 }
 
 static int wm8994_remove(struct platform_device *pdev)