Re: [PATCH 2/2] ASoC: Intel: Skylake: try to get NHLT blob with PCM params as fallback

Cezary Rojewski
2022-08-02T10:30:35Z

On 2022-07-25 1:10 PM, Icenowy Zheng wrote:
> Switching to use pipeline parameters to get NHLT blob breaks audio on
> HP Chromebook 13 G1 (at least with MrChromeBox firmware).
>
> Fix this by retrying to get NHLT blob with PCM parameters (which is the
> old behavior) if pipeline parameters fail.
>
> Fixes: 87b265260046 ("ASoC: Intel: Skylake: Select proper format for NHLT blob")
> Signed-off-by: Icenowy Zheng <uwu@icenowy.me>

Hello,

Could you share the NHLT file from your platform plus the format used by
the cras/userspace tool? Did you try playing over simple aplay tool instead?

> sound/soc/intel/skylake/skl-topology.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c
> index 19994ec8bba1..3d5a3ee1c82c 100644
> --- a/sound/soc/intel/skylake/skl-topology.c
> +++ b/sound/soc/intel/skylake/skl-topology.c
> @@ -1858,6 +1858,15 @@ static int skl_tplg_be_fill_pipe_params(struct snd_soc_dai *dai,
> pipe_fmt->bps, params->s_cont,
> pipe_fmt->channels, pipe_fmt->freq,
> pipe->direction, dev_type);
> + if (!cfg) {
> + /* Retry with PCM parameters, as the old behavior */

Drop the "old behavior" - most of the readers are not aware of what that
actually means.

> + cfg = intel_nhlt_get_endpoint_blob(dai->dev, skl->nhlt,
> + mconfig->vbus_id, link_type,
> + params->s_fmt, params->s_cont,
> + params->ch, params->s_freq,
> + params->stream, dev_type);
> + }
> +
> if (cfg) {
> mconfig->formats_config[SKL_PARAM_INIT].caps_size = cfg->size;
> mconfig->formats_config[SKL_PARAM_INIT].caps = (u32 *)&cfg->caps;
> @@ -1866,6 +1875,8 @@ static int skl_tplg_be_fill_pipe_params(struct snd_soc_dai *dai,
> mconfig->vbus_id, link_type, params->stream,
> pipe_fmt->channels, pipe_fmt->freq,
> pipe_fmt->bps);
> + dev_err(dai->dev, "PCM: ch %d, freq %d, fmt %d\n",
> + params->ch, params->s_freq, params->s_fmt);
> return -EINVAL;
> }
>