On Fri, 16 Aug 2024 at 14:42, <srinivas.kandagatla@xxxxxxxxxx> wrote: > > From: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > > sm8250 and sc7280 have lpass codec version 1.0, as these are very old > platforms, they do not have a reliable way to get the codec version > from core_id registers. > > On codec versions below 2.0, even though the core_id registers are > available to read, the values of these registers are not unique to be > able to determine the version of the codec dynamically. > > Add the version info into of_data, so that driver does not need to use > core_id registers to get version number for such situations. > Thank you Srini for this patch. This (along with the DT patch [1]) fixes the HDMI audio regression on RB5. Tested-by: Amit Pundir <amit.pundir@xxxxxxxxxx> [1] https://lore.kernel.org/all/20240815170542.20754-1-srinivas.kandagatla@xxxxxxxxxx/ > Fixes: 378918d59181 ("ASoC: codecs: lpass-macro: add helpers to get codec version") > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > --- > Changes since v1: > - updated commit text to add more details > > sound/soc/codecs/lpass-va-macro.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/codecs/lpass-va-macro.c b/sound/soc/codecs/lpass-va-macro.c > index 8454193ed22a..e95d1f29ef18 100644 > --- a/sound/soc/codecs/lpass-va-macro.c > +++ b/sound/soc/codecs/lpass-va-macro.c > @@ -228,11 +228,13 @@ struct va_macro { > struct va_macro_data { > bool has_swr_master; > bool has_npl_clk; > + int version; > }; > > static const struct va_macro_data sm8250_va_data = { > .has_swr_master = false, > .has_npl_clk = false, > + .version = LPASS_CODEC_VERSION_1_0, > }; > > static const struct va_macro_data sm8450_va_data = { > @@ -1587,7 +1589,14 @@ static int va_macro_probe(struct platform_device *pdev) > goto err_npl; > } > > - va_macro_set_lpass_codec_version(va); > + /** > + * old version of codecs do not have a reliable way to determine the > + * version from registers, get them from soc specific data > + */ > + if (data->version) > + lpass_macro_set_codec_version(data->version); > + else /* read version from register */ > + va_macro_set_lpass_codec_version(va); > > if (va->has_swr_master) { > /* Set default CLK div to 1 */ > -- > 2.25.1 >