Re: [PATCH 2/6] ASoC: codecs: wsa-macro: add support for sm8450 and sc8280xp

Krzysztof Kozlowski
2022-09-01T07:32:24Z

On 31/08/2022 13:37, Srinivas Kandagatla wrote:
>
>
> On 31/08/2022 10:19, Krzysztof Kozlowski wrote:
>> On 31/08/2022 12:17, Srinivas Kandagatla wrote:
>>>
>>>
>>> On 18/08/2022 18:12, Rob Herring wrote:
>>>> On Thu, Aug 18, 2022 at 02:46:15PM +0100, Srinivas Kandagatla wrote:
>>>>> Add compatible for sm8450 and sc8280xp.
>>>>>
>>>>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>>>>> ---
>>>>> sound/soc/codecs/lpass-wsa-macro.c | 2 ++
>>>>> 1 file changed, 2 insertions(+)
>>>>>
>>>>> diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c
>>>>> index 27da6c6c3c5a..f82c297ea3ab 100644
>>>>> --- a/sound/soc/codecs/lpass-wsa-macro.c
>>>>> +++ b/sound/soc/codecs/lpass-wsa-macro.c
>>>>> @@ -2561,6 +2561,8 @@ static const struct dev_pm_ops wsa_macro_pm_ops = {
>>>>> static const struct of_device_id wsa_macro_dt_match[] = {
>>>>> {.compatible = "qcom,sc7280-lpass-wsa-macro"},
>>>>> {.compatible = "qcom,sm8250-lpass-wsa-macro"},
>>>>> + {.compatible = "qcom,sm8450-lpass-wsa-macro"},
>>>>> + {.compatible = "qcom,sc8280xp-lpass-wsa-macro" },
>>>>
>>>> Looks like these are backwards compatible with the existing versions,
>>>> why not reflect that in the binding?
>>> Backward compatibility is not always true, some of the registers and
>>> there defaults tend to change across SoCs. Having SoC specific
>>> compatible could help us deal with this and also make code more inline
>>> with other codec macros in LPASS IP.
>>
>> I am not saying that there should be no SoC specific compatible. This
>> one is a must, but the question why duplicating the entries and not
>> using fallback?
>
> You mean using fallback compatible "qcom,sc7280-lpass-wsa-macro" in
> sc8280xp devicetree and not add new compatibles in the driver?
>
> The reason for adding this new compatible strings is that macros in this
> lpass codec that differ form each SoC.
> ex: [PATCH 6/6] ASoC: codecs: tx-macro: add support for sm8450 and
> sc8280xp and there is a pending patch on va-macro that has soundwire
> controller frame sync and reset control which is moved from tx-macro to
> va-macro.
>
> so DT might endup with mix of compatibles for same LPASS Codec like this:
>
> "qcom,sc7280-lpass-wsa-macro"
> "qcom,sc8280xp-lpass-va-macro"
> "qcom,sc8280xp-lpass-tx-macro"
> "qcom,sc8280xp-lpass-rx-macro"
>
> AFAIU, the fallback thing will work for things that are identical but in
> this case they differ across SoCs, and having SoC specific compatibles
> in now would help handle this.

Ahh, I see now. The true problem is that driver encodes compatibles in
several places. That's very confusing design - variants should be rather
customized via driver data, not via multiple of_device_is_compatible()
inside the code.

Best regards,
Krzysztof