aboutsummaryrefslogtreecommitdiffstats
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>2020-02-07 11:36:36 +0100
commitde5919ba2b4e2340c19df33038bbc793cf2f94d2 (patch)
tree40993230677939486426a76cffa79dd41d6279f8
parent218ff884d8b796cd3aaee6a79b30b8427d3d4d7f (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.bb7
2 files changed, 41 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 b2a2f66..e28a702 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
@@ -16,6 +16,13 @@ SRCREV = "59ccbcefaebb4a33110e11fb87f3811cd59f192d"
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"