ASoC: meson: axg-tdm: fix sample clock inversion
authorJerome Brunet <jbrunet@baylibre.com>
Thu, 13 Jun 2019 11:42:32 +0000 (13:42 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 13 Jun 2019 18:44:02 +0000 (19:44 +0100)
The content of SND_SOC_DAIFMT_FORMAT_MASK is a number, not a bitfield,
so the test to check if the format is i2s is wrong. Because of this the
clock setting may be wrong. For example, the sample clock gets inverted
in DSP B mode, when it should not.

Fix the lrclk invert helper function

Fixes: 1a11d88f499c ("ASoC: meson: add tdm formatter base driver")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/meson/axg-tdm.h

index e578b6f..5774ce0 100644 (file)
@@ -40,7 +40,7 @@ struct axg_tdm_iface {
 
 static inline bool axg_tdm_lrclk_invert(unsigned int fmt)
 {
-       return (fmt & SND_SOC_DAIFMT_I2S) ^
+       return ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_I2S) ^
                !!(fmt & (SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_NB_IF));
 }