aboutsummaryrefslogtreecommitdiffstats
path: root/meta-rcar-gen2/recipes-kernel/linux
diff options
context:
space:
mode:
Diffstat (limited to 'meta-rcar-gen2/recipes-kernel/linux')
-rw-r--r--meta-rcar-gen2/recipes-kernel/linux/linux-renesas/porter/0032-ASoC-rsnd-care-SWSP-bit-for-TDM-non-TDM.patch78
-rw-r--r--meta-rcar-gen2/recipes-kernel/linux/linux-renesas_3.10.bb1
2 files changed, 79 insertions, 0 deletions
diff --git a/meta-rcar-gen2/recipes-kernel/linux/linux-renesas/porter/0032-ASoC-rsnd-care-SWSP-bit-for-TDM-non-TDM.patch b/meta-rcar-gen2/recipes-kernel/linux/linux-renesas/porter/0032-ASoC-rsnd-care-SWSP-bit-for-TDM-non-TDM.patch
new file mode 100644
index 0000000..d91f0c1
--- /dev/null
+++ b/meta-rcar-gen2/recipes-kernel/linux/linux-renesas/porter/0032-ASoC-rsnd-care-SWSP-bit-for-TDM-non-TDM.patch
@@ -0,0 +1,78 @@
+From 31f31400e019e8af9937256a1a08357191b41674 Mon Sep 17 00:00:00 2001
+From: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
+Date: Fri, 10 Jun 2016 21:15:10 +0300
+Subject: [PATCH] ASoC: rsnd: care SWSP bit for TDM/non-TDM
+
+SSICR::SWSP bit controls WS signal low/high, but in case of TDM
+it is inverted. This patch solves this issue.
+
+Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
+---
+ sound/soc/sh/rcar/ssi.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c
+index 8180934..1cbd1d4 100644
+--- a/sound/soc/sh/rcar/ssi.c
++++ b/sound/soc/sh/rcar/ssi.c
+@@ -356,7 +356,9 @@ static int rsnd_ssi_init(struct rsnd_mod *mod,
+ struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
+ struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
+ u32 cr;
++ int is_tdm;
+
++ is_tdm = rsnd_ssi_is_tdm(ssi);
+ cr = FORCE;
+
+ /*
+@@ -364,7 +366,7 @@ static int rsnd_ssi_init(struct rsnd_mod *mod,
+ * see also rsnd_ssi_master_clk_enable()
+ */
+ cr |= SWL_32;
+- if (rsnd_ssi_is_tdm(ssi)) {
++ if (is_tdm) {
+ switch (rsnd_ssi_channels(ssi)) {
+ case 4:
+ cr |= CHNL_TDM_4;
+@@ -411,7 +413,7 @@ static int rsnd_ssi_init(struct rsnd_mod *mod,
+
+ if (rdai->bit_clk_inv)
+ cr |= SCKP;
+- if (rdai->frm_clk_inv)
++ if (rdai->frm_clk_inv ^ is_tdm)
+ cr |= SWSP;
+ if (rdai->data_alignment)
+ cr |= SDTA;
+@@ -465,6 +467,9 @@ static int rsnd_ssi_init_irq(struct rsnd_mod *mod,
+ struct rsnd_dai_stream *io = rsnd_mod_to_io(mod);
+ struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
+ u32 cr;
++ int is_tdm;
++
++ is_tdm = rsnd_ssi_is_tdm(ssi);
+
+ cr = FORCE;
+
+@@ -473,7 +478,7 @@ static int rsnd_ssi_init_irq(struct rsnd_mod *mod,
+ * see also rsnd_ssi_master_clk_enable()
+ */
+ cr |= SWL_32;
+- if (rsnd_ssi_is_tdm(ssi)) {
++ if (is_tdm) {
+ switch (rsnd_ssi_channels(ssi)) {
+ case 4:
+ cr |= CHNL_TDM_4;
+@@ -520,7 +525,7 @@ static int rsnd_ssi_init_irq(struct rsnd_mod *mod,
+
+ if (rdai->bit_clk_inv)
+ cr |= SCKP;
+- if (rdai->frm_clk_inv)
++ if (rdai->frm_clk_inv ^ is_tdm)
+ cr |= SWSP;
+ if (rdai->data_alignment)
+ cr |= SDTA;
+--
+1.7.10.4
+
diff --git a/meta-rcar-gen2/recipes-kernel/linux/linux-renesas_3.10.bb b/meta-rcar-gen2/recipes-kernel/linux/linux-renesas_3.10.bb
index 5f35220..97f08be 100644
--- a/meta-rcar-gen2/recipes-kernel/linux/linux-renesas_3.10.bb
+++ b/meta-rcar-gen2/recipes-kernel/linux/linux-renesas_3.10.bb
@@ -87,6 +87,7 @@ SRC_URI_append_porter = " \
file://porter/0029-ASoC-R-Car-fix-debug-output.patch \
file://porter/0030-R-Car-sound-disable-clock-hack.patch \
file://porter/0031-ASoC-R-car-SSI-fix-SSI-slave-mode-setup-while-TDM-an.patch \
+ file://porter/0032-ASoC-rsnd-care-SWSP-bit-for-TDM-non-TDM.patch \
file://porter/0032-mmc-Add-SDIO-function-devicetree-subnode-parsing.patch \
file://porter/0038-Porter-LVDS-display-LQ123K1LG03.patch \
file://porter/0099-Porter-add-separate-dts-for-ext01-extension-board.patch \