diff mbox series

[4/5] ASoC: lpass: use the clock provider API

Message ID 20210410111356.467340-5-jbrunet@baylibre.com (mailing list archive)
State Superseded
Headers show
Series ASoC: clock provider clean-up | expand

Commit Message

Jerome Brunet April 10, 2021, 11:13 a.m. UTC
Clock providers should be registered using the clk_hw API.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 sound/soc/codecs/lpass-va-macro.c  | 2 +-
 sound/soc/codecs/lpass-wsa-macro.c | 9 +++------
 2 files changed, 4 insertions(+), 7 deletions(-)

Comments

Srinivas Kandagatla April 12, 2021, 9:38 a.m. UTC | #1
Thanks Jerome for the patch,


On 10/04/2021 12:13, Jerome Brunet wrote:
> Clock providers should be registered using the clk_hw API.
> 
> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
> ---
>   sound/soc/codecs/lpass-va-macro.c  | 2 +-
>   sound/soc/codecs/lpass-wsa-macro.c | 9 +++------
>   2 files changed, 4 insertions(+), 7 deletions(-)
> 
> diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c
> index 5294c57b2cd4..56b887301172 100644
> --- a/sound/soc/codecs/lpass-va-macro.c
> +++ b/sound/soc/codecs/lpass-va-macro.c
> @@ -1343,7 +1343,7 @@ static int va_macro_register_fsgen_output(struct va_macro *va)
>   	if (ret)
>   		return ret;
>   
> -	return of_clk_add_provider(np, of_clk_src_simple_get, va->hw.clk);
> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, &va->hw);

Now that we convert this to devm, You missed error path and driver 
remove where we delete clk provider. This should be removed as well as 
part of this patch.


This applies to both wsa and va macro.

Thanks,
srini
>   }
>   
>   static int va_macro_validate_dmic_sample_rate(u32 dmic_sample_rate,
> diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
> index e79a70386b4b..acb95e83c788 100644
> --- a/sound/soc/codecs/lpass-wsa-macro.c
> +++ b/sound/soc/codecs/lpass-wsa-macro.c
> @@ -2337,10 +2337,9 @@ static const struct clk_ops swclk_gate_ops = {
>   	.recalc_rate = swclk_recalc_rate,
>   };
>   
> -static struct clk *wsa_macro_register_mclk_output(struct wsa_macro *wsa)
> +static int wsa_macro_register_mclk_output(struct wsa_macro *wsa)
>   {
>   	struct device *dev = wsa->dev;
> -	struct device_node *np = dev->of_node;
>   	const char *parent_clk_name;
>   	const char *clk_name = "mclk";
>   	struct clk_hw *hw;
> @@ -2358,11 +2357,9 @@ static struct clk *wsa_macro_register_mclk_output(struct wsa_macro *wsa)
>   	hw = &wsa->hw;
>   	ret = clk_hw_register(wsa->dev, hw);
>   	if (ret)
> -		return ERR_PTR(ret);
> -
> -	of_clk_add_provider(np, of_clk_src_simple_get, hw->clk);
> +		return ret;
>   
> -	return NULL;
> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, hw);
>   }
>   
>   static const struct snd_soc_component_driver wsa_macro_component_drv = {
>
Jerome Brunet April 12, 2021, 12:17 p.m. UTC | #2
On Mon 12 Apr 2021 at 11:38, Srinivas Kandagatla <srinivas.kandagatla@linaro.org> wrote:

> Thanks Jerome for the patch,
>
>
> On 10/04/2021 12:13, Jerome Brunet wrote:
>> Clock providers should be registered using the clk_hw API.
>> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
>> ---
>>   sound/soc/codecs/lpass-va-macro.c  | 2 +-
>>   sound/soc/codecs/lpass-wsa-macro.c | 9 +++------
>>   2 files changed, 4 insertions(+), 7 deletions(-)
>> diff --git a/sound/soc/codecs/lpass-va-macro.c
>> b/sound/soc/codecs/lpass-va-macro.c
>> index 5294c57b2cd4..56b887301172 100644
>> --- a/sound/soc/codecs/lpass-va-macro.c
>> +++ b/sound/soc/codecs/lpass-va-macro.c
>> @@ -1343,7 +1343,7 @@ static int va_macro_register_fsgen_output(struct va_macro *va)
>>   	if (ret)
>>   		return ret;
>>   -	return of_clk_add_provider(np, of_clk_src_simple_get, va->hw.clk);
>> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, &va->hw);
>
> Now that we convert this to devm, You missed error path and driver remove
> where we delete clk provider. This should be removed as well as part of
> this patch.

Indeed. I should not have switched to devm here - It was not really the
purpose of the patch. Habits I guess.

Do you prefer I stick with devm (with the suggested fix) or revert to the
no-devm way for the v2 ? It makes no difference to me TBH.

>
>
> This applies to both wsa and va macro.
>
> Thanks,
> srini
>>   }
>>     static int va_macro_validate_dmic_sample_rate(u32 dmic_sample_rate,
>> diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
>> index e79a70386b4b..acb95e83c788 100644
>> --- a/sound/soc/codecs/lpass-wsa-macro.c
>> +++ b/sound/soc/codecs/lpass-wsa-macro.c
>> @@ -2337,10 +2337,9 @@ static const struct clk_ops swclk_gate_ops = {
>>   	.recalc_rate = swclk_recalc_rate,
>>   };
>>   -static struct clk *wsa_macro_register_mclk_output(struct wsa_macro
>> *wsa)
>> +static int wsa_macro_register_mclk_output(struct wsa_macro *wsa)
>>   {
>>   	struct device *dev = wsa->dev;
>> -	struct device_node *np = dev->of_node;
>>   	const char *parent_clk_name;
>>   	const char *clk_name = "mclk";
>>   	struct clk_hw *hw;
>> @@ -2358,11 +2357,9 @@ static struct clk *wsa_macro_register_mclk_output(struct wsa_macro *wsa)
>>   	hw = &wsa->hw;
>>   	ret = clk_hw_register(wsa->dev, hw);
>>   	if (ret)
>> -		return ERR_PTR(ret);
>> -
>> -	of_clk_add_provider(np, of_clk_src_simple_get, hw->clk);
>> +		return ret;
>>   -	return NULL;
>> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, hw);
>>   }
>>     static const struct snd_soc_component_driver wsa_macro_component_drv
>> = {
>>
Srinivas Kandagatla April 12, 2021, 1:55 p.m. UTC | #3
On 12/04/2021 13:17, Jerome Brunet wrote:
>>>    -	return of_clk_add_provider(np, of_clk_src_simple_get, va->hw.clk);
>>> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, &va->hw);
>> Now that we convert this to devm, You missed error path and driver remove
>> where we delete clk provider. This should be removed as well as part of
>> this patch.
> Indeed. I should not have switched to devm here - It was not really the
> purpose of the patch. Habits I guess.
> 
> Do you prefer I stick with devm (with the suggested fix) or revert to the
> no-devm way for the v2 ? It makes no difference to me TBH.

devm should be good.

--srini
>
diff mbox series

Patch

diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c
index 5294c57b2cd4..56b887301172 100644
--- a/sound/soc/codecs/lpass-va-macro.c
+++ b/sound/soc/codecs/lpass-va-macro.c
@@ -1343,7 +1343,7 @@  static int va_macro_register_fsgen_output(struct va_macro *va)
 	if (ret)
 		return ret;
 
-	return of_clk_add_provider(np, of_clk_src_simple_get, va->hw.clk);
+	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, &va->hw);
 }
 
 static int va_macro_validate_dmic_sample_rate(u32 dmic_sample_rate,
diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
index e79a70386b4b..acb95e83c788 100644
--- a/sound/soc/codecs/lpass-wsa-macro.c
+++ b/sound/soc/codecs/lpass-wsa-macro.c
@@ -2337,10 +2337,9 @@  static const struct clk_ops swclk_gate_ops = {
 	.recalc_rate = swclk_recalc_rate,
 };
 
-static struct clk *wsa_macro_register_mclk_output(struct wsa_macro *wsa)
+static int wsa_macro_register_mclk_output(struct wsa_macro *wsa)
 {
 	struct device *dev = wsa->dev;
-	struct device_node *np = dev->of_node;
 	const char *parent_clk_name;
 	const char *clk_name = "mclk";
 	struct clk_hw *hw;
@@ -2358,11 +2357,9 @@  static struct clk *wsa_macro_register_mclk_output(struct wsa_macro *wsa)
 	hw = &wsa->hw;
 	ret = clk_hw_register(wsa->dev, hw);
 	if (ret)
-		return ERR_PTR(ret);
-
-	of_clk_add_provider(np, of_clk_src_simple_get, hw->clk);
+		return ret;
 
-	return NULL;
+	return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, hw);
 }
 
 static const struct snd_soc_component_driver wsa_macro_component_drv = {