[alsa-devel] why error return in sound/soc/codecs/pcm3168a.c::pcm3168a_set_dai_fmt ?
![](https://secure.gravatar.com/avatar/26270639cd509d7221d7df4dddbf4921.jpg?s=120&d=mm&r=g)
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).
![](https://secure.gravatar.com/avatar/e9b70778b7af3b79dc1bf62dc64f6685.jpg?s=120&d=mm&r=g)
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.
participants (2)
-
Alexandre Belloni
-
Jurgen Lambrecht