[alsa-devel] [PATCH][resend] ASoC: simple-card: switch to yaml base Documentation
From: Kuninori Morimoto kuninori.morimoto.gx@renesas.com
This patch switches from .txt base to .yaml base Document.
Signed-off-by: Kuninori Morimoto kuninori.morimoto.gx@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.txt b/Documentation/devicetree/bindings/sound/simple-card.txt deleted file mode 100644 index 79954cd6..0000000 --- a/Documentation/devicetree/bindings/sound/simple-card.txt +++ /dev/null @@ -1,351 +0,0 @@ -Simple-Card: - -Simple-Card specifies audio DAI connections of SoC <-> codec. - -Required properties: - -- compatible : "simple-audio-card" - -Optional properties: - -- simple-audio-card,name : User specified audio sound card name, one string - property. -- simple-audio-card,widgets : Please refer to widgets.txt. -- simple-audio-card,routing : 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. -- simple-audio-card,mclk-fs : Multiplication factor between stream rate and codec - mclk. When defined, mclk-fs property defined in - dai-link sub nodes are ignored. -- simple-audio-card,hp-det-gpio : Reference to GPIO that signals when - headphones are attached. -- simple-audio-card,mic-det-gpio : Reference to GPIO that signals when - a microphone is attached. -- simple-audio-card,aux-devs : List of phandles pointing to auxiliary devices, such - as amplifiers, to be added to the sound card. -- simple-audio-card,pin-switches : List of strings containing the widget names for - which pin switches must be created. - -Optional subnodes: - -- simple-audio-card,dai-link : 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. See the examples and the - section below. - -Dai-link subnode properties and subnodes: - -If dai-link subnode is omitted and the subnode properties are directly -under "sound"-node the subnode property and subnode names have to be -prefixed with "simple-audio-card,"-prefix. - -Required dai-link subnodes: - -- cpu : CPU sub-node -- codec : CODEC sub-node - -Optional dai-link subnode properties: - -- format : CPU/CODEC common audio format. - "i2s", "right_j", "left_j" , "dsp_a" - "dsp_b", "ac97", "pdm", "msb", "lsb" -- frame-master : Indicates dai-link frame master. - phandle to a cpu or codec subnode. -- bitclock-master : Indicates dai-link bit clock master. - phandle to a cpu or codec subnode. -- bitclock-inversion : bool property. Add this if the - dai-link uses bit clock inversion. -- frame-inversion : bool property. Add this if the - dai-link uses frame clock inversion. -- mclk-fs : Multiplication factor between stream - rate and codec mclk, applied only for - the dai-link. - -For backward compatibility the frame-master and bitclock-master -properties can be used as booleans in codec subnode to indicate if the -codec is the dai-link frame or bit clock master. In this case there -should be no dai-link node, the same properties should not be present -at sound-node level, and the bitclock-inversion and frame-inversion -properties should also be placed in the codec node if needed. - -Required CPU/CODEC subnodes properties: - -- sound-dai : phandle and port of CPU/CODEC - -Optional CPU/CODEC subnodes properties: - -- dai-tdm-slot-num : Please refer to tdm-slot.txt. -- dai-tdm-slot-width : Please refer to tdm-slot.txt. -- clocks / system-clock-frequency : specify subnode's clock if needed. - it can be specified via "clocks" if system has - clock node (= common clock), or "system-clock-frequency" - (if system doens't support common clock) - If a clock is specified, it is - enabled with clk_prepare_enable() - in dai startup() and disabled with - clk_disable_unprepare() in dai - shutdown(). - 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. -- system-clock-direction-out : specifies clock direction as 'out' on - initialization. It is useful for some aCPUs with - fixed clocks. - -------------------------------------------- -Example 1 - 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>; - }; -}; - -&i2c0 { - ak4648: ak4648@12 { - #sound-dai-cells = <0>; - compatible = "asahi-kasei,ak4648"; - reg = <0x12>; - }; -}; - -sh_fsi2: sh_fsi2@ec230000 { - #sound-dai-cells = <1>; - compatible = "renesas,sh_fsi2"; - reg = <0xec230000 0x400>; - interrupt-parent = <&gic>; - interrupts = <0 146 0x4>; -}; - -------------------------------------------- -Example 2 - many DAI links: -------------------------------------------- - -sound { - compatible = "simple-audio-card"; - simple-audio-card,name = "Cubox Audio"; - - simple-audio-card,dai-link@0 { /* I2S - HDMI */ - reg = <0>; - format = "i2s"; - cpu { - sound-dai = <&audio1 0>; - }; - codec { - sound-dai = <&tda998x 0>; - }; - }; - - simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ - reg = <1>; - cpu { - sound-dai = <&audio1 1>; - }; - codec { - sound-dai = <&tda998x 1>; - }; - }; - - simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ - reg = <2>; - cpu { - sound-dai = <&audio1 1>; - }; - codec { - sound-dai = <&spdif_codec>; - }; - }; -}; - -------------------------------------------- -Example 3 - route audio from IMX6 SSI2 through TLV320DAC3100 codec -through TPA6130A2 amplifier to headphones: -------------------------------------------- - -&i2c0 { - codec: tlv320dac3100@18 { - compatible = "ti,tlv320dac3100"; - ... - } - - amp: tpa6130a2@60 { - compatible = "ti,tpa6130a2"; - ... - } -} - -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 = ... - }; -}; - -------------------------------------------- -Example 4. 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>; - }; -}; - -------------------------------------------- -Example 5. 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,routing = "ak4642 Playback", "DAI0 Playback", - "ak4642 Playback", "DAI1 Playback"; - - dpcmcpu: cpu@0 { - sound-dai = <&rcar_sound 0>; - }; - - cpu@1 { - sound-dai = <&rcar_sound 1>; - }; - - codec { - prefix = "ak4642"; - sound-dai = <&ak4643>; - clocks = <&audio_clock>; - }; -}; - -------------------------------------------- -Example 6 - many 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@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@1 { - format = "i2s"; - bitclock-master = <&sndcpu1>; - frame-master = <&sndcpu1>; - - convert-channels = <8>; /* TDM Split */ - - sndcpu1: cpu@0 { - sound-dai = <&rcar_sound 1>; - }; - cpu@1 { - sound-dai = <&rcar_sound 2>; - }; - cpu@2 { - sound-dai = <&rcar_sound 3>; - }; - cpu@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@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>; - }; - }; -}; 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@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 + + 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: + - 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.*": + description: CPU node + $ref: "#/definitions/dai" + "^simple-audio-card,codec.*": + description: CPU node + $ref: "#/definitions/dai" + + # common properties + "^simple-audio-card,frame-master$": + $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@0 { /* I2S - HDMI */ + reg = <0>; + format = "i2s"; + cpu { + sound-dai = <&audio0>; + }; + codec { + sound-dai = <&tda998x0>; + }; + }; + + simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ + reg = <1>; + cpu { + sound-dai = <&audio1>; + }; + codec { + sound-dai = <&tda998x1>; + }; + }; + + simple-audio-card,dai-link@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@0 { + sound-dai = <&rcar_sound 0>; + }; + + simple-audio-card,cpu@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@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@1 { + format = "i2s"; + bitclock-master = <&sndcpu1>; + frame-master = <&sndcpu1>; + + convert-channels = <8>; /* TDM Split */ + + sndcpu1: cpu@0 { + sound-dai = <&rcar_sound 1>; + }; + cpu@1 { + sound-dai = <&rcar_sound 2>; + }; + cpu@2 { + sound-dai = <&rcar_sound 3>; + }; + cpu@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@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>; + }; + }; + };
On Wed, Jan 8, 2020 at 6:08 PM Kuninori Morimoto kuninori.morimoto.gx@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@renesas.com
This patch switches from .txt base to .yaml base Document.
Signed-off-by: Kuninori Morimoto kuninori.morimoto.gx@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@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, suchas 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 propertiesmclk-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/flagbitclock-master:$ref: /schemas/types.yaml#/definitions/flagdai-tdm-slot-num:description: see tdm-slot.txt.$ref: /schemas/types.yaml#/definitions/uint32dai-tdm-slot-width:description: see tdm-slot.txt.$ref: /schemas/types.yaml#/definitions/uint32clocks:description: |If a clock is specified and a multiplication factor is given withmclk-fs, the clock will be set to the calculated mclk frequencywhen the stream starts.$ref: /schemas/types.yaml#/definitions/phandle-arraysystem-clock-frequency:description: |If a clock is specified and a multiplication factor is given withmclk-fs, the clock will be set to the calculated mclk frequencywhen the stream starts.$ref: /schemas/types.yaml#/definitions/uint32system-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 theconnection'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 propertiesframe-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@0 { /* I2S - HDMI */reg = <0>;format = "i2s";cpu {sound-dai = <&audio0>;};codec {sound-dai = <&tda998x0>;};};simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */reg = <1>;cpu {sound-dai = <&audio1>;};codec {sound-dai = <&tda998x1>;};};simple-audio-card,dai-link@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@0 {sound-dai = <&rcar_sound 0>;};simple-audio-card,cpu@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@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@1 {format = "i2s";bitclock-master = <&sndcpu1>;frame-master = <&sndcpu1>;convert-channels = <8>; /* TDM Split */sndcpu1: cpu@0 {sound-dai = <&rcar_sound 1>;};cpu@1 {sound-dai = <&rcar_sound 2>;};cpu@2 {sound-dai = <&rcar_sound 3>;};cpu@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@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
Hi Rob
Thank you for reviewing
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.
OK, will do from now.
- description: CPU node
- $ref: "#/definitions/dai"
This is $ref is a description and another $ref. Just do away with 'definitions'.
Sorry, but I don't understand about this. Do you mean like this ? description: CPU node $ref: "#/dai"
patternProperties:
(snip)
- # common properties
- "^simple-audio-card,frame-master$":
Not a pattern. Put these under 'properties'.
I put it here because it doesn't work if I put it under "properties". I'm not 100% understanding, but it seems using "," at property and "#/definitions/xxx" in the same time is the reason.
This works for me
definitions: ... frame-master: description: Indicates dai-link frame master. $ref: /schemas/types.yaml#/definitions/phandle-array ...
patternProperties: ... "^simple-audio-card,frame-master$": $ref: "#/definitions/frame-master"
This works too
properties: ... simple-audio-card,frame-master: description: Indicates dai-link frame master. $ref: /schemas/types.yaml#/definitions/phandle-array
But, this doesn't work
properties: ... simple-audio-card,frame-master: $ref: "#/definitions/frame-master"
How to solve it ??
Thank you for your help !! Best regards --- Kuninori Morimoto
participants (2)
-
Kuninori Morimoto -
Rob Herring