This series of patches adds support to use the internal audio codec of the Rockchip RK3308 SoC. This codec is internally connected to the I2S peripherals on the same chip, and it has some peculiarities arising from that interconnection. For proper bidirectional operation with the internal codec, the I2S peripheral needs two clock sources (tx and rx), while connection with an external codec commonly needs only one. Since v5.16 there is a driver for the I2S in sound/soc/rockchip/rockchip_i2s_tdm.c, but it does not correctly handle receiving those two clocks via the .set_sysclk op. Patch 1 fixes that. Patches 2-4 adds the codec driver along with the bindings and a new helper macro. Patches 5-6 add to the SoC DT file two I2S controllers (those which are internally connected to the internal codec) and the codec itself. Luca Signed-off-by: Luca Ceresoli <luca.ceresoli@xxxxxxxxxxx> --- Changed in v2: - largely rewrote the codec driver to use DAPM and lots of improvements and cleanups - removed the RK3308 audio card and related patches, will be sent later - various other changes, listed per-patch --- Luca Ceresoli (6): ASoC: rockchip: i2s-tdm: Fix clk_id usage in .set_sysclk() ASoC: dt-bindings: Add Rockchip RK3308 internal audio codec ASoC: core: add SOC_DOUBLE_RANGE_TLV() helper macro ASoC: codecs: Add RK3308 internal audio codec driver arm64: dts: rockchip: add i2s_8ch_2 and i2s_8ch_3 arm64: dts: rockchip: add the internal audio codec .../bindings/sound/rockchip,rk3308-codec.yaml | 98 ++ MAINTAINERS | 7 + arch/arm64/boot/dts/rockchip/rk3308.dtsi | 68 ++ include/sound/soc.h | 12 + sound/soc/codecs/Kconfig | 11 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/rk3308_codec.c | 1012 ++++++++++++++++++++ sound/soc/codecs/rk3308_codec.h | 593 ++++++++++++ sound/soc/rockchip/rockchip_i2s_tdm.c | 22 +- 9 files changed, 1819 insertions(+), 6 deletions(-) --- base-commit: f89a0253ea1f519e6866689f0e83857ca276a2e9 change-id: 20231219-rk3308-audio-codec-a5558ba8949d Best regards, -- Luca Ceresoli <luca.ceresoli@xxxxxxxxxxx>