* [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement
@ 2026-05-25 11:05 John Madieu
2026-05-25 11:05 ` [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family John Madieu
` (7 more replies)
0 siblings, 8 replies; 29+ messages in thread
From: John Madieu @ 2026-05-25 11:05 UTC (permalink / raw)
To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt,
magnus.damm
Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk,
devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu
Add device tree support and board enablement for audio on the
RZ/G3E SMARC EVK with a Dialog DA7212 codec.
This series includes:
- CPG clock binding update for optional audio clock inputs
- CPG driver support for RZ/G3E audio clocks and resets
- Audio clock input nodes for RZ/V2H family DTSIs
- R-Car Sound node for RZ/G3E SoC DTSI
- Board-level enablement: I2C1, Versa3 clock generator, audio
pinmux, and DA7212 codec on SMARC EVK
Audio configuration on SMARC EVK:
- Codec: Dialog DA7212 on I2C1
- Playback: SSI3
- Capture: SSI4 -> SRC0 -> DVC0
- MCLK: 12.288MHz from Versa3 clock generator
- Format: I2S, R-Car Sound as clock master
- SSI4 shares clock pins with SSI3 (shared-pin)
Changes:
v4:
- Rebased onto a newer renesas-devel base (the CPG driver now
already carries the DSI/LCDC module clocks and resets).
- dt-bindings and clk driver: drop the AUDIO_CLKA input. AUDIO_CLKA
is fed internally by the AUDIO_EXTAL pin, which the binding
already describes, so adg_0_audio_clka is reparented on
CLK_AUDIO_EXTAL (Geert Uytterhoeven).
- clk driver: drop the internal core clocks Geert flagged as unused
(pllcm33_div4_ddiv2, pllcm33_div4_ddiv2_div2, pllcln_div32,
plldty_div2, plldty_div4, cdiv5_mainosc). pllcln_div4 is kept,
since scu_0_clkx2 is parented on it.
- clk driver: rename the audio module clocks and resets to the
names Geert suggested (ssif_0_clk, scu_0_clk, scu_0_clkx2,
dmacpp_0_clk, adg_0_clks1, adg_0_clk_195m, adg_0_audio_clk{a,b,c},
ssiu_supply_clk; SCU_0_RESET_SRU, DMACpp_0_ARST,
ADG_0_RST_RESET_ADG).
- clk driver: the adg_ssi[0-9]_clk parent is left as CLK_PLLCLN_DIV8.
Geert questioned this; the parent is unchanged, and the commit
message now explains that the ADG muxes these outputs at runtime
via ADG_AUDIO_CLK_SEL{0,1,2}.
- dts sound node: rename the indexed clock-names and reset-names
from the dotted form (ssi.N, src.N, adg.ssi.N, clk_a/b/c/i) to
the hyphenated form (ssi-N, src-N, adg-ssi-N, audio-clka/b/c/i),
and rename the sub-nodes from rcar_sound,xxx to the unprefixed
ssi/ssiu/src/dvc/mix/ctu, matching the new RZ/G3E sound binding.
- dts sound node: reorder the clocks and resets lists into
ascending index order, annotate each phandle with a per-line
comment, and drop the #sound-dai-cells / #clock-cells comment
blocks.
- dts: drop the audio_clka fixed-clock node from the RZ/V2H family
DTSIs and from the pinctrl clocks/clock-names lists, consistent
with dropping the AUDIO_CLKA input from the binding and driver.
- Link to v3 at [2].
v3:
- Splitout from v2 [1]
- No code changes
v2:
- Fix Rob's comment on maxItems not needed with items lists.
- Drop DMA ACK second cell from DT specifier
[1]: https://lore.kernel.org/all/20260402090524.9137-1-john.madieu.xa@bp.renesas.com/
[2]: https://lore.kernel.org/all/20260402163126.12135-1-john.madieu.xa@bp.renesas.com/
John Madieu (8):
dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family
clk: renesas: r9a09g047: Add audio clock and reset support
arm64: dts: renesas: rzv2h: Add audio clock inputs
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 I2C1 support
arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions
arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec
support
.../bindings/clock/renesas,rzv2h-cpg.yaml | 6 +
arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 496 +++++++++++++++++-
.../boot/dts/renesas/r9a09g047e57-smarc.dts | 114 ++++
arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 20 +-
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 20 +-
.../boot/dts/renesas/rzg3e-smarc-som.dtsi | 44 ++
drivers/clk/renesas/r9a09g047-cpg.c | 112 +++-
7 files changed, 805 insertions(+), 7 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 29+ messages in thread* [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu @ 2026-05-25 11:05 ` John Madieu 2026-05-25 11:19 ` sashiko-bot 2026-05-27 12:45 ` Geert Uytterhoeven 2026-05-25 11:05 ` [PATCH v4 2/8] clk: renesas: r9a09g047: Add audio clock and reset support John Madieu ` (6 subsequent siblings) 7 siblings, 2 replies; 29+ messages in thread From: John Madieu @ 2026-05-25 11:05 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu RZ/V2H, RZ/V2N, and RZ/G3E support two optional external audio clock inputs (AUDIO_CLKB and AUDIO_CLKC) that can be used by the Audio Clock Generator (ADG) to derive internal audio clocks. The third ADG input (AUDIO_CLKA) is fed internally by the AUDIO_EXTAL pin and does not need a separate binding entry. Update the bindings to allow these optional clocks for all RZ/V2H family SoCs. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v4: - Drop the AUDIO_CLKA clock input. AUDIO_CLKA is fed internally by the AUDIO_EXTAL pin, which the binding already describes, so only AUDIO_CLKB and AUDIO_CLKC need new clocks / clock-names entries (Geert Uytterhoeven). - Reword the commit message accordingly. v3: No changes v2: Remove maxItems as it not needed with items lists. .../devicetree/bindings/clock/renesas,rzv2h-cpg.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml index f261445bf341..dd3e66a4559b 100644 --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml @@ -26,16 +26,22 @@ properties: maxItems: 1 clocks: + minItems: 3 items: - description: AUDIO_EXTAL clock input - description: RTXIN clock input - description: QEXTAL clock input + - description: AUDIO_CLKB clock input + - description: AUDIO_CLKC clock input clock-names: + minItems: 3 items: - const: audio_extal - const: rtxin - const: qextal + - const: audio_clkb + - const: audio_clkc '#clock-cells': description: | -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-25 11:05 ` [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family John Madieu @ 2026-05-25 11:19 ` sashiko-bot 2026-05-25 16:56 ` Conor Dooley 2026-05-27 12:45 ` Geert Uytterhoeven 1 sibling, 1 reply; 29+ messages in thread From: sashiko-bot @ 2026-05-25 11:19 UTC (permalink / raw) To: John Madieu; +Cc: conor+dt, wsa+renesas, devicetree, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. -- commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 Author: John Madieu <john.madieu.xa@bp.renesas.com> dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family This commit updates the clock bindings for the RZ/V2H family SoCs to include the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The AUDIO_CLKA input is fed internally and thus does not require a binding entry. > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > @@ -26,16 +26,22 @@ properties: > maxItems: 1 > > clocks: > + minItems: 3 > items: > - description: AUDIO_EXTAL clock input > - description: RTXIN clock input > - description: QEXTAL clock input > + - description: AUDIO_CLKB clock input > + - description: AUDIO_CLKC clock input > > clock-names: > + minItems: 3 > items: > - const: audio_extal > - const: rtxin > - const: qextal > + - const: audio_clkb > + - const: audio_clkc [Severity: Medium] Will this strict array ordering prevent the independent use of the newly added optional clocks? Because JSON schema validates arrays strictly by position based on the items list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, the device tree node would provide an array of 4 clocks where the 4th name is audio_clkc. When dt_binding_check evaluates this, won't it check the 4th element against the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid hardware configuration? Should this use an anyOf block enumerating the valid permutations of optional clocks to avoid forcing users to write incorrect device trees to pass validation? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260525110603.4018170-1-john.madieu.xa@bp.renesas.com?part=1 ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-25 11:19 ` sashiko-bot @ 2026-05-25 16:56 ` Conor Dooley 2026-05-27 12:44 ` Geert Uytterhoeven 0 siblings, 1 reply; 29+ messages in thread From: Conor Dooley @ 2026-05-25 16:56 UTC (permalink / raw) To: sashiko-reviews; +Cc: John Madieu, conor+dt, wsa+renesas, devicetree, robh [-- Attachment #1: Type: text/plain, Size: 2427 bytes --] On Mon, May 25, 2026 at 11:19:19AM +0000, sashiko-bot@kernel.org wrote: > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. > -- > > commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 > Author: John Madieu <john.madieu.xa@bp.renesas.com> > > dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family > > This commit updates the clock bindings for the RZ/V2H family SoCs to include > the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The > AUDIO_CLKA input is fed internally and thus does not require a binding entry. > > > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > @@ -26,16 +26,22 @@ properties: > > maxItems: 1 > > > > clocks: > > + minItems: 3 > > items: > > - description: AUDIO_EXTAL clock input > > - description: RTXIN clock input > > - description: QEXTAL clock input > > + - description: AUDIO_CLKB clock input > > + - description: AUDIO_CLKC clock input > > > > clock-names: > > + minItems: 3 > > items: > > - const: audio_extal > > - const: rtxin > > - const: qextal > > + - const: audio_clkb > > + - const: audio_clkc > > [Severity: Medium] > Will this strict array ordering prevent the independent use of the newly > added optional clocks? > > Because JSON schema validates arrays strictly by position based on the items > list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, > the device tree node would provide an array of 4 clocks where the 4th name > is audio_clkc. > > When dt_binding_check evaluates this, won't it check the 4th element against > the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid > hardware configuration? > > Should this use an anyOf block enumerating the valid permutations of optional > clocks to avoid forcing users to write incorrect device trees to pass > validation? Seems like a valid question to me. Can be solved by making the second last clock an enum. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-25 16:56 ` Conor Dooley @ 2026-05-27 12:44 ` Geert Uytterhoeven 2026-05-27 14:54 ` Conor Dooley 0 siblings, 1 reply; 29+ messages in thread From: Geert Uytterhoeven @ 2026-05-27 12:44 UTC (permalink / raw) To: Conor Dooley Cc: sashiko-reviews, John Madieu, conor+dt, wsa+renesas, devicetree, robh Hi Conor, On Mon, 25 May 2026 at 18:57, Conor Dooley <conor@kernel.org> wrote: > On Mon, May 25, 2026 at 11:19:19AM +0000, sashiko-bot@kernel.org wrote: > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > > - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. > > -- > > > > commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 > > Author: John Madieu <john.madieu.xa@bp.renesas.com> > > > > dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family > > > > This commit updates the clock bindings for the RZ/V2H family SoCs to include > > the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The > > AUDIO_CLKA input is fed internally and thus does not require a binding entry. > > > > > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > @@ -26,16 +26,22 @@ properties: > > > maxItems: 1 > > > > > > clocks: > > > + minItems: 3 > > > items: > > > - description: AUDIO_EXTAL clock input > > > - description: RTXIN clock input > > > - description: QEXTAL clock input > > > + - description: AUDIO_CLKB clock input > > > + - description: AUDIO_CLKC clock input > > > > > > clock-names: > > > + minItems: 3 > > > items: > > > - const: audio_extal > > > - const: rtxin > > > - const: qextal > > > + - const: audio_clkb > > > + - const: audio_clkc > > > > [Severity: Medium] > > Will this strict array ordering prevent the independent use of the newly > > added optional clocks? > > > > Because JSON schema validates arrays strictly by position based on the items > > list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, > > the device tree node would provide an array of 4 clocks where the 4th name > > is audio_clkc. > > > > When dt_binding_check evaluates this, won't it check the 4th element against > > the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid > > hardware configuration? > > > > Should this use an anyOf block enumerating the valid permutations of optional > > clocks to avoid forcing users to write incorrect device trees to pass > > validation? > > Seems like a valid question to me. Can be solved by making the second > last clock an enum. Calling them optional may be a misnomer: these pins are present. Typically we provide zero rate fixed clocks for such clocks in the SoC .dtsi, to be filled in or replaced by the board .dts. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-27 12:44 ` Geert Uytterhoeven @ 2026-05-27 14:54 ` Conor Dooley 2026-05-27 15:45 ` Geert Uytterhoeven 0 siblings, 1 reply; 29+ messages in thread From: Conor Dooley @ 2026-05-27 14:54 UTC (permalink / raw) To: Geert Uytterhoeven Cc: sashiko-reviews, John Madieu, conor+dt, wsa+renesas, devicetree, robh [-- Attachment #1: Type: text/plain, Size: 3064 bytes --] On Wed, May 27, 2026 at 02:44:51PM +0200, Geert Uytterhoeven wrote: > Hi Conor, > > On Mon, 25 May 2026 at 18:57, Conor Dooley <conor@kernel.org> wrote: > > On Mon, May 25, 2026 at 11:19:19AM +0000, sashiko-bot@kernel.org wrote: > > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > > > - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. > > > -- > > > > > > commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 > > > Author: John Madieu <john.madieu.xa@bp.renesas.com> > > > > > > dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family > > > > > > This commit updates the clock bindings for the RZ/V2H family SoCs to include > > > the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The > > > AUDIO_CLKA input is fed internally and thus does not require a binding entry. > > > > > > > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > @@ -26,16 +26,22 @@ properties: > > > > maxItems: 1 > > > > > > > > clocks: > > > > + minItems: 3 > > > > items: > > > > - description: AUDIO_EXTAL clock input > > > > - description: RTXIN clock input > > > > - description: QEXTAL clock input > > > > + - description: AUDIO_CLKB clock input > > > > + - description: AUDIO_CLKC clock input > > > > > > > > clock-names: > > > > + minItems: 3 > > > > items: > > > > - const: audio_extal > > > > - const: rtxin > > > > - const: qextal > > > > + - const: audio_clkb > > > > + - const: audio_clkc > > > > > > [Severity: Medium] > > > Will this strict array ordering prevent the independent use of the newly > > > added optional clocks? > > > > > > Because JSON schema validates arrays strictly by position based on the items > > > list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, > > > the device tree node would provide an array of 4 clocks where the 4th name > > > is audio_clkc. > > > > > > When dt_binding_check evaluates this, won't it check the 4th element against > > > the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid > > > hardware configuration? > > > > > > Should this use an anyOf block enumerating the valid permutations of optional > > > clocks to avoid forcing users to write incorrect device trees to pass > > > validation? > > > > Seems like a valid question to me. Can be solved by making the second > > last clock an enum. > > Calling them optional may be a misnomer: these pins are present. > Typically we provide zero rate fixed clocks for such clocks in the > SoC .dtsi, to be filled in or replaced by the board .dts. IOW, either both clocks will be provided or none will be? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-27 14:54 ` Conor Dooley @ 2026-05-27 15:45 ` Geert Uytterhoeven 2026-05-27 16:36 ` Conor Dooley 0 siblings, 1 reply; 29+ messages in thread From: Geert Uytterhoeven @ 2026-05-27 15:45 UTC (permalink / raw) To: Conor Dooley Cc: sashiko-reviews, John Madieu, conor+dt, wsa+renesas, devicetree, robh Hi Conor, On Wed, 27 May 2026 at 16:54, Conor Dooley <conor@kernel.org> wrote: > On Wed, May 27, 2026 at 02:44:51PM +0200, Geert Uytterhoeven wrote: > > On Mon, 25 May 2026 at 18:57, Conor Dooley <conor@kernel.org> wrote: > > > On Mon, May 25, 2026 at 11:19:19AM +0000, sashiko-bot@kernel.org wrote: > > > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > > > > - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. > > > > -- > > > > > > > > commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 > > > > Author: John Madieu <john.madieu.xa@bp.renesas.com> > > > > > > > > dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family > > > > > > > > This commit updates the clock bindings for the RZ/V2H family SoCs to include > > > > the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The > > > > AUDIO_CLKA input is fed internally and thus does not require a binding entry. > > > > > > > > > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > @@ -26,16 +26,22 @@ properties: > > > > > maxItems: 1 > > > > > > > > > > clocks: > > > > > + minItems: 3 > > > > > items: > > > > > - description: AUDIO_EXTAL clock input > > > > > - description: RTXIN clock input > > > > > - description: QEXTAL clock input > > > > > + - description: AUDIO_CLKB clock input > > > > > + - description: AUDIO_CLKC clock input > > > > > > > > > > clock-names: > > > > > + minItems: 3 > > > > > items: > > > > > - const: audio_extal > > > > > - const: rtxin > > > > > - const: qextal > > > > > + - const: audio_clkb > > > > > + - const: audio_clkc > > > > > > > > [Severity: Medium] > > > > Will this strict array ordering prevent the independent use of the newly > > > > added optional clocks? > > > > > > > > Because JSON schema validates arrays strictly by position based on the items > > > > list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, > > > > the device tree node would provide an array of 4 clocks where the 4th name > > > > is audio_clkc. > > > > > > > > When dt_binding_check evaluates this, won't it check the 4th element against > > > > the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid > > > > hardware configuration? > > > > > > > > Should this use an anyOf block enumerating the valid permutations of optional > > > > clocks to avoid forcing users to write incorrect device trees to pass > > > > validation? > > > > > > Seems like a valid question to me. Can be solved by making the second > > > last clock an enum. > > > > Calling them optional may be a misnomer: these pins are present. > > Typically we provide zero rate fixed clocks for such clocks in the > > SoC .dtsi, to be filled in or replaced by the board .dts. > > IOW, either both clocks will be provided or none will be? Exactly, see the first hunk of "[PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs" later in this series. https://lore.kernel.org/20260525110603.4018170-4-john.madieu.xa@bp.renesas.com Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-27 15:45 ` Geert Uytterhoeven @ 2026-05-27 16:36 ` Conor Dooley 2026-06-04 11:39 ` Geert Uytterhoeven 0 siblings, 1 reply; 29+ messages in thread From: Conor Dooley @ 2026-05-27 16:36 UTC (permalink / raw) To: Geert Uytterhoeven Cc: sashiko-reviews, John Madieu, conor+dt, wsa+renesas, devicetree, robh [-- Attachment #1: Type: text/plain, Size: 3789 bytes --] On Wed, May 27, 2026 at 05:45:12PM +0200, Geert Uytterhoeven wrote: > Hi Conor, > > On Wed, 27 May 2026 at 16:54, Conor Dooley <conor@kernel.org> wrote: > > On Wed, May 27, 2026 at 02:44:51PM +0200, Geert Uytterhoeven wrote: > > > On Mon, 25 May 2026 at 18:57, Conor Dooley <conor@kernel.org> wrote: > > > > On Mon, May 25, 2026 at 11:19:19AM +0000, sashiko-bot@kernel.org wrote: > > > > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > > > > > - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. > > > > > -- > > > > > > > > > > commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 > > > > > Author: John Madieu <john.madieu.xa@bp.renesas.com> > > > > > > > > > > dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family > > > > > > > > > > This commit updates the clock bindings for the RZ/V2H family SoCs to include > > > > > the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The > > > > > AUDIO_CLKA input is fed internally and thus does not require a binding entry. > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > > @@ -26,16 +26,22 @@ properties: > > > > > > maxItems: 1 > > > > > > > > > > > > clocks: > > > > > > + minItems: 3 > > > > > > items: > > > > > > - description: AUDIO_EXTAL clock input > > > > > > - description: RTXIN clock input > > > > > > - description: QEXTAL clock input > > > > > > + - description: AUDIO_CLKB clock input > > > > > > + - description: AUDIO_CLKC clock input > > > > > > > > > > > > clock-names: > > > > > > + minItems: 3 > > > > > > items: > > > > > > - const: audio_extal > > > > > > - const: rtxin > > > > > > - const: qextal > > > > > > + - const: audio_clkb > > > > > > + - const: audio_clkc > > > > > > > > > > [Severity: Medium] > > > > > Will this strict array ordering prevent the independent use of the newly > > > > > added optional clocks? > > > > > > > > > > Because JSON schema validates arrays strictly by position based on the items > > > > > list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, > > > > > the device tree node would provide an array of 4 clocks where the 4th name > > > > > is audio_clkc. > > > > > > > > > > When dt_binding_check evaluates this, won't it check the 4th element against > > > > > the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid > > > > > hardware configuration? > > > > > > > > > > Should this use an anyOf block enumerating the valid permutations of optional > > > > > clocks to avoid forcing users to write incorrect device trees to pass > > > > > validation? > > > > > > > > Seems like a valid question to me. Can be solved by making the second > > > > last clock an enum. > > > > > > Calling them optional may be a misnomer: these pins are present. > > > Typically we provide zero rate fixed clocks for such clocks in the > > > SoC .dtsi, to be filled in or replaced by the board .dts. > > > > IOW, either both clocks will be provided or none will be? > > Exactly, see the first hunk of "[PATCH v4 3/8] arm64: dts: renesas: > rzv2h: Add audio clock inputs" later in this series. > https://lore.kernel.org/20260525110603.4018170-4-john.madieu.xa@bp.renesas.com In that case, Acked-by: Conor Dooley <conor.dooley@microchip.com> pw-bot: not-applicable Cheers, Conor. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-27 16:36 ` Conor Dooley @ 2026-06-04 11:39 ` Geert Uytterhoeven 0 siblings, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 11:39 UTC (permalink / raw) To: Conor Dooley Cc: sashiko-reviews, John Madieu, conor+dt, wsa+renesas, devicetree, robh On Wed, 27 May 2026 at 18:36, Conor Dooley <conor@kernel.org> wrote: > On Wed, May 27, 2026 at 05:45:12PM +0200, Geert Uytterhoeven wrote: > > On Wed, 27 May 2026 at 16:54, Conor Dooley <conor@kernel.org> wrote: > > > On Wed, May 27, 2026 at 02:44:51PM +0200, Geert Uytterhoeven wrote: > > > > On Mon, 25 May 2026 at 18:57, Conor Dooley <conor@kernel.org> wrote: > > > > > On Mon, May 25, 2026 at 11:19:19AM +0000, sashiko-bot@kernel.org wrote: > > > > > > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > > > > > > - [Medium] Strict array ordering prevents the independent use of newly added optional clocks. > > > > > > -- > > > > > > > > > > > > commit 3723d06ba80fe72a3e7492af52e5e54aa0f36b03 > > > > > > Author: John Madieu <john.madieu.xa@bp.renesas.com> > > > > > > > > > > > > dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family > > > > > > > > > > > > This commit updates the clock bindings for the RZ/V2H family SoCs to include > > > > > > the optional external audio clock inputs AUDIO_CLKB and AUDIO_CLKC. The > > > > > > AUDIO_CLKA input is fed internally and thus does not require a binding entry. > > > > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > > > --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > > > +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml > > > > > > > @@ -26,16 +26,22 @@ properties: > > > > > > > maxItems: 1 > > > > > > > > > > > > > > clocks: > > > > > > > + minItems: 3 > > > > > > > items: > > > > > > > - description: AUDIO_EXTAL clock input > > > > > > > - description: RTXIN clock input > > > > > > > - description: QEXTAL clock input > > > > > > > + - description: AUDIO_CLKB clock input > > > > > > > + - description: AUDIO_CLKC clock input > > > > > > > > > > > > > > clock-names: > > > > > > > + minItems: 3 > > > > > > > items: > > > > > > > - const: audio_extal > > > > > > > - const: rtxin > > > > > > > - const: qextal > > > > > > > + - const: audio_clkb > > > > > > > + - const: audio_clkc > > > > > > > > > > > > [Severity: Medium] > > > > > > Will this strict array ordering prevent the independent use of the newly > > > > > > added optional clocks? > > > > > > > > > > > > Because JSON schema validates arrays strictly by position based on the items > > > > > > list, if a hardware board connects AUDIO_CLKC but does not connect AUDIO_CLKB, > > > > > > the device tree node would provide an array of 4 clocks where the 4th name > > > > > > is audio_clkc. > > > > > > > > > > > > When dt_binding_check evaluates this, won't it check the 4th element against > > > > > > the schema's expectation of audio_clkb and fail, incorrectly rejecting a valid > > > > > > hardware configuration? > > > > > > > > > > > > Should this use an anyOf block enumerating the valid permutations of optional > > > > > > clocks to avoid forcing users to write incorrect device trees to pass > > > > > > validation? > > > > > > > > > > Seems like a valid question to me. Can be solved by making the second > > > > > last clock an enum. > > > > > > > > Calling them optional may be a misnomer: these pins are present. > > > > Typically we provide zero rate fixed clocks for such clocks in the > > > > SoC .dtsi, to be filled in or replaced by the board .dts. > > > > > > IOW, either both clocks will be provided or none will be? > > > > Exactly, see the first hunk of "[PATCH v4 3/8] arm64: dts: renesas: > > rzv2h: Add audio clock inputs" later in this series. > > https://lore.kernel.org/20260525110603.4018170-4-john.madieu.xa@bp.renesas.com > > In that case, > Acked-by: Conor Dooley <conor.dooley@microchip.com> Thanks, will queue in renesas-clk for v7.3. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family 2026-05-25 11:05 ` [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family John Madieu 2026-05-25 11:19 ` sashiko-bot @ 2026-05-27 12:45 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-05-27 12:45 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > RZ/V2H, RZ/V2N, and RZ/G3E support two optional external audio clock > inputs (AUDIO_CLKB and AUDIO_CLKC) that can be used by the Audio Clock > Generator (ADG) to derive internal audio clocks. The third ADG input > (AUDIO_CLKA) is fed internally by the AUDIO_EXTAL pin and does not need > a separate binding entry. > > Update the bindings to allow these optional clocks for all RZ/V2H family > SoCs. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 2/8] clk: renesas: r9a09g047: Add audio clock and reset support 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu 2026-05-25 11:05 ` [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family John Madieu @ 2026-05-25 11:05 ` John Madieu 2026-06-04 11:41 ` Geert Uytterhoeven 2026-05-25 11:05 ` [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs John Madieu ` (5 subsequent siblings) 7 siblings, 1 reply; 29+ messages in thread From: John Madieu @ 2026-05-25 11:05 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu Add clock and reset entries for audio-related modules on the RZ/G3E SoC. Target modules are: - SSIU (Serial Sound Interface Unit) with SSI ch0-ch9 - SCU (Sampling Rate Converter Unit) with SRC ch0-ch9, DVC ch0-ch1, CTU/MIX ch0-ch1 - DMACpp (Audio DMA Controller) - ADG (Audio Clock Generator) with divider input clocks and audio master clock outputs The ADG SSI clock outputs (adg_ssi[0-9]_clk) are parented on CLK_PLLCLN_DIV8 as a deliberate simplification: the ADG dynamically muxes each output between adg_0_clk_195m and audio_clk[a,b,c] at runtime via ADG_AUDIO_CLK_SEL{0,1,2}, owned by the rsnd-adg driver. While at it, reorder plldty_div16 to group it with the other plldty fixed dividers. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v4: - Drop CLK_AUDIO_CLKA and its DEF_INPUT("audio_clka") entry, and reparent adg_0_audio_clka on CLK_AUDIO_EXTAL, since AUDIO_CLKA is provided by the existing AUDIO_EXTAL pin (Geert Uytterhoeven). - Drop the internal core clocks Geert flagged as unused: pllcm33_div4_ddiv2, pllcm33_div4_ddiv2_div2, pllcln_div32, plldty_div2, plldty_div4 and cdiv5_mainosc. pllcln_div4 is kept, as scu_0_clkx2 is parented on it. - Rename the audio module clocks as suggested by Geert: ssif_clk -> ssif_0_clk, scu_clk -> scu_0_clk, scu_clkx2 -> scu_0_clkx2, admac_clk -> dmacpp_0_clk, adg_clks1 -> adg_0_clks1, adg_clk_200m -> adg_0_clk_195m, adg_audio_clk{a,b,c} -> adg_0_audio_clk{a,b,c}, ssif_supply_clk -> ssiu_supply_clk. Update the target-module list in the commit message (ADMAC -> DMACpp) to match. - Rename the audio reset entries as suggested by Geert: SCU_RESET_SRU -> SCU_0_RESET_SRU, ADMAC_ARESETN -> DMACpp_0_ARST, ADG_RST_RESET_ADG -> ADG_0_RST_RESET_ADG. - The adg_ssi[0-9]_clk parent is left unchanged as CLK_PLLCLN_DIV8. Geert questioned whether this is correct, since these clocks are ADG-generated. The parent is not changed; instead the commit message now documents that the ADG muxes each output between adg_0_clk_195m and audio_clk[a,b,c] at runtime via ADG_AUDIO_CLK_SEL{0,1,2}, which no static parent can describe. v3: No changes v2: No changes drivers/clk/renesas/r9a09g047-cpg.c | 112 +++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/drivers/clk/renesas/r9a09g047-cpg.c b/drivers/clk/renesas/r9a09g047-cpg.c index 94158b6834e6..c410a5d6a955 100644 --- a/drivers/clk/renesas/r9a09g047-cpg.c +++ b/drivers/clk/renesas/r9a09g047-cpg.c @@ -23,6 +23,8 @@ enum clk_ids { CLK_AUDIO_EXTAL, CLK_RTXIN, CLK_QEXTAL, + CLK_AUDIO_CLKB, + CLK_AUDIO_CLKC, /* PLL Clocks */ CLK_PLLCM33, @@ -44,6 +46,7 @@ enum clk_ids { CLK_SMUX2_XSPI_CLK1, CLK_PLLCM33_XSPI, CLK_PLLCLN_DIV2, + CLK_PLLCLN_DIV4, CLK_PLLCLN_DIV8, CLK_PLLCLN_DIV16, CLK_PLLCLN_DIV20, @@ -159,6 +162,8 @@ static const struct cpg_core_clk r9a09g047_core_clks[] __initconst = { DEF_INPUT("audio_extal", CLK_AUDIO_EXTAL), DEF_INPUT("rtxin", CLK_RTXIN), DEF_INPUT("qextal", CLK_QEXTAL), + DEF_INPUT("audio_clkb", CLK_AUDIO_CLKB), + DEF_INPUT("audio_clkc", CLK_AUDIO_CLKC), /* PLL Clocks */ DEF_FIXED(".pllcm33", CLK_PLLCM33, CLK_QEXTAL, 200, 3), @@ -183,6 +188,7 @@ static const struct cpg_core_clk r9a09g047_core_clks[] __initconst = { DEF_CSDIV(".pllcm33_xspi", CLK_PLLCM33_XSPI, CLK_SMUX2_XSPI_CLK1, CSDIV0_DIVCTL3, dtable_2_16), DEF_FIXED(".pllcln_div2", CLK_PLLCLN_DIV2, CLK_PLLCLN, 1, 2), + DEF_FIXED(".pllcln_div4", CLK_PLLCLN_DIV4, CLK_PLLCLN, 1, 4), DEF_FIXED(".pllcln_div8", CLK_PLLCLN_DIV8, CLK_PLLCLN, 1, 8), DEF_FIXED(".pllcln_div16", CLK_PLLCLN_DIV16, CLK_PLLCLN, 1, 16), DEF_FIXED(".pllcln_div20", CLK_PLLCLN_DIV20, CLK_PLLCLN, 1, 20), @@ -194,6 +200,7 @@ static const struct cpg_core_clk r9a09g047_core_clks[] __initconst = { DEF_FIXED(".plldty_acpu_div2", CLK_PLLDTY_ACPU_DIV2, CLK_PLLDTY_ACPU, 1, 2), DEF_FIXED(".plldty_acpu_div4", CLK_PLLDTY_ACPU_DIV4, CLK_PLLDTY_ACPU, 1, 4), DEF_FIXED(".plldty_div8", CLK_PLLDTY_DIV8, CLK_PLLDTY, 1, 8), + DEF_FIXED(".plldty_div16", CLK_PLLDTY_DIV16, CLK_PLLDTY, 1, 16), DEF_FIXED(".plleth_250_fix", CLK_PLLETH_DIV_250_FIX, CLK_PLLETH, 1, 4), DEF_FIXED(".plleth_125_fix", CLK_PLLETH_DIV_125_FIX, CLK_PLLETH_DIV_250_FIX, 1, 2), @@ -205,7 +212,6 @@ static const struct cpg_core_clk r9a09g047_core_clks[] __initconst = { DEF_SMUX(".smux2_gbe0_rxclk", CLK_SMUX2_GBE0_RXCLK, SSEL0_SELCTL3, smux2_gbe0_rxclk), DEF_SMUX(".smux2_gbe1_txclk", CLK_SMUX2_GBE1_TXCLK, SSEL1_SELCTL0, smux2_gbe1_txclk), DEF_SMUX(".smux2_gbe1_rxclk", CLK_SMUX2_GBE1_RXCLK, SSEL1_SELCTL1, smux2_gbe1_rxclk), - DEF_FIXED(".plldty_div16", CLK_PLLDTY_DIV16, CLK_PLLDTY, 1, 16), DEF_DDIV(".plldty_rcpu", CLK_PLLDTY_RCPU, CLK_PLLDTY, CDDIV3_DIVCTL2, dtable_2_64), DEF_FIXED(".plldty_rcpu_div4", CLK_PLLDTY_RCPU_DIV4, CLK_PLLDTY_RCPU, 1, 4), @@ -532,6 +538,96 @@ static const struct rzv2h_mod_clk r9a09g047_mod_clks[] __initconst = { BUS_MSTOP(3, BIT(4))), DEF_MOD("tsu_1_pclk", CLK_QEXTAL, 16, 10, 8, 10, BUS_MSTOP(2, BIT(15))), + DEF_MOD("ssif_0_clk", CLK_PLLCLN_DIV8, 15, 5, 7, 21, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("scu_0_clk", CLK_PLLCLN_DIV8, 15, 6, 7, 22, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("scu_0_clkx2", CLK_PLLCLN_DIV4, 15, 7, 7, 23, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("dmacpp_0_clk", CLK_PLLCLN_DIV8, 15, 8, 7, 24, + BUS_MSTOP(2, BIT(5))), + DEF_MOD("adg_0_clks1", CLK_PLLCLN_DIV8, 15, 9, 7, 25, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_0_clk_195m", CLK_PLLCLN_DIV8, 15, 10, 7, 26, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_0_audio_clka", CLK_AUDIO_EXTAL, 15, 11, 7, 27, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_0_audio_clkb", CLK_AUDIO_CLKB, 15, 12, 7, 28, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_0_audio_clkc", CLK_AUDIO_CLKC, 15, 13, 7, 29, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi0_clk", CLK_PLLCLN_DIV8, 22, 0, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi1_clk", CLK_PLLCLN_DIV8, 22, 1, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi2_clk", CLK_PLLCLN_DIV8, 22, 2, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi3_clk", CLK_PLLCLN_DIV8, 22, 3, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi4_clk", CLK_PLLCLN_DIV8, 22, 4, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi5_clk", CLK_PLLCLN_DIV8, 22, 5, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi6_clk", CLK_PLLCLN_DIV8, 22, 6, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi7_clk", CLK_PLLCLN_DIV8, 22, 7, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi8_clk", CLK_PLLCLN_DIV8, 22, 8, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("adg_ssi9_clk", CLK_PLLCLN_DIV8, 22, 9, -1, -1, + BUS_MSTOP(2, BIT(2))), + DEF_MOD("dvc0_clk", CLK_PLLCLN_DIV8, 23, 0, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("dvc1_clk", CLK_PLLCLN_DIV8, 23, 1, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("ctu0_mix0_clk", CLK_PLLCLN_DIV8, 23, 2, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("ctu1_mix1_clk", CLK_PLLCLN_DIV8, 23, 3, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src0_clk", CLK_PLLCLN_DIV8, 23, 4, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src1_clk", CLK_PLLCLN_DIV8, 23, 5, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src2_clk", CLK_PLLCLN_DIV8, 23, 6, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src3_clk", CLK_PLLCLN_DIV8, 23, 7, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src4_clk", CLK_PLLCLN_DIV8, 23, 8, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src5_clk", CLK_PLLCLN_DIV8, 23, 9, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src6_clk", CLK_PLLCLN_DIV8, 23, 10, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src7_clk", CLK_PLLCLN_DIV8, 23, 11, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src8_clk", CLK_PLLCLN_DIV8, 23, 12, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("src9_clk", CLK_PLLCLN_DIV8, 23, 13, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("scu_supply_clk", CLK_PLLCLN_DIV8, 23, 14, -1, -1, + BUS_MSTOP(2, BIT(0) | BIT(1))), + DEF_MOD("ssiu_supply_clk", CLK_PLLCLN_DIV8, 24, 0, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi0_clk", CLK_PLLCLN_DIV8, 24, 1, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi1_clk", CLK_PLLCLN_DIV8, 24, 2, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi2_clk", CLK_PLLCLN_DIV8, 24, 3, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi3_clk", CLK_PLLCLN_DIV8, 24, 4, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi4_clk", CLK_PLLCLN_DIV8, 24, 5, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi5_clk", CLK_PLLCLN_DIV8, 24, 6, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi6_clk", CLK_PLLCLN_DIV8, 24, 7, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi7_clk", CLK_PLLCLN_DIV8, 24, 8, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi8_clk", CLK_PLLCLN_DIV8, 24, 9, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), + DEF_MOD("ssi9_clk", CLK_PLLCLN_DIV8, 24, 10, -1, -1, + BUS_MSTOP(2, BIT(3) | BIT(4))), DEF_MOD("dsi_0_vclk2", CLK_SMUX2_DSI1_CLK, 25, 0, 10, 21, BUS_MSTOP(9, BIT(15) | BIT(14))), DEF_MOD("lcdc_1_clk_a", CLK_PLLDTY_ACPU_DIV2, 26, 8, 10, 30, @@ -621,6 +717,20 @@ static const struct rzv2h_reset r9a09g047_resets[] __initconst = { DEF_RST(13, 13, 6, 14), /* GE3D_RESETN */ DEF_RST(13, 14, 6, 15), /* GE3D_AXI_RESETN */ DEF_RST(13, 15, 6, 16), /* GE3D_ACE_RESETN */ + DEF_RST(14, 1, 6, 18), /* SSIF_0_ASYNC_RESET_SSI */ + DEF_RST(14, 2, 6, 19), /* SSIF_0_SYNC_RESET_SSI0 */ + DEF_RST(14, 3, 6, 20), /* SSIF_0_SYNC_RESET_SSI1 */ + DEF_RST(14, 4, 6, 21), /* SSIF_0_SYNC_RESET_SSI2 */ + DEF_RST(14, 5, 6, 22), /* SSIF_0_SYNC_RESET_SSI3 */ + DEF_RST(14, 6, 6, 23), /* SSIF_0_SYNC_RESET_SSI4 */ + DEF_RST(14, 7, 6, 24), /* SSIF_0_SYNC_RESET_SSI5 */ + DEF_RST(14, 8, 6, 25), /* SSIF_0_SYNC_RESET_SSI6 */ + DEF_RST(14, 9, 6, 26), /* SSIF_0_SYNC_RESET_SSI7 */ + DEF_RST(14, 10, 6, 27), /* SSIF_0_SYNC_RESET_SSI8 */ + DEF_RST(14, 11, 6, 28), /* SSIF_0_SYNC_RESET_SSI9 */ + DEF_RST(14, 12, 6, 29), /* SCU_0_RESET_SRU */ + DEF_RST(14, 13, 6, 30), /* DMACpp_0_ARST */ + DEF_RST(14, 14, 6, 31), /* ADG_0_RST_RESET_ADG */ DEF_RST(15, 8, 7, 9), /* TSU_1_PRESETN */ DEF_RST(17, 14, 8, 15), /* LCDC_1_RESET_N */ }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v4 2/8] clk: renesas: r9a09g047: Add audio clock and reset support 2026-05-25 11:05 ` [PATCH v4 2/8] clk: renesas: r9a09g047: Add audio clock and reset support John Madieu @ 2026-06-04 11:41 ` Geert Uytterhoeven 0 siblings, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 11:41 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu Hi John, On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > Add clock and reset entries for audio-related modules on the RZ/G3E SoC. > > Target modules are: > - SSIU (Serial Sound Interface Unit) with SSI ch0-ch9 > - SCU (Sampling Rate Converter Unit) with SRC ch0-ch9, DVC ch0-ch1, > CTU/MIX ch0-ch1 > - DMACpp (Audio DMA Controller) > - ADG (Audio Clock Generator) with divider input clocks and audio > master clock outputs > > The ADG SSI clock outputs (adg_ssi[0-9]_clk) are parented on > CLK_PLLCLN_DIV8 as a deliberate simplification: the ADG dynamically > muxes each output between adg_0_clk_195m and audio_clk[a,b,c] at > runtime via ADG_AUDIO_CLK_SEL{0,1,2}, owned by the rsnd-adg driver. > > While at it, reorder plldty_div16 to group it with the other plldty > fixed dividers. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> > --- > > Changes: > > v4: > - Drop CLK_AUDIO_CLKA and its DEF_INPUT("audio_clka") entry, and > reparent adg_0_audio_clka on CLK_AUDIO_EXTAL, since AUDIO_CLKA is > provided by the existing AUDIO_EXTAL pin (Geert Uytterhoeven). > - Drop the internal core clocks Geert flagged as unused: > pllcm33_div4_ddiv2, pllcm33_div4_ddiv2_div2, pllcln_div32, > plldty_div2, plldty_div4 and cdiv5_mainosc. pllcln_div4 is kept, > as scu_0_clkx2 is parented on it. > - Rename the audio module clocks as suggested by Geert: ssif_clk -> > ssif_0_clk, scu_clk -> scu_0_clk, scu_clkx2 -> scu_0_clkx2, > admac_clk -> dmacpp_0_clk, adg_clks1 -> adg_0_clks1, adg_clk_200m > -> adg_0_clk_195m, adg_audio_clk{a,b,c} -> adg_0_audio_clk{a,b,c}, > ssif_supply_clk -> ssiu_supply_clk. Update the target-module list > in the commit message (ADMAC -> DMACpp) to match. > - Rename the audio reset entries as suggested by Geert: SCU_RESET_SRU > -> SCU_0_RESET_SRU, ADMAC_ARESETN -> DMACpp_0_ARST, > ADG_RST_RESET_ADG -> ADG_0_RST_RESET_ADG. > - The adg_ssi[0-9]_clk parent is left unchanged as CLK_PLLCLN_DIV8. > Geert questioned whether this is correct, since these clocks are > ADG-generated. The parent is not changed; instead the commit > message now documents that the ADG muxes each output between > adg_0_clk_195m and audio_clk[a,b,c] at runtime via > ADG_AUDIO_CLK_SEL{0,1,2}, which no static parent can describe. Thanks for the update! > --- a/drivers/clk/renesas/r9a09g047-cpg.c > +++ b/drivers/clk/renesas/r9a09g047-cpg.c > @@ -532,6 +538,96 @@ static const struct rzv2h_mod_clk r9a09g047_mod_clks[] __initconst = { > BUS_MSTOP(3, BIT(4))), > DEF_MOD("tsu_1_pclk", CLK_QEXTAL, 16, 10, 8, 10, > BUS_MSTOP(2, BIT(15))), > + DEF_MOD("ssif_0_clk", CLK_PLLCLN_DIV8, 15, 5, 7, 21, > + BUS_MSTOP(2, BIT(3) | BIT(4))), I will reorder while applying, to preserve sort order (by _onindex/_onbit). Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-clk for v7.3 with the above fixed. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu 2026-05-25 11:05 ` [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family John Madieu 2026-05-25 11:05 ` [PATCH v4 2/8] clk: renesas: r9a09g047: Add audio clock and reset support John Madieu @ 2026-05-25 11:05 ` John Madieu 2026-05-25 11:41 ` sashiko-bot 2026-06-04 11:59 ` Geert Uytterhoeven 2026-05-25 11:05 ` [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu ` (4 subsequent siblings) 7 siblings, 2 replies; 29+ messages in thread From: John Madieu @ 2026-05-25 11:05 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu Model the optional external audio clock inputs as CPG input clocks for RZ/V2H family SoCs (RZ/V2H, RZ/V2N, RZ/G3E), allowing the Audio Clock Generator (ADG) to derive internal audio clocks from these external sources. The clock frequencies are board-specific and must be overridden in the board DTS files. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: v4: - Drop the audio_clka fixed-clock node from the RZ/V2H family DTSIs, and drop its reference from the pinctrl clocks and clock-names lists, consistent with dropping the AUDIO_CLKA input from the binding and the CPG driver (patches 1 and 2). - Reword the commit message accordingly. v3: No changes v2: No changes arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 20 ++++++++++++++++++-- arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 20 ++++++++++++++++++-- arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 20 ++++++++++++++++++-- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi index 4267b10937f3..3e9354b7411c 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi @@ -14,6 +14,20 @@ / { #size-cells = <2>; interrupt-parent = <&gic>; + audio_clkb: audio-clkb { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + + audio_clkc: audio-clkc { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + audio_extal_clk: audio-clk { compatible = "fixed-clock"; #clock-cells = <0>; @@ -271,8 +285,10 @@ pinctrl: pinctrl@10410000 { cpg: clock-controller@10420000 { compatible = "renesas,r9a09g047-cpg"; reg = <0 0x10420000 0 0x10000>; - clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>; - clock-names = "audio_extal", "rtxin", "qextal"; + clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>, + <&audio_clkb>, <&audio_clkc>; + clock-names = "audio_extal", "rtxin", "qextal", + "audio_clkb", "audio_clkc"; #clock-cells = <2>; #reset-cells = <1>; #power-domain-cells = <0>; diff --git a/arch/arm64/boot/dts/renesas/r9a09g056.dtsi b/arch/arm64/boot/dts/renesas/r9a09g056.dtsi index dc5b116679c0..1783182ff1ba 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g056.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g056.dtsi @@ -32,6 +32,20 @@ / { #size-cells = <2>; interrupt-parent = <&gic>; + audio_clkb: audio-clkb { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + + audio_clkc: audio-clkc { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + audio_extal_clk: audio-clk { compatible = "fixed-clock"; #clock-cells = <0>; @@ -294,8 +308,10 @@ pinctrl: pinctrl@10410000 { cpg: clock-controller@10420000 { compatible = "renesas,r9a09g056-cpg"; reg = <0 0x10420000 0 0x10000>; - clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>; - clock-names = "audio_extal", "rtxin", "qextal"; + clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>, + <&audio_clkb>, <&audio_clkc>; + clock-names = "audio_extal", "rtxin", "qextal", + "audio_clkb", "audio_clkc"; #clock-cells = <2>; #reset-cells = <1>; #power-domain-cells = <0>; diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi index 1e94366bb7ee..28562c1377f2 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi @@ -14,6 +14,20 @@ / { #size-cells = <2>; interrupt-parent = <&gic>; + audio_clkb: audio-clkb { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + + audio_clkc: audio-clkc { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overridden by the board */ + clock-frequency = <0>; + }; + audio_extal_clk: audio-clk { compatible = "fixed-clock"; #clock-cells = <0>; @@ -276,8 +290,10 @@ pinctrl: pinctrl@10410000 { cpg: clock-controller@10420000 { compatible = "renesas,r9a09g057-cpg"; reg = <0 0x10420000 0 0x10000>; - clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>; - clock-names = "audio_extal", "rtxin", "qextal"; + clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>, + <&audio_clkb>, <&audio_clkc>; + clock-names = "audio_extal", "rtxin", "qextal", + "audio_clkb", "audio_clkc"; #clock-cells = <2>; #reset-cells = <1>; #power-domain-cells = <0>; -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs 2026-05-25 11:05 ` [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs John Madieu @ 2026-05-25 11:41 ` sashiko-bot 2026-06-04 11:59 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: sashiko-bot @ 2026-05-25 11:41 UTC (permalink / raw) To: John Madieu; +Cc: robh, devicetree, wsa+renesas, conor+dt Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Newly added fixed-clock nodes use a deprecated naming convention that will trigger dtbs_check warnings. -- commit cf2cd1c875fd06adde5a2a08dd0af97c4fa1ae15 Author: John Madieu <john.madieu.xa@bp.renesas.com> arm64: dts: renesas: rzv2h: Add audio clock inputs This commit models optional external audio clock inputs as CPG input clocks for RZ/V2H family SoCs, allowing the Audio Clock Generator (ADG) to derive internal audio clocks. The clock frequencies are left at zero to be overridden in board DTS files. > diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > index 95a4e30a064d1..eedc5bb933b7b 100644 > --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > @@ -14,6 +14,20 @@ / { > #size-cells = <2>; > interrupt-parent = <&gic>; > > + audio_clkb: audio-clkb { [Severity: Low] Will this node name trigger dtbs_check warnings? According to the fixed-clock device tree bindings, node names should match the pattern '^clock-([0-9]+|[a-z0-9-]+)$'. The "audio-clkb" name falls under the 'any name allowed' fallback, which is explicitly marked as deprecated in the schema. While this matches the style of the pre-existing "audio-clk" node, adding new nodes with deprecated names might not be desired. > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + /* This value must be overridden by the board */ > + clock-frequency = <0>; > + }; > + > + audio_clkc: audio-clkc { [Severity: Low] Will this node name also trigger dtbs_check warnings for the same reason? > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + /* This value must be overridden by the board */ > + clock-frequency = <0>; > + }; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260525110603.4018170-1-john.madieu.xa@bp.renesas.com?part=3 ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs 2026-05-25 11:05 ` [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs John Madieu 2026-05-25 11:41 ` sashiko-bot @ 2026-06-04 11:59 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 11:59 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu Hi John, On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > Model the optional external audio clock inputs as CPG input clocks for > RZ/V2H family SoCs (RZ/V2H, RZ/V2N, RZ/G3E), allowing the Audio Clock > Generator (ADG) to derive internal audio clocks from these external > sources. > > The clock frequencies are board-specific and must be overridden in the > board DTS files. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> > --- > > Changes: > > v4: > - Drop the audio_clka fixed-clock node from the RZ/V2H family DTSIs, > and drop its reference from the pinctrl clocks and clock-names > lists, consistent with dropping the AUDIO_CLKA input from the > binding and the CPG driver (patches 1 and 2). > - Reword the commit message accordingly. Thanks for the update! > --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > @@ -14,6 +14,20 @@ / { > #size-cells = <2>; > interrupt-parent = <&gic>; > > + audio_clkb: audio-clkb { audio-b-clk, to follow node name recommendations. > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + /* This value must be overridden by the board */ > + clock-frequency = <0>; > + }; > + > + audio_clkc: audio-clkc { audio-c-clk > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + /* This value must be overridden by the board */ > + clock-frequency = <0>; > + }; > + > audio_extal_clk: audio-clk { I will move the two nodes down while applying, as "audio" sorts before "audio-b" and "audio-c". > compatible = "fixed-clock"; > #clock-cells = <0>; Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-devel for v7.3 with the above fixed. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu ` (2 preceding siblings ...) 2026-05-25 11:05 ` [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs John Madieu @ 2026-05-25 11:05 ` John Madieu 2026-05-27 14:22 ` Geert Uytterhoeven 2026-06-04 12:25 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 5/8] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu ` (3 subsequent siblings) 7 siblings, 2 replies; 29+ messages in thread From: John Madieu @ 2026-05-25 11:05 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, 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: 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 | 476 +++++++++++++++++++++ 1 file changed, 476 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi index 3e9354b7411c..5d343bc10243 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi @@ -912,6 +912,482 @@ 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 245>, /* ssi-all */ + <&cpg CPG_MOD 385>, /* ssi-0 */ + <&cpg CPG_MOD 386>, /* ssi-1 */ + <&cpg CPG_MOD 387>, /* ssi-2 */ + <&cpg CPG_MOD 388>, /* ssi-3 */ + <&cpg CPG_MOD 389>, /* ssi-4 */ + <&cpg CPG_MOD 390>, /* ssi-5 */ + <&cpg CPG_MOD 391>, /* ssi-6 */ + <&cpg CPG_MOD 392>, /* ssi-7 */ + <&cpg CPG_MOD 393>, /* ssi-8 */ + <&cpg CPG_MOD 394>, /* ssi-9 */ + <&cpg CPG_MOD 372>, /* src-0 */ + <&cpg CPG_MOD 373>, /* src-1 */ + <&cpg CPG_MOD 374>, /* src-2 */ + <&cpg CPG_MOD 375>, /* src-3 */ + <&cpg CPG_MOD 376>, /* src-4 */ + <&cpg CPG_MOD 377>, /* src-5 */ + <&cpg CPG_MOD 378>, /* src-6 */ + <&cpg CPG_MOD 379>, /* src-7 */ + <&cpg CPG_MOD 380>, /* src-8 */ + <&cpg CPG_MOD 381>, /* src-9 */ + <&cpg CPG_MOD 370>, /* mix-0 */ + <&cpg CPG_MOD 371>, /* mix-1 */ + <&cpg CPG_MOD 370>, /* ctu-0 */ + <&cpg CPG_MOD 371>, /* ctu-1 */ + <&cpg CPG_MOD 368>, /* dvc-0 */ + <&cpg CPG_MOD 369>, /* dvc-1 */ + <&cpg CPG_MOD 251>, /* audio-clka */ + <&cpg CPG_MOD 252>, /* audio-clkb */ + <&cpg CPG_MOD 253>, /* audio-clkc */ + <&cpg CPG_MOD 250>, /* audio-clki */ + <&cpg CPG_MOD 384>, /* ssif_supply */ + <&cpg CPG_MOD 246>, /* scu */ + <&cpg CPG_MOD 247>, /* scu_x2 */ + <&cpg CPG_MOD 382>, /* scu_supply */ + <&cpg CPG_MOD 352>, /* adg-ssi-0 */ + <&cpg CPG_MOD 353>, /* adg-ssi-1 */ + <&cpg CPG_MOD 354>, /* adg-ssi-2 */ + <&cpg CPG_MOD 355>, /* adg-ssi-3 */ + <&cpg CPG_MOD 356>, /* adg-ssi-4 */ + <&cpg CPG_MOD 357>, /* adg-ssi-5 */ + <&cpg CPG_MOD 358>, /* adg-ssi-6 */ + <&cpg CPG_MOD 359>, /* adg-ssi-7 */ + <&cpg CPG_MOD 360>, /* adg-ssi-8 */ + <&cpg CPG_MOD 361>, /* adg-ssi-9 */ + <&cpg CPG_MOD 248>, /* audmapp */ + <&cpg CPG_MOD 249>; /* adg */ + 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 225>, /* ssi-all */ + <&cpg 226>, <&cpg 227>, <&cpg 228>, + <&cpg 229>, <&cpg 230>, <&cpg 231>, + <&cpg 232>, <&cpg 233>, <&cpg 234>, + <&cpg 235>, + <&cpg 236>, /* scu */ + <&cpg 238>, /* adg */ + <&cpg 237>; /* audmapp */ + 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] 29+ messages in thread
* Re: [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support 2026-05-25 11:05 ` [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu @ 2026-05-27 14:22 ` Geert Uytterhoeven 2026-05-28 9:54 ` John Madieu 2026-06-04 12:25 ` Geert Uytterhoeven 1 sibling, 1 reply; 29+ messages in thread From: Geert Uytterhoeven @ 2026-05-27 14:22 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu Hi John, On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > 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: > > 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. Thanks for the update! > --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > @@ -912,6 +912,482 @@ 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 245>, /* ssi-all */ > + <&cpg CPG_MOD 385>, /* ssi-0 */ > + <&cpg CPG_MOD 386>, /* ssi-1 */ > + <&cpg CPG_MOD 387>, /* ssi-2 */ > + <&cpg CPG_MOD 388>, /* ssi-3 */ > + <&cpg CPG_MOD 389>, /* ssi-4 */ > + <&cpg CPG_MOD 390>, /* ssi-5 */ > + <&cpg CPG_MOD 391>, /* ssi-6 */ > + <&cpg CPG_MOD 392>, /* ssi-7 */ > + <&cpg CPG_MOD 393>, /* ssi-8 */ > + <&cpg CPG_MOD 394>, /* ssi-9 */ > + <&cpg CPG_MOD 372>, /* src-0 */ > + <&cpg CPG_MOD 373>, /* src-1 */ > + <&cpg CPG_MOD 374>, /* src-2 */ > + <&cpg CPG_MOD 375>, /* src-3 */ > + <&cpg CPG_MOD 376>, /* src-4 */ > + <&cpg CPG_MOD 377>, /* src-5 */ > + <&cpg CPG_MOD 378>, /* src-6 */ > + <&cpg CPG_MOD 379>, /* src-7 */ > + <&cpg CPG_MOD 380>, /* src-8 */ > + <&cpg CPG_MOD 381>, /* src-9 */ > + <&cpg CPG_MOD 370>, /* mix-0 */ > + <&cpg CPG_MOD 371>, /* mix-1 */ > + <&cpg CPG_MOD 370>, /* ctu-0 */ > + <&cpg CPG_MOD 371>, /* ctu-1 */ > + <&cpg CPG_MOD 368>, /* dvc-0 */ > + <&cpg CPG_MOD 369>, /* dvc-1 */ > + <&cpg CPG_MOD 251>, /* audio-clka */ > + <&cpg CPG_MOD 252>, /* audio-clkb */ > + <&cpg CPG_MOD 253>, /* audio-clkc */ > + <&cpg CPG_MOD 250>, /* audio-clki */ > + <&cpg CPG_MOD 384>, /* ssif_supply */ > + <&cpg CPG_MOD 246>, /* scu */ > + <&cpg CPG_MOD 247>, /* scu_x2 */ > + <&cpg CPG_MOD 382>, /* scu_supply */ > + <&cpg CPG_MOD 352>, /* adg-ssi-0 */ > + <&cpg CPG_MOD 353>, /* adg-ssi-1 */ > + <&cpg CPG_MOD 354>, /* adg-ssi-2 */ > + <&cpg CPG_MOD 355>, /* adg-ssi-3 */ > + <&cpg CPG_MOD 356>, /* adg-ssi-4 */ > + <&cpg CPG_MOD 357>, /* adg-ssi-5 */ > + <&cpg CPG_MOD 358>, /* adg-ssi-6 */ > + <&cpg CPG_MOD 359>, /* adg-ssi-7 */ > + <&cpg CPG_MOD 360>, /* adg-ssi-8 */ > + <&cpg CPG_MOD 361>, /* adg-ssi-9 */ > + <&cpg CPG_MOD 248>, /* audmapp */ > + <&cpg CPG_MOD 249>; /* adg */ Please drop these comments... > + 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"; ... as clock-names already serves this purpose. > + power-domains = <&cpg>; > + resets = <&cpg 225>, /* ssi-all */ > + <&cpg 226>, <&cpg 227>, <&cpg 228>, > + <&cpg 229>, <&cpg 230>, <&cpg 231>, > + <&cpg 232>, <&cpg 233>, <&cpg 234>, > + <&cpg 235>, > + <&cpg 236>, /* scu */ > + <&cpg 238>, /* adg */ > + <&cpg 237>; /* audmapp */ > + 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"; Same for resets and reset-names. > + status = "disabled"; Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* RE: [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support 2026-05-27 14:22 ` Geert Uytterhoeven @ 2026-05-28 9:54 ` John Madieu 0 siblings, 0 replies; 29+ messages in thread From: John Madieu @ 2026-05-28 9:54 UTC (permalink / raw) To: geert Cc: mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, magnus.damm, bmasney@redhat.com, Prabhakar Mahadev Lad, linux-renesas-soc@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das, john.madieu@gmail.com Hi Geert, Thanks for your review. > -----Original Message----- > From: Geert Uytterhoeven <geert@linux-m68k.org> > Sent: Mittwoch, 27. Mai 2026 16:23 > To: John Madieu <john.madieu.xa@bp.renesas.com> > Subject: Re: [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E > Sound support > > Hi John, > > On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> > wrote: > > 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: > > > > 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. > > Thanks for the update! > > > --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > > +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > > @@ -912,6 +912,482 @@ 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 245>, /* ssi-all */ > > + <&cpg CPG_MOD 385>, /* ssi-0 */ > > + <&cpg CPG_MOD 386>, /* ssi-1 */ > > + <&cpg CPG_MOD 387>, /* ssi-2 */ > > + <&cpg CPG_MOD 388>, /* ssi-3 */ > > + <&cpg CPG_MOD 389>, /* ssi-4 */ > > + <&cpg CPG_MOD 390>, /* ssi-5 */ > > + <&cpg CPG_MOD 391>, /* ssi-6 */ > > + <&cpg CPG_MOD 392>, /* ssi-7 */ > > + <&cpg CPG_MOD 393>, /* ssi-8 */ > > + <&cpg CPG_MOD 394>, /* ssi-9 */ > > + <&cpg CPG_MOD 372>, /* src-0 */ > > + <&cpg CPG_MOD 373>, /* src-1 */ > > + <&cpg CPG_MOD 374>, /* src-2 */ > > + <&cpg CPG_MOD 375>, /* src-3 */ > > + <&cpg CPG_MOD 376>, /* src-4 */ > > + <&cpg CPG_MOD 377>, /* src-5 */ > > + <&cpg CPG_MOD 378>, /* src-6 */ > > + <&cpg CPG_MOD 379>, /* src-7 */ > > + <&cpg CPG_MOD 380>, /* src-8 */ > > + <&cpg CPG_MOD 381>, /* src-9 */ > > + <&cpg CPG_MOD 370>, /* mix-0 */ > > + <&cpg CPG_MOD 371>, /* mix-1 */ > > + <&cpg CPG_MOD 370>, /* ctu-0 */ > > + <&cpg CPG_MOD 371>, /* ctu-1 */ > > + <&cpg CPG_MOD 368>, /* dvc-0 */ > > + <&cpg CPG_MOD 369>, /* dvc-1 */ > > + <&cpg CPG_MOD 251>, /* audio-clka */ > > + <&cpg CPG_MOD 252>, /* audio-clkb */ > > + <&cpg CPG_MOD 253>, /* audio-clkc */ > > + <&cpg CPG_MOD 250>, /* audio-clki */ > > + <&cpg CPG_MOD 384>, /* ssif_supply > */ > > + <&cpg CPG_MOD 246>, /* scu */ > > + <&cpg CPG_MOD 247>, /* scu_x2 */ > > + <&cpg CPG_MOD 382>, /* scu_supply */ > > + <&cpg CPG_MOD 352>, /* adg-ssi-0 */ > > + <&cpg CPG_MOD 353>, /* adg-ssi-1 */ > > + <&cpg CPG_MOD 354>, /* adg-ssi-2 */ > > + <&cpg CPG_MOD 355>, /* adg-ssi-3 */ > > + <&cpg CPG_MOD 356>, /* adg-ssi-4 */ > > + <&cpg CPG_MOD 357>, /* adg-ssi-5 */ > > + <&cpg CPG_MOD 358>, /* adg-ssi-6 */ > > + <&cpg CPG_MOD 359>, /* adg-ssi-7 */ > > + <&cpg CPG_MOD 360>, /* adg-ssi-8 */ > > + <&cpg CPG_MOD 361>, /* adg-ssi-9 */ > > + <&cpg CPG_MOD 248>, /* audmapp */ > > + <&cpg CPG_MOD 249>; /* adg */ > > Please drop these comments... Will do in next version. Regards, John. ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support 2026-05-25 11:05 ` [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu 2026-05-27 14:22 ` Geert Uytterhoeven @ 2026-06-04 12:25 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 12:25 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu Hi John, On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > 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: > > 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. Thanks for the update! > --- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > +++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi > @@ -912,6 +912,482 @@ rsci9: serial@12803000 { > status = "disabled"; > }; > > + snd_rzg3e: sound@13c00000 { > + compatible = "renesas,r9a09g047-sound"; > + reg = <0 0x13c00000 0 0x10000>, /* SCU */ size 0x20000. to include the SCU DMAC? > + <0 0x13c20000 0 0x10000>, /* ADG */ > + <0 0x13c30000 0 0x1000>, /* SSIU */ > + <0 0x13c31000 0 0x1F000>, /* SSI */ 0x1f000 (lower case) > + <0 0x13c50000 0 0x10000>; /* Audio DMAC peri peri */ > + reg-names = "scu", "adg", "ssiu", "ssi", "audmapp"; > + clocks = <&cpg CPG_MOD 245>, /* ssi-all */ > + <&cpg CPG_MOD 385>, /* ssi-0 */ Please use hexadecimal module clock numbers, for easier matching with the documentation. [...] > + power-domains = <&cpg>; > + resets = <&cpg 225>, /* ssi-all */ > + <&cpg 226>, <&cpg 227>, <&cpg 228>, Please use hexadecimal module reset numbers. > + <&cpg 229>, <&cpg 230>, <&cpg 231>, > + <&cpg 232>, <&cpg 233>, <&cpg 234>, > + <&cpg 235>, > + <&cpg 236>, /* scu */ > + <&cpg 238>, /* adg */ > + <&cpg 237>; /* audmapp */ Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 5/8] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu ` (3 preceding siblings ...) 2026-05-25 11:05 ` [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu @ 2026-05-25 11:06 ` John Madieu 2026-06-04 12:34 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 6/8] arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support John Madieu ` (2 subsequent siblings) 7 siblings, 1 reply; 29+ messages in thread From: John Madieu @ 2026-05-25 11:06 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, 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 audio-related 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) These clocks are required for the audio codec found on the RZ/G3E SMARC EVK. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: 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 d978619155d2..89428c804efb 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -77,6 +77,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"; @@ -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>; + }; }; &i3c { -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v4 5/8] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator 2026-05-25 11:06 ` [PATCH v4 5/8] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu @ 2026-06-04 12:34 ` Geert Uytterhoeven 0 siblings, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 12:34 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu Hi John, On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > 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 audio-related 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) > > These clocks are required for the audio codec found on the RZ/G3E SMARC > EVK. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Thanks for your patch! > --- 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>; Please add output 4 (DIFF1) in the patch description; it is needed for Ethernet. Please drop output 5 (DIFF2), as it is not connected. > + }; > }; Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 6/8] arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu ` (4 preceding siblings ...) 2026-05-25 11:06 ` [PATCH v4 5/8] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu @ 2026-05-25 11:06 ` John Madieu 2026-06-04 12:37 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu 2026-05-25 11:06 ` [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 7 siblings, 1 reply; 29+ messages in thread From: John Madieu @ 2026-05-25 11:06 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu, John Madieu Add and enable I2C1 controller support with pin configuration. The I2C1 bus is routed to the carrier board and used for peripherals such as the audio codec. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- Changes: 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 89428c804efb..493f6783d583 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -32,6 +32,7 @@ / { aliases { ethernet0 = ð0; ethernet1 = ð1; + i2c1 = &i2c1; i2c2 = &i2c2; mmc0 = &sdhi0; mmc2 = &sdhi2; @@ -118,6 +119,12 @@ &gpu { mali-supply = <®_vdd0p8v_others>; }; +&i2c1 { + pinctrl-0 = <&i2c1_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + &i2c2 { pinctrl-0 = <&i2c2_pins>; pinctrl-names = "default"; @@ -255,6 +262,11 @@ ctrl { }; }; + i2c1_pins: i2c1 { + pinmux = <RZG3E_PORT_PINMUX(3, 2, 1)>, /* SCL1 */ + <RZG3E_PORT_PINMUX(3, 3, 1)>; /* SDA1 */ + }; + i2c2_pins: i2c { pinmux = <RZG3E_PORT_PINMUX(3, 4, 1)>, /* SCL2 */ <RZG3E_PORT_PINMUX(3, 5, 1)>; /* SDA2 */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v4 6/8] arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support 2026-05-25 11:06 ` [PATCH v4 6/8] arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support John Madieu @ 2026-06-04 12:37 ` Geert Uytterhoeven 0 siblings, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 12:37 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > Add and enable I2C1 controller support with pin configuration. > The I2C1 bus is routed to the carrier board and used for peripherals > such as the audio codec. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-devel for v7.3. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu ` (5 preceding siblings ...) 2026-05-25 11:06 ` [PATCH v4 6/8] arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support John Madieu @ 2026-05-25 11:06 ` John Madieu 2026-05-25 12:28 ` sashiko-bot 2026-06-04 12:43 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 7 siblings, 2 replies; 29+ messages in thread From: John Madieu @ 2026-05-25 11:06 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, 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: 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 493f6783d583..f4532a06cc31 100644 --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi @@ -353,6 +353,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, 3, 9)>, /* SSI3_SCK */ + <RZG3E_PORT_PINMUX(0, 4, 9)>, /* SSI3_WS */ + <RZG3E_PORT_PINMUX(0, 2, 9)>, /* SSI3_SDATA */ + <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] 29+ messages in thread
* Re: [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions 2026-05-25 11:06 ` [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu @ 2026-05-25 12:28 ` sashiko-bot 2026-06-04 12:43 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: sashiko-bot @ 2026-05-25 12:28 UTC (permalink / raw) To: John Madieu; +Cc: conor+dt, wsa+renesas, robh, devicetree Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] The device tree node `sound_clk` uses an underscore instead of a hyphen, violating naming conventions. -- commit d0daff3ab55c18eb7640dc053ae11aaa9c14d357 Author: John Madieu <john.madieu.xa@bp.renesas.com> arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions This commit adds pinmux definitions for the SSI3 and SSI4 audio interfaces on the RZ/G3E SMARC SoM. It configures the sound clock pins and the sound data and control pins. > diff --git a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > index 493f6783d5833..f4532a06cc31d 100644 > --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi [ ... ] > @@ -353,6 +353,18 @@ sd2-pwen { > }; > }; > > + sound_clk_pins: sound_clk { [Severity: Low] This isn't a bug, but should this node name use a hyphen instead of an underscore? According to the Devicetree specification, node names should use hyphens rather than underscores to separate words. Using an underscore here might trigger compiler warnings for node_name_chars_strict. Renaming the node to sound-clk would align with standard DT conventions. > + pinmux = <RZG3E_PORT_PINMUX(4, 2, 8)>, /* AUDIO_CLKB */ > + <RZG3E_PORT_PINMUX(4, 3, 8)>; /* AUDIO_CLKC */ > + }; > + -- Sashiko AI review · https://sashiko.dev/#/patchset/20260525110603.4018170-1-john.madieu.xa@bp.renesas.com?part=7 ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions 2026-05-25 11:06 ` [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu 2026-05-25 12:28 ` sashiko-bot @ 2026-06-04 12:43 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 12:43 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu Hi John, On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > 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> Thanks for your patch! > --- a/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > +++ b/arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi > @@ -353,6 +353,18 @@ sd2-pwen { > }; > }; > > + sound_clk_pins: sound_clk { Please no underscores in node names. > + 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, 3, 9)>, /* SSI3_SCK */ > + <RZG3E_PORT_PINMUX(0, 4, 9)>, /* SSI3_WS */ > + <RZG3E_PORT_PINMUX(0, 2, 9)>, /* SSI3_SDATA */ > + <RZG3E_PORT_PINMUX(0, 5, 9)>; /* SSI4_SDATA */ Please sort by GPIO number. > + }; > + Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu ` (6 preceding siblings ...) 2026-05-25 11:06 ` [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu @ 2026-05-25 11:06 ` John Madieu 2026-05-25 12:49 ` sashiko-bot 2026-06-04 12:49 ` Geert Uytterhoeven 7 siblings, 2 replies; 29+ messages in thread From: John Madieu @ 2026-05-25 11:06 UTC (permalink / raw) To: geert+renesas, mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm Cc: bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, 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. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> --- 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] 29+ messages in thread
* Re: [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support 2026-05-25 11:06 ` [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu @ 2026-05-25 12:49 ` sashiko-bot 2026-06-04 12:49 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: sashiko-bot @ 2026-05-25 12:49 UTC (permalink / raw) To: John Madieu; +Cc: wsa+renesas, conor+dt, devicetree, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Unnecessary and schema-violating `#address-cells` and `#size-cells` properties in the `da7212: codec@1a` node. -- commit 81d96eea4cdb9cf3abc2275fa638509b017cf64e Author: John Madieu <john.madieu.xa@bp.renesas.com> arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support This commit enables audio support on the RZ/G3E SMARC2 EVK boards by adding device tree nodes for the DA7212 audio codec. The codec is connected via I2C1 and uses SSI3/SSI4 for sound input and output. > 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 [ ... ] > @@ -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>; [Severity: Low] Are these cell size properties necessary here? Since the child port node does not have a unit address or a reg property, this triggers an avoid_unnecessary_addr_size dtc warning. Additionally, does this cause a dtbs_check validation failure? The binding schema for this device does not define #address-cells or #size-cells and sets unevaluatedProperties: false. > + reg = <0x1a>; > + > + clocks = <&versa3 1>; [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20260525110603.4018170-1-john.madieu.xa@bp.renesas.com?part=8 ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support 2026-05-25 11:06 ` [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 2026-05-25 12:49 ` sashiko-bot @ 2026-06-04 12:49 ` Geert Uytterhoeven 1 sibling, 0 replies; 29+ messages in thread From: Geert Uytterhoeven @ 2026-06-04 12:49 UTC (permalink / raw) To: John Madieu Cc: mturquette, sboyd, robh, krzk+dt, conor+dt, magnus.damm, bmasney, prabhakar.mahadev-lad.rj, linux-renesas-soc, linux-clk, devicetree, linux-kernel, biju.das.jz, john.madieu On Mon, 25 May 2026 at 13:07, John Madieu <john.madieu.xa@bp.renesas.com> wrote: > 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. > > Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> LGTM, so Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2026-06-04 12:49 UTC | newest] Thread overview: 29+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-25 11:05 [PATCH v4 0/8] arm64: dts: renesas: Add RZ/G3E audio enablement John Madieu 2026-05-25 11:05 ` [PATCH v4 1/8] dt-bindings: clock: renesas: Add audio clock inputs for RZ/V2H family John Madieu 2026-05-25 11:19 ` sashiko-bot 2026-05-25 16:56 ` Conor Dooley 2026-05-27 12:44 ` Geert Uytterhoeven 2026-05-27 14:54 ` Conor Dooley 2026-05-27 15:45 ` Geert Uytterhoeven 2026-05-27 16:36 ` Conor Dooley 2026-06-04 11:39 ` Geert Uytterhoeven 2026-05-27 12:45 ` Geert Uytterhoeven 2026-05-25 11:05 ` [PATCH v4 2/8] clk: renesas: r9a09g047: Add audio clock and reset support John Madieu 2026-06-04 11:41 ` Geert Uytterhoeven 2026-05-25 11:05 ` [PATCH v4 3/8] arm64: dts: renesas: rzv2h: Add audio clock inputs John Madieu 2026-05-25 11:41 ` sashiko-bot 2026-06-04 11:59 ` Geert Uytterhoeven 2026-05-25 11:05 ` [PATCH v4 4/8] arm64: dts: renesas: r9a09g047: Add RZ/G3E Sound support John Madieu 2026-05-27 14:22 ` Geert Uytterhoeven 2026-05-28 9:54 ` John Madieu 2026-06-04 12:25 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 5/8] arm64: dts: renesas: rzg3e-smarc-som: Add Versa3 clock generator John Madieu 2026-06-04 12:34 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 6/8] arm64: dts: renesas: rzg3e-smarc-som: Add I2C1 support John Madieu 2026-06-04 12:37 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 7/8] arm64: dts: renesas: rzg3e-smarc-som: add audio pinmux definitions John Madieu 2026-05-25 12:28 ` sashiko-bot 2026-06-04 12:43 ` Geert Uytterhoeven 2026-05-25 11:06 ` [PATCH v4 8/8] arm64: dts: renesas: r9a09g047e57-smarc: add DA7212 audio codec support John Madieu 2026-05-25 12:49 ` sashiko-bot 2026-06-04 12:49 ` Geert Uytterhoeven
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.