diff mbox series

[-next,2/4] ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe

Message ID 20220928160116.125020-3-zhangqilong3@huawei.com (mailing list archive)
State Superseded
Commit 86b46bf1feb83898d89a2b4a8d08d21e9ea277a7
Headers show
Series Fix PM disable depth imbalance in probe | expand

Commit Message

Zhang Qilong Sept. 28, 2022, 4:01 p.m. UTC
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. We fix it by moving
pm_runtime_enable to the endding of wm5110_probe.

Fixes:5c6af635fd772 ("ASoC: wm5110: Add audio CODEC driver")
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
---
 sound/soc/codecs/wm5110.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Mark Brown Sept. 28, 2022, 4:06 p.m. UTC | #1
On Thu, Sep 29, 2022 at 12:01:14AM +0800, Zhang Qilong wrote:
> 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. We fix it by moving
> pm_runtime_enable to the endding of wm5110_probe.

As documented in submitting-patches.rst please send patches to the 
maintainers for the code you would like to change.  The normal kernel
workflow is that people apply patches from their inboxes, if they aren't
copied they are likely to not see the patch at all and it is much more
difficult to apply patches.
Charles Keepax Sept. 29, 2022, 9:21 a.m. UTC | #2
On Thu, Sep 29, 2022 at 12:01:14AM +0800, Zhang Qilong wrote:
> 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. We fix it by moving
> pm_runtime_enable to the endding of wm5110_probe.
> 
> Fixes:5c6af635fd772 ("ASoC: wm5110: Add audio CODEC driver")
> Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
> ---

As Mark said please use maintainers and specifically if patching
the Wolfson/Cirrus CODECs please CC
patches@opensource.cirrus.com

>  sound/soc/codecs/wm5110.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c
> index f3f4a10bf0f7..fc634c995834 100644
> --- a/sound/soc/codecs/wm5110.c
> +++ b/sound/soc/codecs/wm5110.c
> @@ -2457,9 +2457,6 @@ static int wm5110_probe(struct platform_device *pdev)
>  		regmap_update_bits(arizona->regmap, wm5110_digital_vu[i],
>  				   WM5110_DIG_VU, WM5110_DIG_VU);
>  
> -	pm_runtime_enable(&pdev->dev);
> -	pm_runtime_idle(&pdev->dev);
> -
>  	ret = arizona_request_irq(arizona, ARIZONA_IRQ_DSP_IRQ1,
>  				  "ADSP2 Compressed IRQ", wm5110_adsp2_irq,
>  				  wm5110);
> @@ -2492,6 +2489,9 @@ static int wm5110_probe(struct platform_device *pdev)
>  		goto err_spk_irqs;
>  	}
>  
> +	pm_runtime_enable(&pdev->dev);
> +	pm_runtime_idle(&pdev->dev);
> +

I think it would be better to keep the pm_runtime enables before
the IRQ and component stuff. Both of those could start triggering
PM runtime events. We probably need to add an extra error path
here for disabling the pm_runtime.

Thanks,
Charles
diff mbox series

Patch

diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c
index f3f4a10bf0f7..fc634c995834 100644
--- a/sound/soc/codecs/wm5110.c
+++ b/sound/soc/codecs/wm5110.c
@@ -2457,9 +2457,6 @@  static int wm5110_probe(struct platform_device *pdev)
 		regmap_update_bits(arizona->regmap, wm5110_digital_vu[i],
 				   WM5110_DIG_VU, WM5110_DIG_VU);
 
-	pm_runtime_enable(&pdev->dev);
-	pm_runtime_idle(&pdev->dev);
-
 	ret = arizona_request_irq(arizona, ARIZONA_IRQ_DSP_IRQ1,
 				  "ADSP2 Compressed IRQ", wm5110_adsp2_irq,
 				  wm5110);
@@ -2492,6 +2489,9 @@  static int wm5110_probe(struct platform_device *pdev)
 		goto err_spk_irqs;
 	}
 
+	pm_runtime_enable(&pdev->dev);
+	pm_runtime_idle(&pdev->dev);
+
 	return ret;
 
 err_spk_irqs: