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