[alsa-devel] why error return in sound/soc/codecs/pcm3168a.c::pcm3168a_set_dai_fmt ?

Alexandre Belloni alexandre.belloni at bootlin.com
Mon Jul 1 15:06:09 CEST 2019


Hello,

On 04/06/2019 06:37:48+0000, Jurgen Lambrecht wrote:
> Hi,
> 
> When following 
> https://bootlin.com/blog/eight-channels-audio-on-i-mx7-with-pcm3168/ I 
> get this error (from soc_core.c):
> 
> ... kernel: [    3.059634][   T15] pcm3168a 3-0039: ASoC: Failed to set 
> DAI format: -22
> 
> I could propose this patch (I get that printf when applying the patch)
> (all other errors in that file have a printf):
> 
> diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c
> index 08d3fe192e65..75ccbb919902 100644
> --- a/sound/soc/codecs/pcm3168a.c
> +++ b/sound/soc/codecs/pcm3168a.c
> @@ -353,6 +353,7 @@ static int pcm3168a_set_dai_fmt(struct snd_soc_dai *dai,
>          case SND_SOC_DAIFMT_NB_NF:
>                  break;
>          default:
> +               dev_err(component->dev, "wrong INV_MASK\n");
>                  return -EINVAL;
>          }
> 
> But why does this code returns an error for code that has no effect?
> OK, it could be because SND_SOC_DAIFMT_INV_MASK must be 
> SND_SOC_DAIFMT_NB_NF. But then Alexandre's blog contains an error, 
> because the dac TDM sets frame-inversion in its dts (and it should not).
> 

While I'm pretty sure what is in the blog is working (it is deployed in
production), I remember there was something fishy with frame-inversion.
I unfortunately don't remember the specifics.

Honestly, I would think you can remove frame-inversion safely as the
codec is only supposed to support NB_NF.

-- 
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


More information about the Alsa-devel mailing list