[alsa-devel] [PATCH][resend] ASoC: simple-card: switch to yaml base Documentation
Rob Herring
robh+dt at kernel.org
Thu Jan 9 01:51:52 CET 2020
On Wed, Jan 8, 2020 at 6:08 PM Kuninori Morimoto
<kuninori.morimoto.gx at renesas.com> wrote:
>
If you want things reviewed in a timely fashion, use
get_maintainers.pl and send to the right lists. Otherwise you can just
hope I happen to see it.
> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
>
> This patch switches from .txt base to .yaml base Document.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> ---
> .../devicetree/bindings/sound/simple-card.txt | 351 ---------------
> .../devicetree/bindings/sound/simple-card.yaml | 472 +++++++++++++++++++++
> 2 files changed, 472 insertions(+), 351 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/sound/simple-card.txt
> create mode 100644 Documentation/devicetree/bindings/sound/simple-card.yaml
> diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml
> new file mode 100644
> index 0000000..ac3975f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml
> @@ -0,0 +1,472 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/simple-card.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Simple Audio Card Driver Device Tree Bindings
> +
> +maintainers:
> + - Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> +
> +definitions:
> +
> + frame-master:
> + description: Indicates dai-link frame master.
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> +
> + bitclock-master:
> + description: Indicates dai-link bit clock master
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> +
> + frame-inversion:
> + description: dai-link uses frame clock inversion
> + $ref: /schemas/types.yaml#/definitions/flag
> +
> + bitclock-inversion:
> + description: dai-link uses bit clock inversion
> + $ref: /schemas/types.yaml#/definitions/flag
> +
> + mclk-fs:
> + description: |
> + Multiplication factor between stream rate and codec mclk.
> + When defined, mclk-fs property defined in dai-link sub nodes are ignored.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + hp-det-gpio:
> + description: |
> + Reference to GPIO that signals when headphones are attached.
> + $ref: /schemas/types.yaml#/definitions/phandle
*-gpio already hass a type.
> +
> + aux-devs:
> + description: |
> + List of phandles pointing to auxiliary devices, such
> + as amplifiers, to be added to the sound card.
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> +
> + mic-det-gpio:
> + description: |
> + Reference to GPIO that signals when a microphone is attached.
> + $ref: /schemas/types.yaml#/definitions/phandle
> +
> + convert-rate:
> + description: CPU to Codec rate convert.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + convert-channels:
> + description: CPU to Codec rate channels.
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + prefix:
> + description: "device name prefix"
> + $ref: /schemas/types.yaml#/definitions/string
> +
> + pin-switches:
> + description: the widget names for which pin switches must be created.
> + $ref: /schemas/types.yaml#/definitions/string-array
> +
> + format:
> + description: audio format.
> + oneOf:
Don't need oneOf as there is only 1.
> + - items:
> + enum:
> + - i2s
> + - right_j
> + - left_j
> + - dsp_a
> + - dsp_b
> + - ac97
> + - pdm
> + - msb
> + - lsb
> +
> + dai:
> + type: object
> + properties:
> + sound-dai:
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> +
> + # common properties
> + mclk-fs:
> + $ref: "#/definitions/mclk-fs"
> + prefix:
> + $ref: "#/definitions/prefix"
> + frame-inversion:
> + $ref: "#/definitions/frame-inversion"
> + bitclock-inversion:
> + $ref: "#/definitions/bitclock-inversion"
> + frame-master:
> + $ref: /schemas/types.yaml#/definitions/flag
> + bitclock-master:
> + $ref: /schemas/types.yaml#/definitions/flag
> +
> + dai-tdm-slot-num:
> + description: see tdm-slot.txt.
> + $ref: /schemas/types.yaml#/definitions/uint32
> + dai-tdm-slot-width:
> + description: see tdm-slot.txt.
> + $ref: /schemas/types.yaml#/definitions/uint32
> + clocks:
> + description: |
> + If a clock is specified and a multiplication factor is given with
> + mclk-fs, the clock will be set to the calculated mclk frequency
> + when the stream starts.
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> + system-clock-frequency:
> + description: |
> + If a clock is specified and a multiplication factor is given with
> + mclk-fs, the clock will be set to the calculated mclk frequency
> + when the stream starts.
> + $ref: /schemas/types.yaml#/definitions/uint32
> + system-clock-direction-out:
> + description: |
> + specifies clock direction as 'out' on initialization.
> + It is useful for some aCPUs with fixed clocks.
> + $ref: /schemas/types.yaml#/definitions/flag
> + required:
> + - sound-dai
> +
> +properties:
> + compatible:
> + contains:
> + enum:
> + - simple-audio-card
> + - simple-scu-audio-card
> +
> + "#address-cells": true
> + "#size-cells": true
> +
> + simple-audio-card,name:
> + description: User specified audio sound card name.
> + $ref: /schemas/types.yaml#/definitions/string
> +
> + simple-audio-card,widgets:
> + description: User specified audio sound card name.
> + $ref: /schemas/types.yaml#/definitions/non-unique-string-array
> +
> + simple-audio-card,routing:
> + description: |
> + A list of the connections between audio components.
> + Each entry is a pair of strings, the first being the
> + connection's sink, the second being the connection's source.
> + $ref: /schemas/types.yaml#/definitions/non-unique-string-array
> +
> +patternProperties:
> + "^simple-audio-card,cpu.*":
What other names are allowed/used? '.*' leaves it wide open.
I guess it's just unit-addresses, but we really shouldn't have
unit-addresses as there aren't any 'reg' properties.
> + description: CPU node
> + $ref: "#/definitions/dai"
This is $ref is a description and another $ref. Just do away with 'definitions'.
> + "^simple-audio-card,codec.*":
> + description: CPU node
> + $ref: "#/definitions/dai"
> +
> + # common properties
> + "^simple-audio-card,frame-master$":
Not a pattern. Put these under 'properties'.
> + $ref: "#/definitions/frame-master"
> + "^simple-audio-card,bitclock-master$":
> + $ref: "#/definitions/bitclock-master"
> + "^simple-audio-card,frame-inversion$":
> + $ref: "#/definitions/frame-inversion"
> + "^simple-audio-card,bitclock-inversion$":
> + $ref: "#/definitions/bitclock-inversion"
> + "^simple-audio-card,format$":
> + $ref: "#/definitions/format"
> + "^simple-audio-card,mclk-fs$":
> + $ref: "#/definitions/mclk-fs"
> + "^simple-audio-card,hp-det-gpio$":
> + $ref: "#/definitions/hp-det-gpio"
> + "^simple-audio-card,mic-det-gpio$":
> + $ref: "#/definitions/mic-det-gpio"
> + "^simple-audio-card,aux-devs$":
> + $ref: "#/definitions/aux-devs"
> + "^simple-audio-card,convert-rate$":
> + $ref: "#/definitions/convert-rate"
> + "^simple-audio-card,convert-channels$":
> + $ref: "#/definitions/convert-channels"
> + "^simple-audio-card,prefix$":
> + $ref: "#/definitions/prefix"
> + "^simple-audio-card,pin-switches$":
> + $ref: "#/definitions/pin-switches"
> +
> + "^simple-audio-card,dai-link":
> + description: |
> + Container for dai-link level properties and the CPU and CODEC sub-nodes.
> + This container may be omitted when the card has only one DAI link.
> + type: object
> + properties:
> + reg:
> + $ref: /schemas/types.yaml#/definitions/uint32
> +
> + # common properties
> + frame-master:
> + $ref: "#/definitions/frame-master"
> + bitclock-master:
> + $ref: "#/definitions/bitclock-master"
> + frame-inversion:
> + $ref: "#/definitions/frame-inversion"
> + bitclock-inversion:
> + $ref: "#/definitions/bitclock-inversion"
> + format:
> + $ref: "#/definitions/format"
> + mclk-fs:
> + $ref: "#/definitions/mclk-fs"
> + hp-det-gpio:
> + $ref: "#/definitions/hp-det-gpio"
> + mic-det-gpio:
> + $ref: "#/definitions/mic-det-gpio"
> + aux-devs:
> + $ref: "#/definitions/aux-devs"
> + convert-rate:
> + $ref: "#/definitions/convert-rate"
> + convert-channels:
> + $ref: "#/definitions/convert-channels"
> + prefix:
> + $ref: "#/definitions/prefix"
> + pin-switches:
> + $ref: "#/definitions/pin-switches"
> +
> + patternProperties:
> + "^cpu.*":
> + $ref: "#/definitions/dai"
> + "^codec.*":
> + $ref: "#/definitions/dai"
> + additionalProperties: false
> +
> +required:
> + - compatible
> +
> +additionalProperties: false
> +
> +examples:
> +#--------------------
> +# single DAI link
> +#--------------------
> + - |
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "VF610-Tower-Sound-Card";
> + simple-audio-card,format = "left_j";
> + simple-audio-card,bitclock-master = <&dailink0_master>;
> + simple-audio-card,frame-master = <&dailink0_master>;
> + simple-audio-card,widgets =
> + "Microphone", "Microphone Jack",
> + "Headphone", "Headphone Jack",
> + "Speaker", "External Speaker";
> + simple-audio-card,routing =
> + "MIC_IN", "Microphone Jack",
> + "Headphone Jack", "HP_OUT",
> + "External Speaker", "LINE_OUT";
> +
> + simple-audio-card,cpu {
> + sound-dai = <&sh_fsi2 0>;
> + };
> +
> + dailink0_master: simple-audio-card,codec {
> + sound-dai = <&ak4648>;
> + clocks = <&osc>;
> + };
> + };
> +
> +#--------------------
> +# Multi DAI links
> +#--------------------
> + - |
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "Cubox Audio";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + simple-audio-card,dai-link at 0 { /* I2S - HDMI */
> + reg = <0>;
> + format = "i2s";
> + cpu {
> + sound-dai = <&audio0>;
> + };
> + codec {
> + sound-dai = <&tda998x0>;
> + };
> + };
> +
> + simple-audio-card,dai-link at 1 { /* S/PDIF - HDMI */
> + reg = <1>;
> + cpu {
> + sound-dai = <&audio1>;
> + };
> + codec {
> + sound-dai = <&tda998x1>;
> + };
> + };
> +
> + simple-audio-card,dai-link at 2 { /* S/PDIF - S/PDIF */
> + reg = <2>;
> + cpu {
> + sound-dai = <&audio2>;
> + };
> + codec {
> + sound-dai = <&spdif_codec>;
> + };
> + };
> + };
> +
> +#--------------------
> +# route audio from IMX6 SSI2 through TLV320DAC3100 codec
> +# through TPA6130A2 amplifier to headphones:
> +#--------------------
> + - |
> + sound {
> + compatible = "simple-audio-card";
> +
> + simple-audio-card,widgets =
> + "Headphone", "Headphone Jack";
> + simple-audio-card,routing =
> + "Headphone Jack", "HPLEFT",
> + "Headphone Jack", "HPRIGHT",
> + "LEFTIN", "HPL",
> + "RIGHTIN", "HPR";
> + simple-audio-card,aux-devs = <&>;
> + simple-audio-card,cpu {
> + sound-dai = <&ssi2>;
> + };
> + simple-audio-card,codec {
> + sound-dai = <&codec>;
> + clocks = <&clocks>;
> + };
> + };
> +
> +#--------------------
> +# Sampling Rate Conversion
> +#--------------------
> + - |
> + sound {
> + compatible = "simple-audio-card";
> +
> + simple-audio-card,name = "rsnd-ak4643";
> + simple-audio-card,format = "left_j";
> + simple-audio-card,bitclock-master = <&sndcodec>;
> + simple-audio-card,frame-master = <&sndcodec>;
> +
> + simple-audio-card,convert-rate = <48000>;
> +
> + simple-audio-card,prefix = "ak4642";
> + simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
> + "DAI0 Capture", "ak4642 Capture";
> +
> + sndcpu: simple-audio-card,cpu {
> + sound-dai = <&rcar_sound>;
> + };
> +
> + sndcodec: simple-audio-card,codec {
> + sound-dai = <&ak4643>;
> + system-clock-frequency = <11289600>;
> + };
> + };
> +
> +#--------------------
> +# 2 CPU 1 Codec (Mixing)
> +#--------------------
> + - |
> + sound {
> + compatible = "simple-audio-card";
> +
> + simple-audio-card,name = "rsnd-ak4643";
> + simple-audio-card,format = "left_j";
> + simple-audio-card,bitclock-master = <&dpcmcpu>;
> + simple-audio-card,frame-master = <&dpcmcpu>;
> +
> + simple-audio-card,convert-rate = <48000>;
> + simple-audio-card,convert-channels = <2>;
> +
> + simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
> + "ak4642 Playback", "DAI1 Playback";
> +
> + dpcmcpu: simple-audio-card,cpu at 0 {
> + sound-dai = <&rcar_sound 0>;
> + };
> +
> + simple-audio-card,cpu at 1 {
> + sound-dai = <&rcar_sound 1>;
> + };
> +
> + simple-audio-card,codec {
> + prefix = "ak4642";
> + sound-dai = <&ak4643>;
> + clocks = <&audio_clock>;
> + };
> + };
> +
> +#--------------------
> +# Multi DAI links with DPCM:
> +#
> +# CPU0 ------ ak4613
> +# CPU1 ------ PCM3168A-p /* DPCM 1ch/2ch */
> +# CPU2 --/ /* DPCM 3ch/4ch */
> +# CPU3 --/ /* DPCM 5ch/6ch */
> +# CPU4 --/ /* DPCM 7ch/8ch */
> +# CPU5 ------ PCM3168A-c
> +#--------------------
> + - |
> + sound {
> + compatible = "simple-audio-card";
> +
> + simple-audio-card,routing =
> + "pcm3168a Playback", "DAI1 Playback",
> + "pcm3168a Playback", "DAI2 Playback",
> + "pcm3168a Playback", "DAI3 Playback",
> + "pcm3168a Playback", "DAI4 Playback";
> +
> + simple-audio-card,dai-link at 0 {
> + format = "left_j";
> + bitclock-master = <&sndcpu0>;
> + frame-master = <&sndcpu0>;
> +
> + sndcpu0: cpu {
> + sound-dai = <&rcar_sound 0>;
> + };
> + codec {
> + sound-dai = <&ak4613>;
> + };
> + };
> +
> + simple-audio-card,dai-link at 1 {
> + format = "i2s";
> + bitclock-master = <&sndcpu1>;
> + frame-master = <&sndcpu1>;
> +
> + convert-channels = <8>; /* TDM Split */
> +
> + sndcpu1: cpu at 0 {
> + sound-dai = <&rcar_sound 1>;
> + };
> + cpu at 1 {
> + sound-dai = <&rcar_sound 2>;
> + };
> + cpu at 2 {
> + sound-dai = <&rcar_sound 3>;
> + };
> + cpu at 3 {
> + sound-dai = <&rcar_sound 4>;
> + };
> + codec {
> + mclk-fs = <512>;
> + prefix = "pcm3168a";
> + dai-tdm-slot-num = <8>;
> + sound-dai = <&pcm3168a 0>;
> + };
> + };
> +
> + simple-audio-card,dai-link at 2 {
> + format = "i2s";
> + bitclock-master = <&sndcpu2>;
> + frame-master = <&sndcpu2>;
> +
> + sndcpu2: cpu {
> + sound-dai = <&rcar_sound 5>;
> + };
> + codec {
> + mclk-fs = <512>;
> + prefix = "pcm3168a";
> + sound-dai = <&pcm3168a 1>;
> + };
> + };
> + };
> --
> 2.7.4
>
More information about the Alsa-devel
mailing list