summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Farrugia <mark.farrugia@fiberdyne.com.au>2018-12-02 00:24:21 +1100
committerStephane Desneux <stephane.desneux@iot.bzh>2020-05-19 18:57:06 +0000
commit6cd1e89df19b5f4b28fb1cd22d1fdc0e70505908 (patch)
tree56078acdcd8f84e4c12548104e76b0efaca88dd0
parent9e58bd97144ab56a7858c6cd2206d3bd793bb09e (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 f43a965..6ea52e9 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"