mbox series

[v2,0/7] ASoC: add Allwinner H616 audio codec support

Message ID 20241020083124.174724-1-ryan@testtoast.com (mailing list archive)
Headers show
Series ASoC: add Allwinner H616 audio codec support | expand

Message

Ryan Walklin Oct. 20, 2024, 8:30 a.m. UTC
Hi,

V2 of this patch adding support for the Allwinner H616 (and variants) audio codec. Some rework to improve clock correctness, and DTS changes to enable the codec on boards added.

Changelog v1..v2:
- Reordered patches to group ASoC changes
- Corrected PLL_AUDIO clock dividers to match values from manual and vendor SDK.
- Remove PLL_AUDIO_4X clock from the device tree binding (not used in the driver).
- Restrict TX-only DMA changes to the H616.
- Change the codec name to fit into the 16 char limit.
- Move the codec (and spdif) blocks in the H616 DTSI to restore address-order.
- Add board enablement (and power/GPIO changes for RG35XX to support speaker amp).


Original blurb below:

Hi,

The Allwinner H616 has a playback-only audio codec, with a single stereo or differential-mono line output.

This patch adds support for the H616 (and H313/H618/H700/T507) SoC. Based on the  Allwinner kernel SDK driver, and tested on the H700.

Regards,

Ryan

Marcus Cooper (2):
  ASoC: sun4i-codec: Add support for different DAC FIFOC addresses to
    quirks
  ASoC: sun4i-codec: Add playback only flag to quirks

Ryan Walklin (5):
  clk: sunxi-ng: h616: Add sigma-delta modulation settings for audio PLL
  dt-bindings: allwinner: add H616 sun4i audio codec binding
  ASoC: sun4i-codec: support allwinner H616 codec
  arm64: dts: allwinner: h616: Add audio codec node
  arm64: dts: allwinner: h313/h616/h618/h700: Enable audio codec for all
    supported boards

 .../sound/allwinner,sun4i-a10-codec.yaml      |  53 +++-
 .../dts/allwinner/sun50i-h313-tanix-tx1.dts   |   5 +
 .../allwinner/sun50i-h616-orangepi-zero.dtsi  |   5 +
 .../dts/allwinner/sun50i-h616-x96-mate.dts    |   5 +
 .../arm64/boot/dts/allwinner/sun50i-h616.dtsi |  44 ++-
 .../allwinner/sun50i-h618-orangepi-zero2w.dts |   5 +
 .../sun50i-h618-transpeed-8k618-t.dts         |   5 +
 .../sun50i-h700-anbernic-rg35xx-2024.dts      |  13 +-
 drivers/clk/sunxi-ng/ccu-sun50i-h616.c        |  44 ++-
 sound/soc/sunxi/sun4i-codec.c                 | 297 +++++++++++++++---
 10 files changed, 401 insertions(+), 75 deletions(-)

Comments

Rob Herring (Arm) Oct. 21, 2024, 5:58 p.m. UTC | #1
On Sun, 20 Oct 2024 21:30:50 +1300, Ryan Walklin wrote:
> Hi,
> 
> V2 of this patch adding support for the Allwinner H616 (and variants) audio codec. Some rework to improve clock correctness, and DTS changes to enable the codec on boards added.
> 
> Changelog v1..v2:
> - Reordered patches to group ASoC changes
> - Corrected PLL_AUDIO clock dividers to match values from manual and vendor SDK.
> - Remove PLL_AUDIO_4X clock from the device tree binding (not used in the driver).
> - Restrict TX-only DMA changes to the H616.
> - Change the codec name to fit into the 16 char limit.
> - Move the codec (and spdif) blocks in the H616 DTSI to restore address-order.
> - Add board enablement (and power/GPIO changes for RG35XX to support speaker amp).
> 
> 
> Original blurb below:
> 
> Hi,
> 
> The Allwinner H616 has a playback-only audio codec, with a single stereo or differential-mono line output.
> 
> This patch adds support for the H616 (and H313/H618/H700/T507) SoC. Based on the  Allwinner kernel SDK driver, and tested on the H700.
> 
> Regards,
> 
> Ryan
> 
> Marcus Cooper (2):
>   ASoC: sun4i-codec: Add support for different DAC FIFOC addresses to
>     quirks
>   ASoC: sun4i-codec: Add playback only flag to quirks
> 
> Ryan Walklin (5):
>   clk: sunxi-ng: h616: Add sigma-delta modulation settings for audio PLL
>   dt-bindings: allwinner: add H616 sun4i audio codec binding
>   ASoC: sun4i-codec: support allwinner H616 codec
>   arm64: dts: allwinner: h616: Add audio codec node
>   arm64: dts: allwinner: h313/h616/h618/h700: Enable audio codec for all
>     supported boards
> 
>  .../sound/allwinner,sun4i-a10-codec.yaml      |  53 +++-
>  .../dts/allwinner/sun50i-h313-tanix-tx1.dts   |   5 +
>  .../allwinner/sun50i-h616-orangepi-zero.dtsi  |   5 +
>  .../dts/allwinner/sun50i-h616-x96-mate.dts    |   5 +
>  .../arm64/boot/dts/allwinner/sun50i-h616.dtsi |  44 ++-
>  .../allwinner/sun50i-h618-orangepi-zero2w.dts |   5 +
>  .../sun50i-h618-transpeed-8k618-t.dts         |   5 +
>  .../sun50i-h700-anbernic-rg35xx-2024.dts      |  13 +-
>  drivers/clk/sunxi-ng/ccu-sun50i-h616.c        |  44 ++-
>  sound/soc/sunxi/sun4i-codec.c                 | 297 +++++++++++++++---
>  10 files changed, 401 insertions(+), 75 deletions(-)
> 
> --
> 2.47.0
> 
> 
> 


My bot found new DTB warnings on the .dts files added or changed in this
series.

Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.

If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:

  pip3 install dtschema --upgrade


New warnings running 'make CHECK_DTBS=y allwinner/sun50i-h313-tanix-tx1.dtb allwinner/sun50i-h616-x96-mate.dtb allwinner/sun50i-h618-orangepi-zero2w.dtb allwinner/sun50i-h618-transpeed-8k618-t.dtb allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb' for 20241020083124.174724-1-ryan@testtoast.com:

arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dtb: soc: codec@05096000: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dtb: soc: codec@05096000: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: soc: codec@05096000: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dtb: soc: codec@05096000: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dtb: soc: codec@05096000: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dtb: codec@05096000: allwinner,audio-routing: b'Line Out\x00LINEOUT\x00' is not of type 'object', 'integer', 'array', 'boolean', 'null'
	from schema $id: http://devicetree.org/schemas/dt-core.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dtb: /soc/codec@05096000: failed to match any schema with compatible: ['allwinner,sun50i-h616-codec']
arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dtb: codec@05096000: allwinner,audio-routing: b'Line Out\x00LINEOUT\x00' is not of type 'object', 'integer', 'array', 'boolean', 'null'
	from schema $id: http://devicetree.org/schemas/dt-core.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h313-tanix-tx1.dtb: /soc/codec@05096000: failed to match any schema with compatible: ['allwinner,sun50i-h616-codec']
arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dtb: codec@05096000: allwinner,audio-routing: b'Line Out\x00LINEOUT\x00' is not of type 'object', 'integer', 'array', 'boolean', 'null'
	from schema $id: http://devicetree.org/schemas/dt-core.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h618-transpeed-8k618-t.dtb: /soc/codec@05096000: failed to match any schema with compatible: ['allwinner,sun50i-h616-codec']
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: codec@05096000: allwinner,audio-routing: b'Line Out\x00LINEOUT\x00' is not of type 'object', 'integer', 'array', 'boolean', 'null'
	from schema $id: http://devicetree.org/schemas/dt-core.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h700-anbernic-rg35xx-2024.dtb: /soc/codec@05096000: failed to match any schema with compatible: ['allwinner,sun50i-h616-codec']
arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dtb: codec@05096000: allwinner,audio-routing: b'Line Out\x00LINEOUT\x00' is not of type 'object', 'integer', 'array', 'boolean', 'null'
	from schema $id: http://devicetree.org/schemas/dt-core.yaml#
arch/arm64/boot/dts/allwinner/sun50i-h616-x96-mate.dtb: /soc/codec@05096000: failed to match any schema with compatible: ['allwinner,sun50i-h616-codec']