Message ID | 20220818134619.3432-3-srinivas.kandagatla@linaro.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | ASoC: codecs: lpass: add support fro sm8450 and sc8280xp | expand |
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? Rob
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. --srini > > Rob
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? Best regards, Krzysztof
On 31/08/2022 12: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 s/I am/We are/ I really thought that it was my comment. :) > one is a must, but the question why duplicating the entries and not > using fallback? Best regards, Krzysztof
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. thanks, srini > > Best regards, > Krzysztof
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
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" }, {} }; MODULE_DEVICE_TABLE(of, wsa_macro_dt_match);
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(+)