diff mbox series

[5/8] ASoC: codecs: lpass: register mclk after runtime pm

Message ID 20230209122806.18923-6-srinivas.kandagatla@linaro.org
State Accepted
Commit 1dc3459009c33e335f0d62b84dd39a6bbd7fd5d2
Headers show
Series ASoC: qcom: q6dsp and lpass codec stablity fixes | expand

Commit Message

Srinivas Kandagatla Feb. 9, 2023, 12:28 p.m. UTC
move mclk out registration after runtime pm is enabled so that the
clk framework can resume the codec if it requires to enable the mclk out.

Fixes: c96baa2949b2 ("ASoC: codecs: wsa-macro: add runtime pm support")
Fixes: 72ad25eabda0 ("ASoC: codecs: va-macro: add runtime pm support")
Fixes: 366ff79ed539 ("ASoC: codecs: rx-macro: add runtime pm support")
Fixes: 1fb83bc5cf64 ("ASoC: codecs: tx-macro: add runtime pm support")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
---
 sound/soc/codecs/lpass-rx-macro.c  |  8 ++++----
 sound/soc/codecs/lpass-tx-macro.c  |  8 ++++----
 sound/soc/codecs/lpass-va-macro.c  | 20 ++++++++++----------
 sound/soc/codecs/lpass-wsa-macro.c |  9 ++++-----
 4 files changed, 22 insertions(+), 23 deletions(-)

Comments

Luca Weiss March 24, 2023, 11:22 a.m. UTC | #1
Hi Srinivas,

On Thu Feb 9, 2023 at 1:28 PM CET, Srinivas Kandagatla wrote:
> move mclk out registration after runtime pm is enabled so that the
> clk framework can resume the codec if it requires to enable the mclk out.
>
> Fixes: c96baa2949b2 ("ASoC: codecs: wsa-macro: add runtime pm support")
> Fixes: 72ad25eabda0 ("ASoC: codecs: va-macro: add runtime pm support")
> Fixes: 366ff79ed539 ("ASoC: codecs: rx-macro: add runtime pm support")
> Fixes: 1fb83bc5cf64 ("ASoC: codecs: tx-macro: add runtime pm support")
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

I see the following remoteproc crash with this patch in on
sm6350/sm7225-fairphone-fp4.

To be clear, all the audio parts for that SoC are not upstream (yet) and
there's still many issues to solve so not sure if it's actually my fault.

Anyways, getting this crash after starting adsp.

[   97.212943] qcom_q6v5_pas 3000000.remoteproc: fatal error received: ABT_dal.c:287:ABTimeout: AHB Bus hang is detected, Number of bus hang detected := 1 , addr0 = 0x3370000 , addr1 = 0x0!!!
[   97.212995] remoteproc remoteproc0: crash detected in 3000000.remoteproc: type fatal error
[   97.213015] remoteproc remoteproc0: handling crash #1 in 3000000.remoteproc
[   97.213022] remoteproc remoteproc0: recovering 3000000.remoteproc

This happens just after some clocks on the adsp get disabled, this is
from my own debug prints:
[   97.189097] q6afe_set_lpass_clock: clk_id=780, attri=1, clk_root=0, freq=0
[   97.189426] q6afe_set_lpass_clock: clk_id=781, attri=1, clk_root=0, freq=0

And then a couple of seconds later the whole phone just crashes into the
900e mode.

Regards
Luca


> ---
>  sound/soc/codecs/lpass-rx-macro.c  |  8 ++++----
>  sound/soc/codecs/lpass-tx-macro.c  |  8 ++++----
>  sound/soc/codecs/lpass-va-macro.c  | 20 ++++++++++----------
>  sound/soc/codecs/lpass-wsa-macro.c |  9 ++++-----
>  4 files changed, 22 insertions(+), 23 deletions(-)
>
> diff --git a/sound/soc/codecs/lpass-rx-macro.c b/sound/soc/codecs/lpass-rx-macro.c
> index a9ef9d5ffcc5..dd6970d5eb8d 100644
> --- a/sound/soc/codecs/lpass-rx-macro.c
> +++ b/sound/soc/codecs/lpass-rx-macro.c
> @@ -3601,10 +3601,6 @@ static int rx_macro_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_fsgen;
>  
> -	ret = rx_macro_register_mclk_output(rx);
> -	if (ret)
> -		goto err_clkout;
> -
>  	ret = devm_snd_soc_register_component(dev, &rx_macro_component_drv,
>  					      rx_macro_dai,
>  					      ARRAY_SIZE(rx_macro_dai));
> @@ -3618,6 +3614,10 @@ static int rx_macro_probe(struct platform_device *pdev)
>  	pm_runtime_set_active(dev);
>  	pm_runtime_enable(dev);
>  
> +	ret = rx_macro_register_mclk_output(rx);
> +	if (ret)
> +		goto err_clkout;
> +
>  	return 0;
>  
>  err_clkout:
> diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c
> index 2ef62d6edc30..b9475ba55e20 100644
> --- a/sound/soc/codecs/lpass-tx-macro.c
> +++ b/sound/soc/codecs/lpass-tx-macro.c
> @@ -2036,10 +2036,6 @@ static int tx_macro_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_fsgen;
>  
> -	ret = tx_macro_register_mclk_output(tx);
> -	if (ret)
> -		goto err_clkout;
> -
>  	ret = devm_snd_soc_register_component(dev, &tx_macro_component_drv,
>  					      tx_macro_dai,
>  					      ARRAY_SIZE(tx_macro_dai));
> @@ -2052,6 +2048,10 @@ static int tx_macro_probe(struct platform_device *pdev)
>  	pm_runtime_set_active(dev);
>  	pm_runtime_enable(dev);
>  
> +	ret = tx_macro_register_mclk_output(tx);
> +	if (ret)
> +		goto err_clkout;
> +
>  	return 0;
>  
>  err_clkout:
> diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c
> index b0b6cf29cba3..1623ba78ddb3 100644
> --- a/sound/soc/codecs/lpass-va-macro.c
> +++ b/sound/soc/codecs/lpass-va-macro.c
> @@ -1524,16 +1524,6 @@ static int va_macro_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_mclk;
>  
> -	ret = va_macro_register_fsgen_output(va);
> -	if (ret)
> -		goto err_clkout;
> -
> -	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
> -	if (IS_ERR(va->fsgen)) {
> -		ret = PTR_ERR(va->fsgen);
> -		goto err_clkout;
> -	}
> -
>  	if (va->has_swr_master) {
>  		/* Set default CLK div to 1 */
>  		regmap_update_bits(va->regmap, CDC_VA_TOP_CSR_SWR_MIC_CTL0,
> @@ -1560,6 +1550,16 @@ static int va_macro_probe(struct platform_device *pdev)
>  	pm_runtime_set_active(dev);
>  	pm_runtime_enable(dev);
>  
> +	ret = va_macro_register_fsgen_output(va);
> +	if (ret)
> +		goto err_clkout;
> +
> +	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
> +	if (IS_ERR(va->fsgen)) {
> +		ret = PTR_ERR(va->fsgen);
> +		goto err_clkout;
> +	}
> +
>  	return 0;
>  
>  err_clkout:
> diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
> index 5cfe96f6e430..c0b86d69c72e 100644
> --- a/sound/soc/codecs/lpass-wsa-macro.c
> +++ b/sound/soc/codecs/lpass-wsa-macro.c
> @@ -2451,11 +2451,6 @@ static int wsa_macro_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_fsgen;
>  
> -	ret = wsa_macro_register_mclk_output(wsa);
> -	if (ret)
> -		goto err_clkout;
> -
> -
>  	ret = devm_snd_soc_register_component(dev, &wsa_macro_component_drv,
>  					      wsa_macro_dai,
>  					      ARRAY_SIZE(wsa_macro_dai));
> @@ -2468,6 +2463,10 @@ static int wsa_macro_probe(struct platform_device *pdev)
>  	pm_runtime_set_active(dev);
>  	pm_runtime_enable(dev);
>  
> +	ret = wsa_macro_register_mclk_output(wsa);
> +	if (ret)
> +		goto err_clkout;
> +
>  	return 0;
>  
>  err_clkout:
> -- 
> 2.21.0
Srinivas Kandagatla March 24, 2023, 1:40 p.m. UTC | #2
Hi Luca,

On 24/03/2023 11:22, Luca Weiss wrote:
> Hi Srinivas,
> 
> On Thu Feb 9, 2023 at 1:28 PM CET, Srinivas Kandagatla wrote:
>> move mclk out registration after runtime pm is enabled so that the
>> clk framework can resume the codec if it requires to enable the mclk out.
>>
>> Fixes: c96baa2949b2 ("ASoC: codecs: wsa-macro: add runtime pm support")
>> Fixes: 72ad25eabda0 ("ASoC: codecs: va-macro: add runtime pm support")
>> Fixes: 366ff79ed539 ("ASoC: codecs: rx-macro: add runtime pm support")
>> Fixes: 1fb83bc5cf64 ("ASoC: codecs: tx-macro: add runtime pm support")
>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> 
> I see the following remoteproc crash with this patch in on
> sm6350/sm7225-fairphone-fp4.
> 
> To be clear, all the audio parts for that SoC are not upstream (yet) and
> there's still many issues to solve so not sure if it's actually my fault.
> 

please try this patch Amit did report this issue before

https://lore.kernel.org/lkml/20230323110125.23790-1-srinivas.kandagatla@linaro.org/


thanks,
srini
> Anyways, getting this crash after starting adsp.
> 
> [   97.212943] qcom_q6v5_pas 3000000.remoteproc: fatal error received: ABT_dal.c:287:ABTimeout: AHB Bus hang is detected, Number of bus hang detected := 1 , addr0 = 0x3370000 , addr1 = 0x0!!!
> [   97.212995] remoteproc remoteproc0: crash detected in 3000000.remoteproc: type fatal error
> [   97.213015] remoteproc remoteproc0: handling crash #1 in 3000000.remoteproc
> [   97.213022] remoteproc remoteproc0: recovering 3000000.remoteproc
> 
> This happens just after some clocks on the adsp get disabled, this is
> from my own debug prints:
> [   97.189097] q6afe_set_lpass_clock: clk_id=780, attri=1, clk_root=0, freq=0
> [   97.189426] q6afe_set_lpass_clock: clk_id=781, attri=1, clk_root=0, freq=0
> 
> And then a couple of seconds later the whole phone just crashes into the
> 900e mode.
> 
> Regards
> Luca
> 
> 
>> ---
>>   sound/soc/codecs/lpass-rx-macro.c  |  8 ++++----
>>   sound/soc/codecs/lpass-tx-macro.c  |  8 ++++----
>>   sound/soc/codecs/lpass-va-macro.c  | 20 ++++++++++----------
>>   sound/soc/codecs/lpass-wsa-macro.c |  9 ++++-----
>>   4 files changed, 22 insertions(+), 23 deletions(-)
>>
>> diff --git a/sound/soc/codecs/lpass-rx-macro.c b/sound/soc/codecs/lpass-rx-macro.c
>> index a9ef9d5ffcc5..dd6970d5eb8d 100644
>> --- a/sound/soc/codecs/lpass-rx-macro.c
>> +++ b/sound/soc/codecs/lpass-rx-macro.c
>> @@ -3601,10 +3601,6 @@ static int rx_macro_probe(struct platform_device *pdev)
>>   	if (ret)
>>   		goto err_fsgen;
>>   
>> -	ret = rx_macro_register_mclk_output(rx);
>> -	if (ret)
>> -		goto err_clkout;
>> -
>>   	ret = devm_snd_soc_register_component(dev, &rx_macro_component_drv,
>>   					      rx_macro_dai,
>>   					      ARRAY_SIZE(rx_macro_dai));
>> @@ -3618,6 +3614,10 @@ static int rx_macro_probe(struct platform_device *pdev)
>>   	pm_runtime_set_active(dev);
>>   	pm_runtime_enable(dev);
>>   
>> +	ret = rx_macro_register_mclk_output(rx);
>> +	if (ret)
>> +		goto err_clkout;
>> +
>>   	return 0;
>>   
>>   err_clkout:
>> diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c
>> index 2ef62d6edc30..b9475ba55e20 100644
>> --- a/sound/soc/codecs/lpass-tx-macro.c
>> +++ b/sound/soc/codecs/lpass-tx-macro.c
>> @@ -2036,10 +2036,6 @@ static int tx_macro_probe(struct platform_device *pdev)
>>   	if (ret)
>>   		goto err_fsgen;
>>   
>> -	ret = tx_macro_register_mclk_output(tx);
>> -	if (ret)
>> -		goto err_clkout;
>> -
>>   	ret = devm_snd_soc_register_component(dev, &tx_macro_component_drv,
>>   					      tx_macro_dai,
>>   					      ARRAY_SIZE(tx_macro_dai));
>> @@ -2052,6 +2048,10 @@ static int tx_macro_probe(struct platform_device *pdev)
>>   	pm_runtime_set_active(dev);
>>   	pm_runtime_enable(dev);
>>   
>> +	ret = tx_macro_register_mclk_output(tx);
>> +	if (ret)
>> +		goto err_clkout;
>> +
>>   	return 0;
>>   
>>   err_clkout:
>> diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c
>> index b0b6cf29cba3..1623ba78ddb3 100644
>> --- a/sound/soc/codecs/lpass-va-macro.c
>> +++ b/sound/soc/codecs/lpass-va-macro.c
>> @@ -1524,16 +1524,6 @@ static int va_macro_probe(struct platform_device *pdev)
>>   	if (ret)
>>   		goto err_mclk;
>>   
>> -	ret = va_macro_register_fsgen_output(va);
>> -	if (ret)
>> -		goto err_clkout;
>> -
>> -	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
>> -	if (IS_ERR(va->fsgen)) {
>> -		ret = PTR_ERR(va->fsgen);
>> -		goto err_clkout;
>> -	}
>> -
>>   	if (va->has_swr_master) {
>>   		/* Set default CLK div to 1 */
>>   		regmap_update_bits(va->regmap, CDC_VA_TOP_CSR_SWR_MIC_CTL0,
>> @@ -1560,6 +1550,16 @@ static int va_macro_probe(struct platform_device *pdev)
>>   	pm_runtime_set_active(dev);
>>   	pm_runtime_enable(dev);
>>   
>> +	ret = va_macro_register_fsgen_output(va);
>> +	if (ret)
>> +		goto err_clkout;
>> +
>> +	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
>> +	if (IS_ERR(va->fsgen)) {
>> +		ret = PTR_ERR(va->fsgen);
>> +		goto err_clkout;
>> +	}
>> +
>>   	return 0;
>>   
>>   err_clkout:
>> diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
>> index 5cfe96f6e430..c0b86d69c72e 100644
>> --- a/sound/soc/codecs/lpass-wsa-macro.c
>> +++ b/sound/soc/codecs/lpass-wsa-macro.c
>> @@ -2451,11 +2451,6 @@ static int wsa_macro_probe(struct platform_device *pdev)
>>   	if (ret)
>>   		goto err_fsgen;
>>   
>> -	ret = wsa_macro_register_mclk_output(wsa);
>> -	if (ret)
>> -		goto err_clkout;
>> -
>> -
>>   	ret = devm_snd_soc_register_component(dev, &wsa_macro_component_drv,
>>   					      wsa_macro_dai,
>>   					      ARRAY_SIZE(wsa_macro_dai));
>> @@ -2468,6 +2463,10 @@ static int wsa_macro_probe(struct platform_device *pdev)
>>   	pm_runtime_set_active(dev);
>>   	pm_runtime_enable(dev);
>>   
>> +	ret = wsa_macro_register_mclk_output(wsa);
>> +	if (ret)
>> +		goto err_clkout;
>> +
>>   	return 0;
>>   
>>   err_clkout:
>> -- 
>> 2.21.0
>
Luca Weiss March 31, 2023, 11:42 a.m. UTC | #3
On Fri Mar 24, 2023 at 2:40 PM CET, Srinivas Kandagatla wrote:
> Hi Luca,
>
> On 24/03/2023 11:22, Luca Weiss wrote:
> > Hi Srinivas,
> > 
> > On Thu Feb 9, 2023 at 1:28 PM CET, Srinivas Kandagatla wrote:
> >> move mclk out registration after runtime pm is enabled so that the
> >> clk framework can resume the codec if it requires to enable the mclk out.
> >>
> >> Fixes: c96baa2949b2 ("ASoC: codecs: wsa-macro: add runtime pm support")
> >> Fixes: 72ad25eabda0 ("ASoC: codecs: va-macro: add runtime pm support")
> >> Fixes: 366ff79ed539 ("ASoC: codecs: rx-macro: add runtime pm support")
> >> Fixes: 1fb83bc5cf64 ("ASoC: codecs: tx-macro: add runtime pm support")
> >> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> > 
> > I see the following remoteproc crash with this patch in on
> > sm6350/sm7225-fairphone-fp4.
> > 
> > To be clear, all the audio parts for that SoC are not upstream (yet) and
> > there's still many issues to solve so not sure if it's actually my fault.
> > 
>
> please try this patch Amit did report this issue before
>
> https://lore.kernel.org/lkml/20230323110125.23790-1-srinivas.kandagatla@linaro.org/

Right, that fixes it on sm6350/sm7225 also. Thanks!

Regards
Luca

>
>
> thanks,
> srini
> > Anyways, getting this crash after starting adsp.
> > 
> > [   97.212943] qcom_q6v5_pas 3000000.remoteproc: fatal error received: ABT_dal.c:287:ABTimeout: AHB Bus hang is detected, Number of bus hang detected := 1 , addr0 = 0x3370000 , addr1 = 0x0!!!
> > [   97.212995] remoteproc remoteproc0: crash detected in 3000000.remoteproc: type fatal error
> > [   97.213015] remoteproc remoteproc0: handling crash #1 in 3000000.remoteproc
> > [   97.213022] remoteproc remoteproc0: recovering 3000000.remoteproc
> > 
> > This happens just after some clocks on the adsp get disabled, this is
> > from my own debug prints:
> > [   97.189097] q6afe_set_lpass_clock: clk_id=780, attri=1, clk_root=0, freq=0
> > [   97.189426] q6afe_set_lpass_clock: clk_id=781, attri=1, clk_root=0, freq=0
> > 
> > And then a couple of seconds later the whole phone just crashes into the
> > 900e mode.
> > 
> > Regards
> > Luca
> > 
> > 
> >> ---
> >>   sound/soc/codecs/lpass-rx-macro.c  |  8 ++++----
> >>   sound/soc/codecs/lpass-tx-macro.c  |  8 ++++----
> >>   sound/soc/codecs/lpass-va-macro.c  | 20 ++++++++++----------
> >>   sound/soc/codecs/lpass-wsa-macro.c |  9 ++++-----
> >>   4 files changed, 22 insertions(+), 23 deletions(-)
> >>
> >> diff --git a/sound/soc/codecs/lpass-rx-macro.c b/sound/soc/codecs/lpass-rx-macro.c
> >> index a9ef9d5ffcc5..dd6970d5eb8d 100644
> >> --- a/sound/soc/codecs/lpass-rx-macro.c
> >> +++ b/sound/soc/codecs/lpass-rx-macro.c
> >> @@ -3601,10 +3601,6 @@ static int rx_macro_probe(struct platform_device *pdev)
> >>   	if (ret)
> >>   		goto err_fsgen;
> >>   
> >> -	ret = rx_macro_register_mclk_output(rx);
> >> -	if (ret)
> >> -		goto err_clkout;
> >> -
> >>   	ret = devm_snd_soc_register_component(dev, &rx_macro_component_drv,
> >>   					      rx_macro_dai,
> >>   					      ARRAY_SIZE(rx_macro_dai));
> >> @@ -3618,6 +3614,10 @@ static int rx_macro_probe(struct platform_device *pdev)
> >>   	pm_runtime_set_active(dev);
> >>   	pm_runtime_enable(dev);
> >>   
> >> +	ret = rx_macro_register_mclk_output(rx);
> >> +	if (ret)
> >> +		goto err_clkout;
> >> +
> >>   	return 0;
> >>   
> >>   err_clkout:
> >> diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c
> >> index 2ef62d6edc30..b9475ba55e20 100644
> >> --- a/sound/soc/codecs/lpass-tx-macro.c
> >> +++ b/sound/soc/codecs/lpass-tx-macro.c
> >> @@ -2036,10 +2036,6 @@ static int tx_macro_probe(struct platform_device *pdev)
> >>   	if (ret)
> >>   		goto err_fsgen;
> >>   
> >> -	ret = tx_macro_register_mclk_output(tx);
> >> -	if (ret)
> >> -		goto err_clkout;
> >> -
> >>   	ret = devm_snd_soc_register_component(dev, &tx_macro_component_drv,
> >>   					      tx_macro_dai,
> >>   					      ARRAY_SIZE(tx_macro_dai));
> >> @@ -2052,6 +2048,10 @@ static int tx_macro_probe(struct platform_device *pdev)
> >>   	pm_runtime_set_active(dev);
> >>   	pm_runtime_enable(dev);
> >>   
> >> +	ret = tx_macro_register_mclk_output(tx);
> >> +	if (ret)
> >> +		goto err_clkout;
> >> +
> >>   	return 0;
> >>   
> >>   err_clkout:
> >> diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c
> >> index b0b6cf29cba3..1623ba78ddb3 100644
> >> --- a/sound/soc/codecs/lpass-va-macro.c
> >> +++ b/sound/soc/codecs/lpass-va-macro.c
> >> @@ -1524,16 +1524,6 @@ static int va_macro_probe(struct platform_device *pdev)
> >>   	if (ret)
> >>   		goto err_mclk;
> >>   
> >> -	ret = va_macro_register_fsgen_output(va);
> >> -	if (ret)
> >> -		goto err_clkout;
> >> -
> >> -	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
> >> -	if (IS_ERR(va->fsgen)) {
> >> -		ret = PTR_ERR(va->fsgen);
> >> -		goto err_clkout;
> >> -	}
> >> -
> >>   	if (va->has_swr_master) {
> >>   		/* Set default CLK div to 1 */
> >>   		regmap_update_bits(va->regmap, CDC_VA_TOP_CSR_SWR_MIC_CTL0,
> >> @@ -1560,6 +1550,16 @@ static int va_macro_probe(struct platform_device *pdev)
> >>   	pm_runtime_set_active(dev);
> >>   	pm_runtime_enable(dev);
> >>   
> >> +	ret = va_macro_register_fsgen_output(va);
> >> +	if (ret)
> >> +		goto err_clkout;
> >> +
> >> +	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
> >> +	if (IS_ERR(va->fsgen)) {
> >> +		ret = PTR_ERR(va->fsgen);
> >> +		goto err_clkout;
> >> +	}
> >> +
> >>   	return 0;
> >>   
> >>   err_clkout:
> >> diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
> >> index 5cfe96f6e430..c0b86d69c72e 100644
> >> --- a/sound/soc/codecs/lpass-wsa-macro.c
> >> +++ b/sound/soc/codecs/lpass-wsa-macro.c
> >> @@ -2451,11 +2451,6 @@ static int wsa_macro_probe(struct platform_device *pdev)
> >>   	if (ret)
> >>   		goto err_fsgen;
> >>   
> >> -	ret = wsa_macro_register_mclk_output(wsa);
> >> -	if (ret)
> >> -		goto err_clkout;
> >> -
> >> -
> >>   	ret = devm_snd_soc_register_component(dev, &wsa_macro_component_drv,
> >>   					      wsa_macro_dai,
> >>   					      ARRAY_SIZE(wsa_macro_dai));
> >> @@ -2468,6 +2463,10 @@ static int wsa_macro_probe(struct platform_device *pdev)
> >>   	pm_runtime_set_active(dev);
> >>   	pm_runtime_enable(dev);
> >>   
> >> +	ret = wsa_macro_register_mclk_output(wsa);
> >> +	if (ret)
> >> +		goto err_clkout;
> >> +
> >>   	return 0;
> >>   
> >>   err_clkout:
> >> -- 
> >> 2.21.0
> >
diff mbox series

Patch

diff --git a/sound/soc/codecs/lpass-rx-macro.c b/sound/soc/codecs/lpass-rx-macro.c
index a9ef9d5ffcc5..dd6970d5eb8d 100644
--- a/sound/soc/codecs/lpass-rx-macro.c
+++ b/sound/soc/codecs/lpass-rx-macro.c
@@ -3601,10 +3601,6 @@  static int rx_macro_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_fsgen;
 
-	ret = rx_macro_register_mclk_output(rx);
-	if (ret)
-		goto err_clkout;
-
 	ret = devm_snd_soc_register_component(dev, &rx_macro_component_drv,
 					      rx_macro_dai,
 					      ARRAY_SIZE(rx_macro_dai));
@@ -3618,6 +3614,10 @@  static int rx_macro_probe(struct platform_device *pdev)
 	pm_runtime_set_active(dev);
 	pm_runtime_enable(dev);
 
+	ret = rx_macro_register_mclk_output(rx);
+	if (ret)
+		goto err_clkout;
+
 	return 0;
 
 err_clkout:
diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c
index 2ef62d6edc30..b9475ba55e20 100644
--- a/sound/soc/codecs/lpass-tx-macro.c
+++ b/sound/soc/codecs/lpass-tx-macro.c
@@ -2036,10 +2036,6 @@  static int tx_macro_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_fsgen;
 
-	ret = tx_macro_register_mclk_output(tx);
-	if (ret)
-		goto err_clkout;
-
 	ret = devm_snd_soc_register_component(dev, &tx_macro_component_drv,
 					      tx_macro_dai,
 					      ARRAY_SIZE(tx_macro_dai));
@@ -2052,6 +2048,10 @@  static int tx_macro_probe(struct platform_device *pdev)
 	pm_runtime_set_active(dev);
 	pm_runtime_enable(dev);
 
+	ret = tx_macro_register_mclk_output(tx);
+	if (ret)
+		goto err_clkout;
+
 	return 0;
 
 err_clkout:
diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c
index b0b6cf29cba3..1623ba78ddb3 100644
--- a/sound/soc/codecs/lpass-va-macro.c
+++ b/sound/soc/codecs/lpass-va-macro.c
@@ -1524,16 +1524,6 @@  static int va_macro_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_mclk;
 
-	ret = va_macro_register_fsgen_output(va);
-	if (ret)
-		goto err_clkout;
-
-	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
-	if (IS_ERR(va->fsgen)) {
-		ret = PTR_ERR(va->fsgen);
-		goto err_clkout;
-	}
-
 	if (va->has_swr_master) {
 		/* Set default CLK div to 1 */
 		regmap_update_bits(va->regmap, CDC_VA_TOP_CSR_SWR_MIC_CTL0,
@@ -1560,6 +1550,16 @@  static int va_macro_probe(struct platform_device *pdev)
 	pm_runtime_set_active(dev);
 	pm_runtime_enable(dev);
 
+	ret = va_macro_register_fsgen_output(va);
+	if (ret)
+		goto err_clkout;
+
+	va->fsgen = clk_hw_get_clk(&va->hw, "fsgen");
+	if (IS_ERR(va->fsgen)) {
+		ret = PTR_ERR(va->fsgen);
+		goto err_clkout;
+	}
+
 	return 0;
 
 err_clkout:
diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
index 5cfe96f6e430..c0b86d69c72e 100644
--- a/sound/soc/codecs/lpass-wsa-macro.c
+++ b/sound/soc/codecs/lpass-wsa-macro.c
@@ -2451,11 +2451,6 @@  static int wsa_macro_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_fsgen;
 
-	ret = wsa_macro_register_mclk_output(wsa);
-	if (ret)
-		goto err_clkout;
-
-
 	ret = devm_snd_soc_register_component(dev, &wsa_macro_component_drv,
 					      wsa_macro_dai,
 					      ARRAY_SIZE(wsa_macro_dai));
@@ -2468,6 +2463,10 @@  static int wsa_macro_probe(struct platform_device *pdev)
 	pm_runtime_set_active(dev);
 	pm_runtime_enable(dev);
 
+	ret = wsa_macro_register_mclk_output(wsa);
+	if (ret)
+		goto err_clkout;
+
 	return 0;
 
 err_clkout: