Message ID | 20220907142124.2532620-1-luca.ceresoli@bootlin.com (mailing list archive) |
---|---|
Headers | show |
Series | Add support for the internal RK3308 audio codec | expand |
On Wed, Sep 07, 2022 at 04:21:16PM +0200, luca.ceresoli@bootlin.com wrote: > Luca Ceresoli (8): > ASoC: rockchip: rk3308: add internal audio codec bindings > ASoC: rockchip: rk3308: add audio card bindings > arm64: dts: rockchip: add i2s_8ch_2 and i2s_8ch_3 > arm64: dts: rockchip: add the internal audio codec > ASoC: rockchip: i2s-tdm: Fix clk_id usage in .set_sysclk() > ASoC: audio-graph: let dai_link->init be overridable > ASoC: codecs: Add RK3308 internal audio codec driver > ASoC: rockchip: add new RK3308 sound card Please pay attention to the ordering of your serieses when posting: generally any bug fixes should come first so that they can be easily sent as fixes, and normally DTS updates are at the very end of the series rather than mixed in the middle since they go via the platform maintainer tree normally rather than with everything else.
Hello Mark, thanks for the quick feedback! On Wed, 7 Sep 2022 16:41:44 +0100 Mark Brown <broonie@kernel.org> wrote: > On Wed, Sep 07, 2022 at 04:21:16PM +0200, luca.ceresoli@bootlin.com wrote: > > > Luca Ceresoli (8): > > ASoC: rockchip: rk3308: add internal audio codec bindings > > ASoC: rockchip: rk3308: add audio card bindings > > arm64: dts: rockchip: add i2s_8ch_2 and i2s_8ch_3 > > arm64: dts: rockchip: add the internal audio codec > > ASoC: rockchip: i2s-tdm: Fix clk_id usage in .set_sysclk() > > ASoC: audio-graph: let dai_link->init be overridable > > ASoC: codecs: Add RK3308 internal audio codec driver > > ASoC: rockchip: add new RK3308 sound card > > Please pay attention to the ordering of your serieses when posting: > generally any bug fixes should come first so that they can be easily > sent as fixes, and normally DTS updates are at the very end of the > series rather than mixed in the middle since they go via the platform > maintainer tree normally rather than with everything else. Sorry about that. I've reordered the patches in my branch for the next iteration. Best regards, Luca
From: Luca Ceresoli <luca.ceresoli@bootlin.com> 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 5 fixes that. However the simple-audio-card and audio-graph-card sound card drivers do not support calling .set_sysclk twice, thus patch 6 makes the .init op of struct asoc_simple_priv overridable by a driver in order to be able to call .set_sysclk twice and thus configure both clocks. Patch 7 adds the codec driver and patch 8 builds on top of all the above by implementing a simple RK3308-specific audio card, based on audio-graph-card. This card sets all the I2S input clocks. Patches 1-2 add DT bindings for the codec and the card. Patches 3-4 add to the SoC DT file two I2S controllers (those which are internally connected to the internal codec) and the codec itself. Luca Luca Ceresoli (8): ASoC: rockchip: rk3308: add internal audio codec bindings ASoC: rockchip: rk3308: add audio card bindings arm64: dts: rockchip: add i2s_8ch_2 and i2s_8ch_3 arm64: dts: rockchip: add the internal audio codec ASoC: rockchip: i2s-tdm: Fix clk_id usage in .set_sysclk() ASoC: audio-graph: let dai_link->init be overridable ASoC: codecs: Add RK3308 internal audio codec driver ASoC: rockchip: add new RK3308 sound card .../rockchip,rk3308-audio-graph-card.yaml | 50 + .../bindings/sound/rockchip,rk3308-codec.yaml | 102 + MAINTAINERS | 14 + arch/arm64/boot/dts/rockchip/rk3308.dtsi | 68 + .../dt-bindings/sound/rockchip,rk3308-codec.h | 15 + include/sound/simple_card_utils.h | 1 + sound/soc/codecs/Kconfig | 11 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/rk3308_codec.c | 2122 +++++++++++++++++ sound/soc/codecs/rk3308_codec.h | 648 +++++ sound/soc/generic/audio-graph-card.c | 2 + sound/soc/rockchip/Kconfig | 14 + sound/soc/rockchip/Makefile | 1 + sound/soc/rockchip/rockchip_i2s_tdm.c | 18 +- sound/soc/rockchip/rockchip_rk3308_card.c | 97 + 15 files changed, 3159 insertions(+), 6 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/rockchip,rk3308-audio-graph-card.yaml create mode 100644 Documentation/devicetree/bindings/sound/rockchip,rk3308-codec.yaml create mode 100644 include/dt-bindings/sound/rockchip,rk3308-codec.h create mode 100644 sound/soc/codecs/rk3308_codec.c create mode 100644 sound/soc/codecs/rk3308_codec.h create mode 100644 sound/soc/rockchip/rockchip_rk3308_card.c