diff options
3 files changed, 123 insertions, 39 deletions
diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0004-ADSP-enable-and-add-sound-hardware-abstraction.patch b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0004-ADSP-enable-and-add-sound-hardware-abstraction.patch new file mode 100644 index 0000000..e0e7269 --- /dev/null +++ b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0004-ADSP-enable-and-add-sound-hardware-abstraction.patch @@ -0,0 +1,121 @@ +The ADSP on Renesas SoCs required a reserved memory area to become +enabled, and this needs to be done manually. + +This patch adds sound hardware abstraction information for the m3ulcb +and m3ulcb-kf (kingfisher) device trees. This is helpful on-board the +ADSP for dynamically determining sound hardware at runtime, allowing +single binaries to be used between the two boards. + +Future work will incorporate the h3ulcb and Salvator boards into the +abstraction. + +Signed-off-by: Mark Farrugia <mark.farrugia@fiberdyne.com.au> +--- +diff --git a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts +index de2390f009e7..4ccfa8315d17 100644 +--- a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts ++++ b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts +@@ -17,3 +17,35 @@ + compatible = "shimafuji,kingfisher", "renesas,m3ulcb", + "renesas,r8a7796"; + }; ++ ++&adsp { ++ ++ /* ADSP playback setting for pcm3168 */ ++ adsp_playback0: adsp,playback { ++ mode = "tdm"; ++ clock-mode = "master"; ++ bus-width = <24>; ++ ssi = <3>; ++ bus-if = <0>; ++ channels = <8>; ++ pin-share-ssi = <4>; ++ }; ++ ++ /* ADSP capture setting for pcm3168 */ ++ adsp_capture0: adsp,capture { ++ mode = "tdm"; ++ clock-mode = "slave"; ++ bus-width = <24>; ++ ssi = <4>; ++ bus-if = <0>; ++ channels = <8>; ++ pin-share-ssi = <3>; ++ }; ++ ++ adsp,ports { ++ port@0 { ++ playback = <&adsp_playback0>; ++ capture = <&adsp_capture0>; ++ }; ++ }; ++}; +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts +index 1cd64c1b3b31..71e59da3528d 100644 +--- a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts ++++ b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts +@@ -45,11 +45,18 @@ + reg = <0x00000000 0x54000000 0x0 0x03000000>; + }; + ++ /* For Audio DSP */ ++ adsp_reserved: linux,adsp { ++ compatible = "shared-dma-pool"; ++ reusable; ++ reg = <0x00000000 0x57000000 0x0 0x01000000>; ++ }; ++ + /* global autoconfigured region for contiguous allocations */ + linux,cma { + compatible = "shared-dma-pool"; + reusable; +- reg = <0x00000000 0x57000000 0x0 0x19000000>; ++ reg = <0x00000000 0x58000000 0x0 0x18000000>; + linux,cma-default; + }; + +@@ -110,6 +117,42 @@ + "dclkin.0", "dclkin.1", "dclkin.2"; + }; + ++&adsp { ++ status = "okay"; ++ clock-frequency = <12288000 11289600>; ++ audio-clocks = <22579200 24576000>; ++ memory-region = <&adsp_reserved>; ++ ++ /* ADSP playback setting for ak4613 */ ++ adsp_playback0: adsp,playback { ++ mode = "i2s"; ++ clock-mode = "master"; ++ bus-width = <16>; ++ ssi = <0>; ++ bus-if = <0>; ++ channels = <2>; ++ pin-share-ssi = <1>; ++ }; ++ ++ /* ADSP capture setting for ak4613 */ ++ adsp_capture0: adsp,capture { ++ mode = "i2s"; ++ clock-mode = "slave"; ++ bus-width = <16>; ++ ssi = <1>; ++ bus-if = <0>; ++ channels = <2>; ++ pin-share-ssi = <0>; ++ }; ++ ++ adsp,ports { ++ port@0 { ++ playback = <&adsp_playback0>; ++ capture = <&adsp_capture0>; ++ }; ++ }; ++}; ++ + &vspb { + status = "okay"; + }; diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0004-m3ulcb-ADSP-enable.patch b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0004-m3ulcb-ADSP-enable.patch deleted file mode 100644 index eb737d9..0000000 --- a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0004-m3ulcb-ADSP-enable.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts -index 1cd64c1b3b31..cc454a5e6a52 100644 ---- a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts -+++ b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dts -@@ -45,11 +45,18 @@ - reg = <0x00000000 0x54000000 0x0 0x03000000>; - }; - -+ /* For Audio DSP */ -+ adsp_reserved: linux,adsp { -+ compatible = "shared-dma-pool"; -+ reusable; -+ reg = <0x00000000 0x57000000 0x0 0x01000000>; -+ }; -+ - /* global autoconfigured region for contiguous allocations */ - linux,cma { - compatible = "shared-dma-pool"; - reusable; -- reg = <0x00000000 0x57000000 0x0 0x19000000>; -+ reg = <0x00000000 0x58000000 0x0 0x18000000>; - linux,cma-default; - }; - -@@ -110,6 +117,11 @@ - "dclkin.0", "dclkin.1", "dclkin.2"; - }; - -+&adsp { -+ status = "okay"; -+ memory-region = <&adsp_reserved>; -+}; -+ - &vspb { - status = "okay"; - }; -
\ No newline at end of file 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 6ce3ea3..4f90a18 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 @@ -50,9 +50,9 @@ SRC_URI_append = " \ ${@base_conditional("USE_CAS", "1", " file://capacity_aware_migration_strategy.cfg", "",d)} \ " -# Add ADSP enable patch +# Add ADSP patch to enable and add sound hardware abstraction SRC_URI_append = " \ - file://0004-m3ulcb-ADSP-enable.patch \ + file://0004-ADSP-enable-and-add-sound-hardware-abstraction.patch \ " # Install USB3.0 firmware to rootfs |