* [PATCH v5 0/4] [PATCH v5 0/4] arm64: dts: renesas: Add RZ/G3E audio enablement
@ 2026-06-10 7:46 John Madieu
2026-06-10 7:46 ` [PATCH v5 1/4] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: John Madieu @ 2026-06-10 7:46 UTC (permalink / raw)
To: geert+renesas, magnus.damm, robh, krzk+dt, conor+dt
Cc: linux-renesas-soc, devicetree, linux-kernel, biju.das.jz,
john.madieu, John Madieu
This is the remainder of the RZ/G3E audio enablement series. In v4, Geert
queued the clock and clock-input groundwork for v7.3, so it is not resent
here:
- dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family
-> renesas-clk
- clk: renesas: r9a09g047: Add audio clock and reset support
-> renesas-clk
- arm64: dts: renesas: rzv2h: Add audio clock inputs
-> renesas-devel
- arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support
-> renesas-devel
This v5 carries only the four patches that were reviewed but not queued.
The sound node in 1/4 references the audio module clocks and resets added
by the queued clk patches, so this series depends on the renesas-clk queue
and is based on renesas-devel for v7.3.
Changes:
v5:
- Resend only the four patches not queued for v7.3 (the four above are
dropped from the series).
- Sound node: hexadecimal module clock/reset numbers, lowercase 0x1f000
SSI size, SCU reg extended to 0x20000 to cover the SCU DMAC, per-line
clock/reset comments dropped.
- Versa3: drop the unconnected DIFF2 output, document DIFF1/Ethernet.
- Pinmux: hyphenate node names, sort entries by GPIO number.
- Codec: drop the unnecessary #address-cells/#size-cells on codec@1a
(sashiko-bot); add Geert's Reviewed-by.
v4:
- Link to v4 at [1]
- Sound node: dotted clock/reset names moved to hyphenated form, legacy
rcar_sound,* sub-nodes renamed to unprefixed ctu/dvc/mix/src/ssi/ssiu,
clocks/resets reordered ascending, explanatory comment blocks dropped,
dmas continuation lines aligned, commit message corrected (snd_rzg3e).
- Versa3, pinmux, codec: no changes.
v3:
- Sound node: commit description typo fix.
- Versa3, pinmux, codec: no changes.
v2:
- Sound node: drop the 2-cells specifier on the audio DMA assignment and
stop updating DMAC #dma-cells.
- Versa3, pinmux, codec: no changes.
[1] https://lore.kernel.org/r/20260525110603.4018170-1-john.madieu.xa@bp.renesas.com
John Madieu (4):
arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support
arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator
arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions
arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec
support
arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 462 ++++++++++++++++++
.../boot/dts/renesas/r9a09g047e57-smarc.dts | 114 +++++
.../boot/dts/renesas/rzg3e-smarc-som.dtsi | 32 ++
3 files changed, 608 insertions(+)
--
2.25.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v5 1/4] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support 2026-06-10 7:46 [PATCH v5 0/4] [PATCH v5 0/4] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu @ 2026-06-10 7:46 ` John Madieu 2026-06-10 7:47 ` [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu ` (2 subsequent siblings) 3 siblings, 0 replies; 8+ messages in thread From: John Madieu @ 2026-06-10 7:46 UTC (permalink / raw) To: geert+renesas, magnus.damm, robh, krzk+dt, conor+dt Cc: linux-renesas-soc, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu Add the snd_rzg3e node for the RZ/G3E SoC with all sub-components: - SSI (Serial Sound Interface) units 0-9 - SSIU (Serial Sound Interface Unit) units 0-27 - SRC (Sample Rate Converter) units 0-9 - CTU (Channel Transfer Unit) units 0-7 - DVC (Digital Volume Control) units 0-1 - MIX (Mixer) units 0-1 Sub-node names follow the new RZ/G3E sound binding: unprefixed 'ssi', 'ssiu', 'src', 'dvc', 'mix', 'ctu' wrapper nodes instead of the legacy 'rcar_sound,xxx' R-Car prefix. Wire up all 5 DMA controllers (dmac0-dmac4) for each audio sub-node with repeated channel names, so that the DMA core can pick the first available controller. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v5: - Use hexadecimal CPG module clock numbers, for easier matching with the documentation. - Use hexadecimal CPG module reset numbers. - Lowercase the SSI reg size: 0x1F000 -> 0x1f000. - Extend the SCU reg region from 0x10000 to 0x20000 to cover the SCU DMAC. - Drop the per-line clock/reset comments now that the numbers are hex and the names are self-documenting, and pack clocks/resets two entries per line so each line lines up with its clock-names/reset-names counterpart. v4: - Rename the indexed clock-names and reset-names from the dotted form (ssi.N, src.N, adg.ssi.N, clk_a, clk_b, clk_c, clk_i) to the hyphenated form (ssi-N, src-N, adg-ssi-N, audio-clka, audio-clkb, audio-clkc, audio-clki), matching the new RZ/G3E sound binding. - Rename the sub-nodes from the legacy rcar_sound,{ctu,dvc,mix,src, ssi,ssiu} prefix to the unprefixed ctu/dvc/mix/src/ssi/ssiu names used by the new RZ/G3E sound binding. - Reorder the clocks and resets phandle lists into ascending index order and annotate each entry with a per-line comment naming the clock / reset. - Drop the #sound-dai-cells and #clock-cells explanatory comment blocks from the node. - Align the continuation lines of the dmas property. - Fix the commit message: the node label is snd_rzg3e (v3 referred to it as rzg3e_sound), and add a paragraph noting the unprefixed sub-node names. v3: Typo fix in commit description v2: - Remove 2-cells specifier on audio DMA assignment - Do not update DMAC #dma-cells anymore arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 462 +++++++++++++++++++++ 1 file changed, 462 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi index 1251e329e380..048c22f80f8c 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi @@ -912,6 +912,468 @@ rsci9: serial@12803000 { status = "disabled"; }; + snd_rzg3e: sound@13c00000 { + compatible = "renesas,r9a09g047-sound"; + reg = <0 0x13c00000 0 0x10000>, /* SCU */ + <0 0x13c20000 0 0x10000>, /* ADG */ + <0 0x13c30000 0 0x1000>, /* SSIU */ + <0 0x13c31000 0 0x1f000>, /* SSI */ + <0 0x13c50000 0 0x10000>; /* Audio DMAC peri peri */ + reg-names = "scu", "adg", "ssiu", "ssi", "audmapp"; + clocks = <&cpg CPG_MOD 0xf5>, + <&cpg CPG_MOD 0x181>, <&cpg CPG_MOD 0x182>, + <&cpg CPG_MOD 0x183>, <&cpg CPG_MOD 0x184>, + <&cpg CPG_MOD 0x185>, <&cpg CPG_MOD 0x186>, + <&cpg CPG_MOD 0x187>, <&cpg CPG_MOD 0x188>, + <&cpg CPG_MOD 0x189>, <&cpg CPG_MOD 0x18a>, + <&cpg CPG_MOD 0x174>, <&cpg CPG_MOD 0x175>, + <&cpg CPG_MOD 0x176>, <&cpg CPG_MOD 0x177>, + <&cpg CPG_MOD 0x178>, <&cpg CPG_MOD 0x179>, + <&cpg CPG_MOD 0x17a>, <&cpg CPG_MOD 0x17b>, + <&cpg CPG_MOD 0x17c>, <&cpg CPG_MOD 0x17d>, + <&cpg CPG_MOD 0x172>, <&cpg CPG_MOD 0x173>, + <&cpg CPG_MOD 0x172>, <&cpg CPG_MOD 0x173>, + <&cpg CPG_MOD 0x170>, <&cpg CPG_MOD 0x171>, + <&cpg CPG_MOD 0xfb>, <&cpg CPG_MOD 0xfc>, + <&cpg CPG_MOD 0xfd>, <&cpg CPG_MOD 0xfa>, + <&cpg CPG_MOD 0x180>, + <&cpg CPG_MOD 0xf6>, <&cpg CPG_MOD 0xf7>, + <&cpg CPG_MOD 0x17e>, + <&cpg CPG_MOD 0x160>, <&cpg CPG_MOD 0x161>, + <&cpg CPG_MOD 0x162>, <&cpg CPG_MOD 0x163>, + <&cpg CPG_MOD 0x164>, <&cpg CPG_MOD 0x165>, + <&cpg CPG_MOD 0x166>, <&cpg CPG_MOD 0x167>, + <&cpg CPG_MOD 0x168>, <&cpg CPG_MOD 0x169>, + <&cpg CPG_MOD 0xf8>, <&cpg CPG_MOD 0xf9>; + clock-names = "ssi-all", + "ssi-0", "ssi-1", + "ssi-2", "ssi-3", + "ssi-4", "ssi-5", + "ssi-6", "ssi-7", + "ssi-8", "ssi-9", + "src-0", "src-1", + "src-2", "src-3", + "src-4", "src-5", + "src-6", "src-7", + "src-8", "src-9", + "mix-0", "mix-1", + "ctu-0", "ctu-1", + "dvc-0", "dvc-1", + "audio-clka", "audio-clkb", + "audio-clkc", "audio-clki", + "ssif_supply", + "scu", "scu_x2", + "scu_supply", + "adg-ssi-0", "adg-ssi-1", + "adg-ssi-2", "adg-ssi-3", + "adg-ssi-4", "adg-ssi-5", + "adg-ssi-6", "adg-ssi-7", + "adg-ssi-8", "adg-ssi-9", + "audmapp", "adg"; + power-domains = <&cpg>; + resets = <&cpg 0xe1>, + <&cpg 0xe2>, <&cpg 0xe3>, + <&cpg 0xe4>, <&cpg 0xe5>, + <&cpg 0xe6>, <&cpg 0xe7>, + <&cpg 0xe8>, <&cpg 0xe9>, + <&cpg 0xea>, <&cpg 0xeb>, + <&cpg 0xec>, <&cpg 0xee>, + <&cpg 0xed>; + reset-names = "ssi-all", + "ssi-0", "ssi-1", + "ssi-2", "ssi-3", + "ssi-4", "ssi-5", + "ssi-6", "ssi-7", + "ssi-8", "ssi-9", + "scu", "adg", + "audmapp"; + status = "disabled"; + + ctu { + ctu00: ctu-0 { }; + ctu01: ctu-1 { }; + ctu02: ctu-2 { }; + ctu03: ctu-3 { }; + ctu10: ctu-4 { }; + ctu11: ctu-5 { }; + ctu12: ctu-6 { }; + ctu13: ctu-7 { }; + }; + + dvc { + dvc0: dvc-0 { + dmas = <&dmac0 0x1db3>, <&dmac1 0x1db3>, + <&dmac2 0x1db3>, <&dmac3 0x1db3>, + <&dmac4 0x1db3>; + dma-names = "tx", "tx", "tx", "tx", "tx"; + }; + dvc1: dvc-1 { + dmas = <&dmac0 0x1db4>, <&dmac1 0x1db4>, + <&dmac2 0x1db4>, <&dmac3 0x1db4>, + <&dmac4 0x1db4>; + dma-names = "tx", "tx", "tx", "tx", "tx"; + }; + }; + + mix { + mix0: mix-0 { }; + mix1: mix-1 { }; + }; + + src { + src0: src-0 { + interrupts = <GIC_SPI 902 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1d9f>, <&dmac0 0x1da9>, + <&dmac1 0x1d9f>, <&dmac1 0x1da9>, + <&dmac2 0x1d9f>, <&dmac2 0x1da9>, + <&dmac3 0x1d9f>, <&dmac3 0x1da9>, + <&dmac4 0x1d9f>, <&dmac4 0x1da9>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src1: src-1 { + interrupts = <GIC_SPI 903 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da0>, <&dmac0 0x1daa>, + <&dmac1 0x1da0>, <&dmac1 0x1daa>, + <&dmac2 0x1da0>, <&dmac2 0x1daa>, + <&dmac3 0x1da0>, <&dmac3 0x1daa>, + <&dmac4 0x1da0>, <&dmac4 0x1daa>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src2: src-2 { + interrupts = <GIC_SPI 904 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da1>, <&dmac0 0x1dab>, + <&dmac1 0x1da1>, <&dmac1 0x1dab>, + <&dmac2 0x1da1>, <&dmac2 0x1dab>, + <&dmac3 0x1da1>, <&dmac3 0x1dab>, + <&dmac4 0x1da1>, <&dmac4 0x1dab>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src3: src-3 { + interrupts = <GIC_SPI 905 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da2>, <&dmac0 0x1dac>, + <&dmac1 0x1da2>, <&dmac1 0x1dac>, + <&dmac2 0x1da2>, <&dmac2 0x1dac>, + <&dmac3 0x1da2>, <&dmac3 0x1dac>, + <&dmac4 0x1da2>, <&dmac4 0x1dac>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src4: src-4 { + interrupts = <GIC_SPI 906 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da3>, <&dmac0 0x1dad>, + <&dmac1 0x1da3>, <&dmac1 0x1dad>, + <&dmac2 0x1da3>, <&dmac2 0x1dad>, + <&dmac3 0x1da3>, <&dmac3 0x1dad>, + <&dmac4 0x1da3>, <&dmac4 0x1dad>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src5: src-5 { + interrupts = <GIC_SPI 907 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da4>, <&dmac0 0x1dae>, + <&dmac1 0x1da4>, <&dmac1 0x1dae>, + <&dmac2 0x1da4>, <&dmac2 0x1dae>, + <&dmac3 0x1da4>, <&dmac3 0x1dae>, + <&dmac4 0x1da4>, <&dmac4 0x1dae>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src6: src-6 { + interrupts = <GIC_SPI 908 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da5>, <&dmac0 0x1daf>, + <&dmac1 0x1da5>, <&dmac1 0x1daf>, + <&dmac2 0x1da5>, <&dmac2 0x1daf>, + <&dmac3 0x1da5>, <&dmac3 0x1daf>, + <&dmac4 0x1da5>, <&dmac4 0x1daf>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src7: src-7 { + interrupts = <GIC_SPI 909 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da6>, <&dmac0 0x1db0>, + <&dmac1 0x1da6>, <&dmac1 0x1db0>, + <&dmac2 0x1da6>, <&dmac2 0x1db0>, + <&dmac3 0x1da6>, <&dmac3 0x1db0>, + <&dmac4 0x1da6>, <&dmac4 0x1db0>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src8: src-8 { + interrupts = <GIC_SPI 910 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da7>, <&dmac0 0x1db1>, + <&dmac1 0x1da7>, <&dmac1 0x1db1>, + <&dmac2 0x1da7>, <&dmac2 0x1db1>, + <&dmac3 0x1da7>, <&dmac3 0x1db1>, + <&dmac4 0x1da7>, <&dmac4 0x1db1>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + src9: src-9 { + interrupts = <GIC_SPI 911 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&dmac0 0x1da8>, <&dmac0 0x1db2>, + <&dmac1 0x1da8>, <&dmac1 0x1db2>, + <&dmac2 0x1da8>, <&dmac2 0x1db2>, + <&dmac3 0x1da8>, <&dmac3 0x1db2>, + <&dmac4 0x1da8>, <&dmac4 0x1db2>; + dma-names = "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx"; + }; + }; + + ssi { + ssi0: ssi-0 { + interrupts = <GIC_SPI 889 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi1: ssi-1 { + interrupts = <GIC_SPI 890 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi2: ssi-2 { + interrupts = <GIC_SPI 891 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi3: ssi-3 { + interrupts = <GIC_SPI 892 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi4: ssi-4 { + interrupts = <GIC_SPI 893 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi5: ssi-5 { + interrupts = <GIC_SPI 894 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi6: ssi-6 { + interrupts = <GIC_SPI 895 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi7: ssi-7 { + interrupts = <GIC_SPI 896 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi8: ssi-8 { + interrupts = <GIC_SPI 897 IRQ_TYPE_LEVEL_HIGH>; + }; + ssi9: ssi-9 { + interrupts = <GIC_SPI 898 IRQ_TYPE_LEVEL_HIGH>; + }; + }; + + ssiu { + ssiu00: ssiu-0 { + dmas = <&dmac0 0x1d61>, <&dmac0 0x1d62>, + <&dmac1 0x1d61>, <&dmac1 0x1d62>, + <&dmac2 0x1d61>, <&dmac2 0x1d62>, + <&dmac3 0x1d61>, <&dmac3 0x1d62>, + <&dmac4 0x1d61>, <&dmac4 0x1d62>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu01: ssiu-1 { + dmas = <&dmac0 0x1d63>, <&dmac0 0x1d64>, + <&dmac1 0x1d63>, <&dmac1 0x1d64>, + <&dmac2 0x1d63>, <&dmac2 0x1d64>, + <&dmac3 0x1d63>, <&dmac3 0x1d64>, + <&dmac4 0x1d63>, <&dmac4 0x1d64>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu02: ssiu-2 { + dmas = <&dmac0 0x1d65>, <&dmac0 0x1d66>, + <&dmac1 0x1d65>, <&dmac1 0x1d66>, + <&dmac2 0x1d65>, <&dmac2 0x1d66>, + <&dmac3 0x1d65>, <&dmac3 0x1d66>, + <&dmac4 0x1d65>, <&dmac4 0x1d66>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu03: ssiu-3 { + dmas = <&dmac0 0x1d67>, <&dmac0 0x1d68>, + <&dmac1 0x1d67>, <&dmac1 0x1d68>, + <&dmac2 0x1d67>, <&dmac2 0x1d68>, + <&dmac3 0x1d67>, <&dmac3 0x1d68>, + <&dmac4 0x1d67>, <&dmac4 0x1d68>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu10: ssiu-4 { + dmas = <&dmac0 0x1d69>, <&dmac0 0x1d6a>, + <&dmac1 0x1d69>, <&dmac1 0x1d6a>, + <&dmac2 0x1d69>, <&dmac2 0x1d6a>, + <&dmac3 0x1d69>, <&dmac3 0x1d6a>, + <&dmac4 0x1d69>, <&dmac4 0x1d6a>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu11: ssiu-5 { + dmas = <&dmac0 0x1d6b>, <&dmac0 0x1d6c>, + <&dmac1 0x1d6b>, <&dmac1 0x1d6c>, + <&dmac2 0x1d6b>, <&dmac2 0x1d6c>, + <&dmac3 0x1d6b>, <&dmac3 0x1d6c>, + <&dmac4 0x1d6b>, <&dmac4 0x1d6c>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu12: ssiu-6 { + dmas = <&dmac0 0x1d6d>, <&dmac0 0x1d6e>, + <&dmac1 0x1d6d>, <&dmac1 0x1d6e>, + <&dmac2 0x1d6d>, <&dmac2 0x1d6e>, + <&dmac3 0x1d6d>, <&dmac3 0x1d6e>, + <&dmac4 0x1d6d>, <&dmac4 0x1d6e>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu13: ssiu-7 { + dmas = <&dmac0 0x1d6f>, <&dmac0 0x1d70>, + <&dmac1 0x1d6f>, <&dmac1 0x1d70>, + <&dmac2 0x1d6f>, <&dmac2 0x1d70>, + <&dmac3 0x1d6f>, <&dmac3 0x1d70>, + <&dmac4 0x1d6f>, <&dmac4 0x1d70>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu20: ssiu-8 { + dmas = <&dmac0 0x1d71>, <&dmac0 0x1d72>, + <&dmac1 0x1d71>, <&dmac1 0x1d72>, + <&dmac2 0x1d71>, <&dmac2 0x1d72>, + <&dmac3 0x1d71>, <&dmac3 0x1d72>, + <&dmac4 0x1d71>, <&dmac4 0x1d72>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu21: ssiu-9 { + dmas = <&dmac0 0x1d73>, <&dmac0 0x1d74>, + <&dmac1 0x1d73>, <&dmac1 0x1d74>, + <&dmac2 0x1d73>, <&dmac2 0x1d74>, + <&dmac3 0x1d73>, <&dmac3 0x1d74>, + <&dmac4 0x1d73>, <&dmac4 0x1d74>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu22: ssiu-10 { + dmas = <&dmac0 0x1d75>, <&dmac0 0x1d76>, + <&dmac1 0x1d75>, <&dmac1 0x1d76>, + <&dmac2 0x1d75>, <&dmac2 0x1d76>, + <&dmac3 0x1d75>, <&dmac3 0x1d76>, + <&dmac4 0x1d75>, <&dmac4 0x1d76>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu23: ssiu-11 { + dmas = <&dmac0 0x1d77>, <&dmac0 0x1d78>, + <&dmac1 0x1d77>, <&dmac1 0x1d78>, + <&dmac2 0x1d77>, <&dmac2 0x1d78>, + <&dmac3 0x1d77>, <&dmac3 0x1d78>, + <&dmac4 0x1d77>, <&dmac4 0x1d78>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu30: ssiu-12 { + dmas = <&dmac0 0x1d79>, <&dmac0 0x1d7a>, + <&dmac1 0x1d79>, <&dmac1 0x1d7a>, + <&dmac2 0x1d79>, <&dmac2 0x1d7a>, + <&dmac3 0x1d79>, <&dmac3 0x1d7a>, + <&dmac4 0x1d79>, <&dmac4 0x1d7a>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu31: ssiu-13 { + dmas = <&dmac0 0x1d7b>, <&dmac0 0x1d7c>, + <&dmac1 0x1d7b>, <&dmac1 0x1d7c>, + <&dmac2 0x1d7b>, <&dmac2 0x1d7c>, + <&dmac3 0x1d7b>, <&dmac3 0x1d7c>, + <&dmac4 0x1d7b>, <&dmac4 0x1d7c>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu32: ssiu-14 { + dmas = <&dmac0 0x1d7d>, <&dmac0 0x1d7e>, + <&dmac1 0x1d7d>, <&dmac1 0x1d7e>, + <&dmac2 0x1d7d>, <&dmac2 0x1d7e>, + <&dmac3 0x1d7d>, <&dmac3 0x1d7e>, + <&dmac4 0x1d7d>, <&dmac4 0x1d7e>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu33: ssiu-15 { + dmas = <&dmac0 0x1d7f>, <&dmac0 0x1d80>, + <&dmac1 0x1d7f>, <&dmac1 0x1d80>, + <&dmac2 0x1d7f>, <&dmac2 0x1d80>, + <&dmac3 0x1d7f>, <&dmac3 0x1d80>, + <&dmac4 0x1d7f>, <&dmac4 0x1d80>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu40: ssiu-16 { + dmas = <&dmac0 0x1d81>, <&dmac0 0x1d82>, + <&dmac1 0x1d81>, <&dmac1 0x1d82>, + <&dmac2 0x1d81>, <&dmac2 0x1d82>, + <&dmac3 0x1d81>, <&dmac3 0x1d82>, + <&dmac4 0x1d81>, <&dmac4 0x1d82>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu41: ssiu-17 { + dmas = <&dmac0 0x1d83>, <&dmac0 0x1d84>, + <&dmac1 0x1d83>, <&dmac1 0x1d84>, + <&dmac2 0x1d83>, <&dmac2 0x1d84>, + <&dmac3 0x1d83>, <&dmac3 0x1d84>, + <&dmac4 0x1d83>, <&dmac4 0x1d84>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu42: ssiu-18 { + dmas = <&dmac0 0x1d85>, <&dmac0 0x1d86>, + <&dmac1 0x1d85>, <&dmac1 0x1d86>, + <&dmac2 0x1d85>, <&dmac2 0x1d86>, + <&dmac3 0x1d85>, <&dmac3 0x1d86>, + <&dmac4 0x1d85>, <&dmac4 0x1d86>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu43: ssiu-19 { + dmas = <&dmac0 0x1d87>, <&dmac0 0x1d88>, + <&dmac1 0x1d87>, <&dmac1 0x1d88>, + <&dmac2 0x1d87>, <&dmac2 0x1d88>, + <&dmac3 0x1d87>, <&dmac3 0x1d88>, + <&dmac4 0x1d87>, <&dmac4 0x1d88>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu50: ssiu-20 { + dmas = <&dmac0 0x1d89>, <&dmac0 0x1d8a>, + <&dmac1 0x1d89>, <&dmac1 0x1d8a>, + <&dmac2 0x1d89>, <&dmac2 0x1d8a>, + <&dmac3 0x1d89>, <&dmac3 0x1d8a>, + <&dmac4 0x1d89>, <&dmac4 0x1d8a>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu60: ssiu-21 { + dmas = <&dmac0 0x1d8b>, <&dmac0 0x1d8c>, + <&dmac1 0x1d8b>, <&dmac1 0x1d8c>, + <&dmac2 0x1d8b>, <&dmac2 0x1d8c>, + <&dmac3 0x1d8b>, <&dmac3 0x1d8c>, + <&dmac4 0x1d8b>, <&dmac4 0x1d8c>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu70: ssiu-22 { + dmas = <&dmac0 0x1d8d>, <&dmac0 0x1d8e>, + <&dmac1 0x1d8d>, <&dmac1 0x1d8e>, + <&dmac2 0x1d8d>, <&dmac2 0x1d8e>, + <&dmac3 0x1d8d>, <&dmac3 0x1d8e>, + <&dmac4 0x1d8d>, <&dmac4 0x1d8e>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu80: ssiu-23 { + dmas = <&dmac0 0x1d8f>, <&dmac0 0x1d90>, + <&dmac1 0x1d8f>, <&dmac1 0x1d90>, + <&dmac2 0x1d8f>, <&dmac2 0x1d90>, + <&dmac3 0x1d8f>, <&dmac3 0x1d90>, + <&dmac4 0x1d8f>, <&dmac4 0x1d90>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu90: ssiu-24 { + dmas = <&dmac0 0x1d91>, <&dmac0 0x1d92>, + <&dmac1 0x1d91>, <&dmac1 0x1d92>, + <&dmac2 0x1d91>, <&dmac2 0x1d92>, + <&dmac3 0x1d91>, <&dmac3 0x1d92>, + <&dmac4 0x1d91>, <&dmac4 0x1d92>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu91: ssiu-25 { + dmas = <&dmac0 0x1d93>, <&dmac0 0x1d94>, + <&dmac1 0x1d93>, <&dmac1 0x1d94>, + <&dmac2 0x1d93>, <&dmac2 0x1d94>, + <&dmac3 0x1d93>, <&dmac3 0x1d94>, + <&dmac4 0x1d93>, <&dmac4 0x1d94>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu92: ssiu-26 { + dmas = <&dmac0 0x1d95>, <&dmac0 0x1d96>, + <&dmac1 0x1d95>, <&dmac1 0x1d96>, + <&dmac2 0x1d95>, <&dmac2 0x1d96>, + <&dmac3 0x1d95>, <&dmac3 0x1d96>, + <&dmac4 0x1d95>, <&dmac4 0x1d96>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + ssiu93: ssiu-27 { + dmas = <&dmac0 0x1d97>, <&dmac0 0x1d98>, + <&dmac1 0x1d97>, <&dmac1 0x1d98>, + <&dmac2 0x1d97>, <&dmac2 0x1d98>, + <&dmac3 0x1d97>, <&dmac3 0x1d98>, + <&dmac4 0x1d97>, <&dmac4 0x1d98>; + dma-names = "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx", "tx", "rx"; + }; + }; + }; + wdt1: watchdog@14400000 { compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt"; reg = <0 0x14400000 0 0x400>; -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator 2026-06-10 7:46 [PATCH v5 0/4] [PATCH v5 0/4] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu 2026-06-10 7:46 ` [PATCH v5 1/4] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu @ 2026-06-10 7:47 ` John Madieu 2026-06-10 7:51 ` sashiko-bot 2026-06-10 8:13 ` Biju Das 2026-06-10 7:47 ` [PATCH v5 3/4] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu 2026-06-10 7:47 ` [PATCH v5 4/4] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 3 siblings, 2 replies; 8+ messages in thread From: John Madieu @ 2026-06-10 7:47 UTC (permalink / raw) To: geert+renesas, magnus.damm, robh, krzk+dt, conor+dt Cc: linux-renesas-soc, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu Add the Renesas 5P35023 (Versa3) programmable clock generator on the I2C2 bus along with its 24MHz input clock (x2 oscillator) to feed the audio subsystem. The Versa3 provides the following clock outputs: - Output 0: 24MHz (reference) - Output 1: 12.288MHz (audio, 48kHz family) - Output 2: 11.2896MHz (audio, 44.1kHz family) - Output 3: 12.288MHz (audio) - Output 4: 25MHz (DIFF1, Ethernet) These clocks are required for the audio codec and the Ethernet controller found on the RZ/G3E SMARC EVK. Output 5 (DIFF2) is left out, as it is not connected on this board. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v5: - Drop Versa3 output 5 (DIFF2), as it is not connected. - Document output 4 (DIFF1) in the commit message; it is needed for Ethernet. v4: No changes v3: No changes v2: No changes .../boot/dts/renesas/rzg3e-smarc-som.dtsi | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi index 15c22dbf0ad3..e951609d39e9 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -78,6 +78,12 @@ reg_vdd0p8v_others: regulator-vdd0p8v-others { regulator-always-on; }; + x2: x2-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + /* 32.768kHz crystal */ x3: x3-clock { compatible = "fixed-clock"; @@ -137,6 +143,20 @@ raa215300: pmic@12 { interrupts-extended = <&pinctrl RZG3E_GPIO(S, 1) IRQ_TYPE_EDGE_FALLING>; }; + + versa3: clock-generator@68 { + compatible = "renesas,5p35023"; + reg = <0x68>; + #clock-cells = <1>; + clocks = <&x2>; + + assigned-clocks = <&versa3 0>, <&versa3 1>, + <&versa3 2>, <&versa3 3>, + <&versa3 4>, <&versa3 5>; + assigned-clock-rates = <24000000>, <12288000>, + <11289600>, <12288000>, + <25000000>, <25000000>; + }; }; &i3c { -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator 2026-06-10 7:47 ` [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu @ 2026-06-10 7:51 ` sashiko-bot 2026-06-10 8:13 ` Biju Das 1 sibling, 0 replies; 8+ messages in thread From: sashiko-bot @ 2026-06-10 7:51 UTC (permalink / raw) To: John Madieu; +Cc: robh, conor+dt, devicetree, wsa+renesas Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] The device tree configuration contradicts the commit message regarding Versa3 output 5. -- commit ec1059eb98c4c04f3768f67639d5fd666ce6ef3b Author: John Madieu <john.madieu.xa@bp.renesas.com> arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator This patch adds the Renesas 5P35023 (Versa3) programmable clock generator on the I2C2 bus for the RZ/G3E SMARC EVK. It configures outputs 0 through 4 to provide the necessary reference, audio, and Ethernet clocks. > diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > index d978619155d24..89428c804efb4 100644 > --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi [ ... ] > @@ -130,6 +136,20 @@ raa215300: pmic@12 { > > interrupts-extended = <&pinctrl RZG3E_GPIO(S, 1) IRQ_TYPE_EDGE_FALLING>; > }; > + > + versa3: clock-generator@68 { > + compatible = "renesas,5p35023"; > + reg = <0x68>; > + #clock-cells = <1>; > + clocks = <&x2>; > + > + assigned-clocks = <&versa3 0>, <&versa3 1>, > + <&versa3 2>, <&versa3 3>, > + <&versa3 4>, <&versa3 5>; > + assigned-clock-rates = <24000000>, <12288000>, > + <11289600>, <12288000>, > + <25000000>, <25000000>; [Severity: Medium] The commit message states "Output 5 (DIFF2) is left out, as it is not connected on this board." Is the inclusion of <&versa3 5> in the assigned-clocks property intentional? The arrays configure output 5 to 25MHz, which contradicts the commit message and might unnecessarily enable an unconnected clock output. > + }; > }; > > &i3c { -- Sashiko AI review · https://sashiko.dev/#/patchset/20260610074702.1743334-1-john.madieu.xa@bp.renesas.com?part=2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator 2026-06-10 7:47 ` [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu 2026-06-10 7:51 ` sashiko-bot @ 2026-06-10 8:13 ` Biju Das 1 sibling, 0 replies; 8+ messages in thread From: Biju Das @ 2026-06-10 8:13 UTC (permalink / raw) To: John Madieu, geert+renesas@glider.be, magnus.damm, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, john.madieu@gmail.com Hi John, > -----Original Message----- > From: John Madieu <john.madieu.xa@bp.renesas.com> > Sent: 10 June 2026 08:47 > Subject: [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator > > Add the Renesas 5P35023 (Versa3) programmable clock generator on the > I2C2 bus along with its 24MHz input clock (x2 oscillator) to feed the audio subsystem. > > The Versa3 provides the following clock outputs: > - Output 0: 24MHz (reference) > - Output 1: 12.288MHz (audio, 48kHz family) > - Output 2: 11.2896MHz (audio, 44.1kHz family) > - Output 3: 12.288MHz (audio) > - Output 4: 25MHz (DIFF1, Ethernet) > > These clocks are required for the audio codec and the Ethernet controller found on the RZ/G3E SMARC > EVK. > > Output 5 (DIFF2) is left out, as it is not connected on this board. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> > --- > > Changes: > > v5: > - Drop Versa3 output 5 (DIFF2), as it is not connected. > - Document output 4 (DIFF1) in the commit message; it is needed for > Ethernet. > > v4: No changes > v3: No changes > v2: No changes > > .../boot/dts/renesas/rzg3e-smarc-som.dtsi | 20 +++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e- > smarc-som.dtsi > index 15c22dbf0ad3..e951609d39e9 100644 > --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > @@ -78,6 +78,12 @@ reg_vdd0p8v_others: regulator-vdd0p8v-others { > regulator-always-on; > }; > > + x2: x2-clock { > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + clock-frequency = <24000000>; > + }; > + > /* 32.768kHz crystal */ > x3: x3-clock { > compatible = "fixed-clock"; > @@ -137,6 +143,20 @@ raa215300: pmic@12 { > > interrupts-extended = <&pinctrl RZG3E_GPIO(S, 1) IRQ_TYPE_EDGE_FALLING>; > }; > + > + versa3: clock-generator@68 { > + compatible = "renesas,5p35023"; > + reg = <0x68>; > + #clock-cells = <1>; > + clocks = <&x2>; > + > + assigned-clocks = <&versa3 0>, <&versa3 1>, > + <&versa3 2>, <&versa3 3>, > + <&versa3 4>, <&versa3 5>; No need to assign clock rate for unconnected output. So drop <&versa3 5>; > + assigned-clock-rates = <24000000>, <12288000>, > + <11289600>, <12288000>, > + <25000000>, <25000000>; Drop <25000000>; > + }; > }; > > &i3c { > -- > 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 3/4] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions 2026-06-10 7:46 [PATCH v5 0/4] [PATCH v5 0/4] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu 2026-06-10 7:46 ` [PATCH v5 1/4] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu 2026-06-10 7:47 ` [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu @ 2026-06-10 7:47 ` John Madieu 2026-06-10 7:47 ` [PATCH v5 4/4] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 3 siblings, 0 replies; 8+ messages in thread From: John Madieu @ 2026-06-10 7:47 UTC (permalink / raw) To: geert+renesas, magnus.damm, robh, krzk+dt, conor+dt Cc: linux-renesas-soc, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu Add pinmux definitions for SSI3/SSI4 audio interface on RZ/G3E SMARC SoM: - sound_clk_pins: AUDIO_CLKB and AUDIO_CLKC clock outputs - sound_pins: SSI3_SCK, SSI3_WS, SSI3_SDATA (playback) and SSI4_SDATA (capture) Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v5: - No underscores in node names: rename sound_clk to sound-clk and the other pinmux node names accordingly. - Sort the pinmux entries by GPIO number. v4: No changes v3: No changes v2: No changes arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi index e951609d39e9..0951f02bd2b5 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -352,6 +352,18 @@ sd2-pwen { }; }; + sound_clk_pins: sound-clk { + pinmux = <RZG3E_PORT_PINMUX(4, 2, 8)>, /* AUDIO_CLKB */ + <RZG3E_PORT_PINMUX(4, 3, 8)>; /* AUDIO_CLKC */ + }; + + sound_pins: sound { + pinmux = <RZG3E_PORT_PINMUX(0, 2, 9)>, /* SSI3_SDATA */ + <RZG3E_PORT_PINMUX(0, 3, 9)>, /* SSI3_SCK */ + <RZG3E_PORT_PINMUX(0, 4, 9)>, /* SSI3_WS */ + <RZG3E_PORT_PINMUX(0, 5, 9)>; /* SSI4_SDATA */ + }; + xspi_pins: xspi0 { pinmux = <RZG3E_PORT_PINMUX(M, 0, 0)>, /* XSPI0_IO0 */ <RZG3E_PORT_PINMUX(M, 1, 0)>, /* XSPI0_IO1 */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v5 4/4] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support 2026-06-10 7:46 [PATCH v5 0/4] [PATCH v5 0/4] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu ` (2 preceding siblings ...) 2026-06-10 7:47 ` [PATCH v5 3/4] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu @ 2026-06-10 7:47 ` John Madieu 2026-06-10 8:01 ` sashiko-bot 3 siblings, 1 reply; 8+ messages in thread From: John Madieu @ 2026-06-10 7:47 UTC (permalink / raw) To: geert+renesas, magnus.damm, robh, krzk+dt, conor+dt Cc: linux-renesas-soc, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu RZ/G3E SMARC board has a DA7212 audio codec connected via I2C1 for sound input/output using SSI3/SSI4 where: - The codec receives its master clock from the Versa3 clock generator present on the SoM - SSI4 shares clock pins with SSI3 to provide a separate data line for full-duplex audio capture. Enable audio support on RZ/G3E SMARC2 EVK boards with a DA7212 audio codec. Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v5: No changes v4: No changes v3: No changes v2: No changes .../boot/dts/renesas/r9a09g047e57-smarc.dts | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts index 6372f582a7c4..7defd342294a 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts @@ -32,6 +32,37 @@ #include "rzg3e-smarc-som.dtsi" #include "renesas-smarc2.dtsi" +/* + * SSI-DA7212 + * + * These commands are required when Playback/Capture + * + * amixer -q cset name='Aux Switch' on + * amixer -q cset name='Mixin Left Aux Left Switch' on + * amixer -q cset name='Mixin Right Aux Right Switch' on + * amixer -q cset name='ADC Switch' on + * amixer -q cset name='Mixout Right Mixin Right Switch' off + * amixer -q cset name='Mixout Left Mixin Left Switch' off + * amixer -q cset name='Headphone Volume' 70% + * amixer -q cset name='Headphone Switch' on + * amixer -q cset name='Mixout Left DAC Left Switch' on + * amixer -q cset name='Mixout Right DAC Right Switch' on + * amixer -q cset name='DAC Left Source MUX' 'DAI Input Left' + * amixer -q cset name='DAC Right Source MUX' 'DAI Input Right' + * amixer -q sset 'Mic 1 Amp Source MUX' 'MIC_P' + * amixer -q sset 'Mic 2 Amp Source MUX' 'MIC_P' + * amixer -q sset 'Mixin Left Mic 1' on + * amixer -q sset 'Mixin Right Mic 2' on + * amixer -q sset 'Mic 1' 90% on + * amixer -q sset 'Mic 2' 90% on + * amixer -q sset 'Lineout' 80% on + * amixer -q set "Headphone" 100% on + * + * When Capture chained with DVC, use this command to amplify sound + * amixer set 'DVC In',0 80% + * For playback, use: amixer set 'DVC Out',0 80% + */ + / { model = "Renesas SMARC EVK version 2 based on r9a09g047e57"; compatible = "renesas,smarc2-evk", "renesas,rzg3e-smarcm", @@ -55,6 +86,22 @@ vqmmc_sd1_pvdd: regulator-vqmmc-sd1-pvdd { gpios-states = <0>; states = <3300000 0>, <1800000 1>; }; + + sound_card: sound { + compatible = "audio-graph-card"; + + label = "snd-rzg3e"; + + dais = <&rsnd_port0>; /* DA7212 */ + }; +}; + +&audio_clkb { + clock-frequency = <11289600>; +}; + +&audio_clkc { + clock-frequency = <12288000>; }; &canfd { @@ -99,6 +146,37 @@ &i2c0 { pinctrl-names = "default"; }; +&i2c1 { + da7212: codec@1a { + compatible = "dlg,da7212"; + #sound-dai-cells = <0>; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x1a>; + + clocks = <&versa3 1>; + clock-names = "mclk"; + + dlg,micbias1-lvl = <2500>; + dlg,micbias2-lvl = <2500>; + dlg,dmic-data-sel = "lrise_rfall"; + dlg,dmic-samplephase = "between_clkedge"; + dlg,dmic-clkrate = <3000000>; + + VDDA-supply = <®_1p8v>; + VDDSP-supply = <®_3p3v>; + VDDMIC-supply = <®_3p3v>; + VDDIO-supply = <®_1p8v>; + + port { + da7212_endpoint: endpoint { + remote-endpoint = <&rsnd_endpoint0>; + mclk-fs = <256>; + }; + }; + }; +}; + &keys { pinctrl-0 = <&nmi_pins>; pinctrl-names = "default"; @@ -280,6 +358,42 @@ &sdhi1 { vqmmc-supply = <&vqmmc_sd1_pvdd>; }; +&snd_rzg3e { + pinctrl-0 = <&sound_clk_pins &sound_pins>; + pinctrl-names = "default"; + + status = "okay"; + + /* audio_clkout */ + #clock-cells = <0>; + clock-frequency = <11289600>; + + /* Multi DAI */ + #sound-dai-cells = <1>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + rsnd_port0: port@0 { + reg = <0>; + rsnd_endpoint0: endpoint { + remote-endpoint = <&da7212_endpoint>; + + dai-format = "i2s"; + bitclock-master = <&rsnd_endpoint0>; + frame-master = <&rsnd_endpoint0>; + + playback = <&ssi3>, <&src1>, <&dvc1>; + capture = <&ssi4>, <&src0>, <&dvc0>; + }; + }; + }; +}; + +&ssi4 { + shared-pin; +}; + &usb3_phy { status = "okay"; }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 4/4] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support 2026-06-10 7:47 ` [PATCH v5 4/4] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu @ 2026-06-10 8:01 ` sashiko-bot 0 siblings, 0 replies; 8+ messages in thread From: sashiko-bot @ 2026-06-10 8:01 UTC (permalink / raw) To: John Madieu; +Cc: conor+dt, robh, wsa+renesas, devicetree Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: - [Medium] Uninitialized `i2c1` interface and missing pin multiplexing configuration. - [Low] Missing labels `audio_clkb` and `audio_clkc` resulting in device tree build error and incorrect clock configuration. - [Low] Unnecessary `#address-cells` and `#size-cells` properties in the `codec@1a` node. -- commit fe54753481ec78b59331c5d3dffff0a3ac46ac08 Author: John Madieu <john.madieu.xa@bp.renesas.com> arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support This patch enables audio support on the RZ/G3E SMARC EVK board. It configures a DA7212 audio codec on I2C1 and the SSI interfaces for playback and capture. > diff --git a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts > index 6372f582a7c41..7defd342294ad 100644 > --- a/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts > +++ b/arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts [ ... ] > @@ -55,6 +86,22 @@ vqmmc_sd1_pvdd: regulator-vqmmc-sd1-pvdd { > gpios-states = <0>; > states = <3300000 0>, <1800000 1>; > }; > + > + sound_card: sound { > + compatible = "audio-graph-card"; > + > + label = "snd-rzg3e"; > + > + dais = <&rsnd_port0>; /* DA7212 */ > + }; > +}; > + > +&audio_clkb { > + clock-frequency = <11289600>; > +}; > + > +&audio_clkc { > + clock-frequency = <12288000>; > }; [Severity: Low] Will this cause a dtc compilation error? The labels audio_clkb and audio_clkc do not appear to be defined in the included SoC device trees. Additionally, should these be configured as external fixed clocks? Since they are internal CPG module clocks, it might be more appropriate to configure their frequencies using assigned-clocks and assigned-clock-rates inside the snd_rzg3e node. [ ... ] > @@ -99,6 +146,37 @@ &i2c0 { > pinctrl-names = "default"; > }; > > +&i2c1 { [Severity: Medium] Is this missing the status = "okay" and pinctrl-0 properties? Without these, the I2C controller remains disabled by default, which may prevent the audio codec from initializing and cause the sound card binding to fail. > + da7212: codec@1a { > + compatible = "dlg,da7212"; > + #sound-dai-cells = <0>; > + #address-cells = <1>; > + #size-cells = <0>; [Severity: Low] Are the #address-cells and #size-cells properties necessary here? Since the only child node is a port without a unit address or a reg property, this could trigger an avoid_unnecessary_addr_size dtc schema warning. > + reg = <0x1a>; > + > + clocks = <&versa3 1>; > + clock-names = "mclk"; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260610074702.1743334-1-john.madieu.xa@bp.renesas.com?part=4 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-06-10 8:14 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-10 7:46 [PATCH v5 0/4] [PATCH v5 0/4] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu 2026-06-10 7:46 ` [PATCH v5 1/4] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu 2026-06-10 7:47 ` [PATCH v5 2/4] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu 2026-06-10 7:51 ` sashiko-bot 2026-06-10 8:13 ` Biju Das 2026-06-10 7:47 ` [PATCH v5 3/4] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu 2026-06-10 7:47 ` [PATCH v5 4/4] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 2026-06-10 8:01 ` sashiko-bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox