Unverified Commit 8a99f76a authored by Maxime Ripard's avatar Maxime Ripard Committed by Mark Brown
Browse files

ASoC: dt-bindings: Convert Allwinner A33 codec to a schema



The Allwinner A33 SoC have an embedded audio codec that is supported in Linux,
with a matching Device Tree binding.

Now that we have the DT validation in place, let's convert the device tree
bindings for that controller over to a YAML schemas.

Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
Link: https://lore.kernel.org/r/20190828125209.28173-3-mripard@kernel.org


Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1a8e7cdf
Loading
Loading
Loading
Loading
+57 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/allwinner,sun8i-a33-codec.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A33 Codec Device Tree Bindings

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <maxime.ripard@bootlin.com>

properties:
  "#sound-dai-cells":
    const: 0

  compatible:
    const: allwinner,sun8i-a33-codec

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    items:
      - description: Bus Clock
      - description: Module Clock

  clock-names:
    items:
      - const: bus
      - const: mod

required:
  - "#sound-dai-cells"
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    audio-codec@1c22e00 {
      #sound-dai-cells = <0>;
      compatible = "allwinner,sun8i-a33-codec";
      reg = <0x01c22e00 0x400>;
      interrupts = <0 29 4>;
      clocks = <&ccu 47>, <&ccu 92>;
      clock-names = "bus", "mod";
    };

...
+0 −63
Original line number Diff line number Diff line
Allwinner SUN8I audio codec
------------------------------------

On Sun8i-A33 SoCs, the audio is separated in different parts:
	  - A DAI driver. It uses the "sun4i-i2s" driver which is
	  documented here:
	  Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-i2s.yaml
	  - An analog part of the codec which is handled as PRCM registers.
	  See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt
	  - An digital part of the codec which is documented in this current
	  binding documentation.
	  - And finally, an audio card which links all the above components.
	  The simple-audio card will be used.
	  See Documentation/devicetree/bindings/sound/simple-card.txt

This bindings documentation exposes Sun8i codec (digital part).

Required properties:
- compatible: must be "allwinner,sun8i-a33-codec"
- reg: must contain the registers location and length
- interrupts: must contain the codec interrupt
- clocks: a list of phandle + clock-specifer pairs, one for each entry
  in clock-names.
- clock-names: should contain followings:
   - "bus": the parent APB clock for this controller
   - "mod": the parent module clock

Here is an example to add a sound card and the codec binding on sun8i SoCs that
are similar to A33 using simple-card:

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "sun8i-a33-audio";
		simple-audio-card,format = "i2s";
		simple-audio-card,frame-master = <&link_codec>;
		simple-audio-card,bitclock-master = <&link_codec>;
		simple-audio-card,mclk-fs = <512>;
		simple-audio-card,aux-devs = <&codec_analog>;
		simple-audio-card,routing =
				"Left DAC", "Digital Left DAC",
				"Right DAC", "Digital Right DAC";

		simple-audio-card,cpu {
			sound-dai = <&dai>;
		};

		link_codec: simple-audio-card,codec {
			sound-dai = <&codec>;
		};

	soc@1c00000 {
		[...]

		audio-codec@1c22e00 {
			#sound-dai-cells = <0>;
			compatible = "allwinner,sun8i-a33-codec";
			reg = <0x01c22e00 0x400>;
			interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
			clock-names = "bus", "mod";
		};
	};