[PATCH v4 00/12] ASoC: rsnd: Add RZ/G3E audio driver support

John Madieu
2026-04-09T09:03:55Z

Add audio support for the Renesas RZ/G3E SoC to the R-Car Sound
driver. The RZ/G3E audio subsystem is based on R-Car Sound IP but
has several differences requiring dedicated handling:

- SSI operates exclusively in BUSIF mode (no PIO)
- 2-4 BUSIF channels per SSI (layout differs from R-Car)
- Separate register regions for SCU, ADG, SSIU, SSI accessed by name
- Per-SSI ADG and SSIF supply clocks
- Dedicated audmacpp clock/reset for Audio DMAC peri-peri
- Per-SSI and per-module reset controllers via CPG

Changes:

v4:
- Add reset_control_assert() in rsnd_mod_quit() for symmetry with
deassert in rsnd_mod_init() (Mark Brown)
- Fix RSND_SOC_MASK to (0xF << 4) to avoid overlap with RSND_RZ_MASK.
Add nibble layout comment documenting the flag bit allocation
- Move audmapp_clk and audmapp_rstc from struct rsnd_priv
into struct rsnd_dma_ctrl
- Replace raw [3][2][3] DMA address array with named
structs (rsnd_dma_addr_dir, rsnd_dma_addr_map) for self-documenting
table initializers
- Move busif_status_count from file-static into new
struct rsnd_ssiu_ctrl, following the rsnd_dma_ctrl pattern.
Remove duplicate priv variable. Properly propagate reset errors
via dev_err_probe()
- Clarify commit message regarding PIO mode still being available on
R-Car
- Collapse dev_err_probe() and rsnd_mod_init() calls to single lines
- Move per-SSI ADG and SSIF supply clock prepare/unprepare
into rsnd_adg_clk_control() instead of separate functions, eliminating
hw_params prepare leak concern. Return proper errors on clk_enable()
failure
- Move shared SCU clocks from file-statics into new
struct rsnd_src_ctrl, following the rsnd_dma_ctrl pattern. Keep
original declaration order for struct device_node *node
- Merge rsnd_adg_mod_get() helper directly into this
patch instead of a separate preparatory patch. Distribute
suspend/resume declarations into their respective IP sections in rsnd.h
- Drop former patch 12/14 "Add rsnd_adg_mod_get() for PM support":
merged into patch 12/12
- Drop former patch 13/14 "Export rsnd_ssiu_mod_get() for PM support":
function was unused

v3:
- Split out from v2 series [1] to ASoC-specific patchset.

v2:
- Split of rsnd.yaml into common and R-Car-specific schemas
- Introduce RZ/G3E sound binding as a standalone schema
- Addressed Kuninori'comments, details are in individual patches

[1] https://lore.kernel.org/all/20260402090524.9137-1-john.madieu.xa@bp.renesas.com/

John Madieu (12):
ASoC: dt-bindings: renesas,rsnd: Split into generic and SoC-specific
parts
ASoC: dt-bindings: Add RZ/G3E (R9A09G047) sound binding
ASoC: rsnd: Add reset controller support to rsnd_mod
ASoC: rsnd: Add RZ/G3E SoC probing and register map
ASoC: rsnd: Add audmacpp clock and reset support for RZ/G3E
ASoC: rsnd: Add RZ/G3E DMA address calculation support
ASoC: rsnd: ssui: Add RZ/G3E SSIU BUSIF support
ASoC: rsnd: Add SSI reset support for RZ/G3E platforms
ASoC: rsnd: Add ADG reset support for RZ/G3E
ASoC: rsnd: adg: Add per-SSI ADG and SSIF supply clock management
ASoC: rsnd: src: Add SRC reset and clock support for RZ/G3E
ASoC: rsnd: Add system suspend/resume support

.../sound/renesas,r9a09g047-sound.yaml | 371 ++++++++++++++++++
.../bindings/sound/renesas,rsnd-common.yaml | 196 +++++++++
.../bindings/sound/renesas,rsnd.yaml | 319 ++++-----------
sound/soc/renesas/rcar/adg.c | 125 +++++-
sound/soc/renesas/rcar/cmd.c | 2 +-
sound/soc/renesas/rcar/core.c | 61 ++-
sound/soc/renesas/rcar/ctu.c | 22 +-
sound/soc/renesas/rcar/dma.c | 274 ++++++++++---
sound/soc/renesas/rcar/dvc.c | 22 +-
sound/soc/renesas/rcar/gen.c | 180 +++++++++
sound/soc/renesas/rcar/mix.c | 22 +-
sound/soc/renesas/rcar/rsnd.h | 51 ++-
sound/soc/renesas/rcar/src.c | 85 +++-
sound/soc/renesas/rcar/ssi.c | 33 +-
sound/soc/renesas/rcar/ssiu.c | 83 +++-
15 files changed, 1518 insertions(+), 328 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/renesas,r9a09g047-sound.yaml
create mode 100644 Documentation/devicetree/bindings/sound/renesas,rsnd-common.yaml

--
2.25.1