Re: [PATCH v7 15/21] ASoC: tegra: Add fallback implementation for audio mclk

Sowjanya Komatineni
2020-01-08T05:48:05Z

On 1/7/20 9:34 PM, Sameer Pujar wrote:
>
> On 1/8/2020 9:55 AM, Sowjanya Komatineni wrote:
>> mclk is from clk_out_1 which is part of Tegra PMC block and pmc clocks
>> are moved to Tegra PMC driver with pmc as clock provider and using pmc
>> clock ids.
>>
>> New device tree uses clk_out_1 from pmc clock provider.
>>
>> So, this patch adds implementation for mclk fallback to extern1 when
>> retrieving mclk returns -ENOENT to be backward compatible of new device
>> tree with older kernels.
>>
>> Tested-by: Dmitry Osipenko <digetx@gmail.com>
>> Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
>> Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
>> ---
>>   sound/soc/tegra/tegra_asoc_utils.c | 11 ++++++++++-
>>   1 file changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/sound/soc/tegra/tegra_asoc_utils.c
>> b/sound/soc/tegra/tegra_asoc_utils.c
>> index 9cfebef74870..9a5f81039491 100644
>> --- a/sound/soc/tegra/tegra_asoc_utils.c
>> +++ b/sound/soc/tegra/tegra_asoc_utils.c
>> @@ -183,7 +183,16 @@ int tegra_asoc_utils_init(struct
>> tegra_asoc_utils_data *data,
>>       data->clk_cdev1 = devm_clk_get(dev, "mclk");
>>       if (IS_ERR(data->clk_cdev1)) {
>>           dev_err(data->dev, "Can't retrieve clk cdev1\n");
>
> This error print can be moved inside below if, when this actually
> meant to be an error condition.
>
Want to show error even if mclk retrieval returns ENOENT to clearly
indicate mclk does not exist along with message of falling back to extern1.
>> -        return PTR_ERR(data->clk_cdev1);
>> +        if (PTR_ERR(data->clk_cdev1) != -ENOENT)
>> +            return PTR_ERR(data->clk_cdev1);
>> +        /* Fall back to extern1 */
>> +        data->clk_cdev1 = devm_clk_get(dev, "extern1");
>> +        if (IS_ERR(data->clk_cdev1)) {
>> +            dev_err(data->dev, "Can't retrieve clk extern1\n");
>> +            return PTR_ERR(data->clk_cdev1);
>> +        }
>> +
>> +        dev_err(data->dev, "Falling back to extern1\n");
>
> This can be a info print?

>>       }
>>         /*