Hello Jyri,

> +
> +static int hdmi_codec_hw_params(struct snd_pcm_substream *substream,
> +                             struct snd_pcm_hw_params *params,
> +                             struct snd_soc_dai *dai)
> +{
> +     struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai);
> +     struct hdmi_codec_params hp = {
> +             .iec = {
> +                     .status = { 0 },
> +                     .subcode = { 0 },
> +                     .pad = 0,
> +                     .dig_subframe = { 0 },
> +             }
> +     };
> +     int ret;
> +
> +     dev_dbg(dai->dev, "%s() width %d rate %d channels %d\n", __func__,
> +             params_width(params), params_rate(params),
> +             params_channels(params));
> +
> +     ret = snd_pcm_create_iec958_consumer_hw_params(params, hp.iec.status,
> +                                                    sizeof(hp.iec.status));
I ran into an issue during my test.
For I2S, an error is returned by create_iec958_consumer for 32-bits
stream (SNDRV_PCM_FMTBIT_S32_LE).
I suppose that it makes sense to handle 32-bits configuration for I2S
(but also SPDIF), to support software IEC958 formating/pre-formating...
To fix issue, just need to add 32-bits with 24-bits case in
create_iec958_consumer

Regards
Arnaud

Reply via email to