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

Icenowy Zheng
2022-08-07T17:27:54Z

[-- Attachment #1: Type: text/plain, Size: 3339 bytes --]

在 2022-08-02星期二的 12:30 +0200，Cezary Rojewski写道：
> 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?

I tried 48000Hz 2ch 32bit with speaker-test.

Attached is /sys/firmware/acpi/tables/NHLT.

>
>
> >   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;
> >         }
> >

[-- Attachment #2: NHLT --]
[-- Type: application/octet-stream, Size: 6736 bytes --]