Jiri Slaby 9cb590
From: Shawn Guo <shawn.guo@linaro.org>
Jiri Slaby 9cb590
Date: Sat, 17 Jun 2017 22:25:28 +0800
Jiri Slaby 9cb590
Subject: [PATCH] ASoC: zx-i2s: flip I2S master/slave mode
Jiri Slaby 9cb590
References: bnc#1060662
Jiri Slaby 9cb590
Patch-mainline: 4.12.4
Jiri Slaby 9cb590
Git-commit: a205c159f9e2db586a5ea475f4d22fa22e78fed8
Jiri Slaby 9cb590
Jiri Slaby 9cb590
commit a205c159f9e2db586a5ea475f4d22fa22e78fed8 upstream.
Jiri Slaby 9cb590
Jiri Slaby 9cb590
The SND_SOC_DAIFMT_MASTER bits are defined to specify the master/slave
Jiri Slaby 9cb590
mode for Codec, not I2S.  So the I2S master/slave mode should be flipped
Jiri Slaby 9cb590
according to SND_SOC_DAIFMT_MASTER bits.
Jiri Slaby 9cb590
Jiri Slaby 9cb590
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Jiri Slaby 9cb590
Signed-off-by: Mark Brown <broonie@kernel.org>
Jiri Slaby 9cb590
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Jiri Slaby 9cb590
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby 9cb590
---
Jiri Slaby 9cb590
 sound/soc/zte/zx-i2s.c | 10 ++++++----
Jiri Slaby 9cb590
 1 file changed, 6 insertions(+), 4 deletions(-)
Jiri Slaby 9cb590
Jiri Slaby 9cb590
diff --git a/sound/soc/zte/zx-i2s.c b/sound/soc/zte/zx-i2s.c
Jiri Slaby 9cb590
index a865f37c2a56..580902fd9030 100644
Jiri Slaby 9cb590
--- a/sound/soc/zte/zx-i2s.c
Jiri Slaby 9cb590
+++ b/sound/soc/zte/zx-i2s.c
Jiri Slaby 9cb590
@@ -203,13 +203,15 @@ static int zx_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
Jiri Slaby 9cb590
 
Jiri Slaby 9cb590
 	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
Jiri Slaby 9cb590
 	case SND_SOC_DAIFMT_CBM_CFM:
Jiri Slaby 9cb590
-		i2s->master = 1;
Jiri Slaby 9cb590
-		val |= ZX_I2S_TIMING_MAST;
Jiri Slaby 9cb590
-		break;
Jiri Slaby 9cb590
-	case SND_SOC_DAIFMT_CBS_CFS:
Jiri Slaby 9cb590
+		/* Codec is master, and I2S is slave. */
Jiri Slaby 9cb590
 		i2s->master = 0;
Jiri Slaby 9cb590
 		val |= ZX_I2S_TIMING_SLAVE;
Jiri Slaby 9cb590
 		break;
Jiri Slaby 9cb590
+	case SND_SOC_DAIFMT_CBS_CFS:
Jiri Slaby 9cb590
+		/* Codec is slave, and I2S is master. */
Jiri Slaby 9cb590
+		i2s->master = 1;
Jiri Slaby 9cb590
+		val |= ZX_I2S_TIMING_MAST;
Jiri Slaby 9cb590
+		break;
Jiri Slaby 9cb590
 	default:
Jiri Slaby 9cb590
 		dev_err(cpu_dai->dev, "Unknown master/slave format\n");
Jiri Slaby 9cb590
 		return -EINVAL;
Jiri Slaby 9cb590
-- 
Jiri Slaby 9cb590
2.14.2
Jiri Slaby 9cb590