diff options
author | Mark Farrugia <mark.farrugia@fiberdyne.com.au> | 2018-12-02 00:24:21 +1100 |
---|---|---|
committer | Mark Farrugia <mark.farrugia@fiberdyne.com.au> | 2018-12-06 06:17:16 +0000 |
commit | 89a0214a621908aaa9aa76c45b51b81bdf63f639 (patch) | |
tree | a24e2090678292fe473a863c08208a90c84238bf | |
parent | 913ee4c2812f84b5234907d0c9f13ac86441b72e (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.patch | 34 | ||||
-rw-r--r-- | meta-rcar-gen3/recipes-kernel/linux/linux-renesas_4.14.bb | 5 |
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 6f88d52..75008b6 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 @@ -19,6 +19,11 @@ SRC_URI_append = " \ file://0001-Revert-mmc-renesas_sdhi_internal_dmac-limit-DMA-RX-f.patch \ " +# 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.35" PV = "${LINUX_VERSION}+git${SRCPV}" PR = "r1" |