summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Farrugia <mark.farrugia@fiberdyne.com.au>2018-12-02 00:24:21 +1100
committerRonan Le Martret <ronan.lemartret@iot.bzh>2019-09-13 10:31:20 +0200
commit24e138f2f5bfc5700f24c3d09cf3c7ca78fb1d24 (patch)
tree7e1fcc67654d9273a1bf486f9d66d43d8ebcc92f
parent62ef568cb2d9cdecde8cc58d677f1a42722ff3a5 (diff)
[COMMUNITY] Fix SSI DMAC inaccessible via Xtensa HiFi2 ADSP firmware
The upgrade of the kernel to 4.14.35 has changed the SSI interface in the RCar SoC sound driver, making it that the Xtensa HiFi2 ADSP firmware can no longer directly access the SSI DMA controller in order to route audio directly out to hardware. This seems to fix this issue, allowing the Fiberdyne DSP to fully operate again on 4.14.35 kernels. Change-Id: Id89843b0a8a65f07964027639dde68791261cab6 Signed-off-by: Mark Farrugia <mark.farrugia@fiberdyne.com.au>
-rw-r--r--meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-Revert-ASoC-rsnd-ssi-wait-maximum-5ms-for-status-che.patch34
-rw-r--r--meta-rcar-gen3/recipes-kernel/linux/linux-renesas_4.14.bb5
2 files changed, 39 insertions, 0 deletions
diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-Revert-ASoC-rsnd-ssi-wait-maximum-5ms-for-status-che.patch b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-Revert-ASoC-rsnd-ssi-wait-maximum-5ms-for-status-che.patch
new file mode 100644
index 0000000..521631b
--- /dev/null
+++ b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-Revert-ASoC-rsnd-ssi-wait-maximum-5ms-for-status-che.patch
@@ -0,0 +1,34 @@
+From a0e2d5ab917de4d8fce6bed4a5c87b729be30ca7 Mon Sep 17 00:00:00 2001
+From: Mark Farrugia <mark.farrugia@fiberdyne.com.au>
+Date: Sat, 1 Dec 2018 23:48:49 +1100
+Subject: [PATCH] Revert: ASoC: rsnd: ssi: wait maximum 5ms for status check
+
+By waiting only a maximum of 5ms, we break the Renesas
+ADSP firmware's ability to access the SSI directly.
+This functionality is currently used by the Fiberdyne DSP.
+
+Since we shouldn't use udelay() for 50us
+(linux/Documentation/timers/timers-howto.txt), we instead increase
+the loop length to 1024*10 (5ms*10=50ms).
+
+Signed-off-by: Mark Farrugia <mark.farrugia@fiberdyne.com.au>
+---
+ sound/soc/sh/rcar/ssi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c
+index 9538f76f8e20..0395e33bebdd 100644
+--- a/sound/soc/sh/rcar/ssi.c
++++ b/sound/soc/sh/rcar/ssi.c
+@@ -166,7 +166,7 @@ static void rsnd_ssi_status_check(struct rsnd_mod *mod,
+ u32 status;
+ int i;
+
+- for (i = 0; i < 1024; i++) {
++ for (i = 0; i < (10*1024); i++) {
+ status = rsnd_ssi_status_get(mod);
+ if (status & bit)
+ return;
+--
+2.17.1
+
diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas_4.14.bb b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas_4.14.bb
index f559fc2..9dac5ff 100644
--- a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas_4.14.bb
+++ b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas_4.14.bb
@@ -18,6 +18,11 @@ SRC_URI = "${RENESAS_BSP_URL};protocol=git;nocheckout=1;branch=${BRANCH}"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+# Fix inaccessible SSI for Renesas ADSP firmware
+SRC_URI_append = " \
+ file://0001-Revert-ASoC-rsnd-ssi-wait-maximum-5ms-for-status-che.patch \
+"
+
LINUX_VERSION ?= "4.14.75"
PV = "${LINUX_VERSION}+git${SRCPV}"
PR = "r1"