[PATCH] dt-bindings: sound: nvidia, tegra-audio: Convert multiple txt bindings to yaml
Convert Tegra audio complex with the * ALC5632 * MAX98090 * RT5640 * RT5677 * SGTL5000 * TrimSlice * WM8753 * WM8903 * WM9712 codec to the YAML format.
Signed-off-by: David Heidelberg david@ixit.cz --- .../sound/nvidia,tegra-audio-alc5632.txt | 48 ----- .../sound/nvidia,tegra-audio-max98090.txt | 53 ----- .../sound/nvidia,tegra-audio-rt5640.txt | 52 ----- .../sound/nvidia,tegra-audio-rt5677.txt | 67 ------ .../sound/nvidia,tegra-audio-sgtl5000.txt | 42 ---- .../sound/nvidia,tegra-audio-trimslice.txt | 21 -- .../sound/nvidia,tegra-audio-wm8753.txt | 40 ---- .../sound/nvidia,tegra-audio-wm8903.txt | 62 ------ .../sound/nvidia,tegra-audio-wm9712.txt | 60 ------ .../bindings/sound/nvidia,tegra-audio.yaml | 190 ++++++++++++++++++ 10 files changed, 190 insertions(+), 445 deletions(-) delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt deleted file mode 100644 index 57f40f93453e..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt +++ /dev/null @@ -1,48 +0,0 @@ -NVIDIA Tegra audio complex - -Required properties: -- compatible : "nvidia,tegra-audio-alc5632" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the ALC5632's pins as documented in the binding for the device - and: - - * Headset Stereophone - * Int Spk - * Headset Mic - * Digital Mic - -- nvidia,i2s-controller : The phandle of the Tegra I2S controller -- nvidia,audio-codec : The phandle of the ALC5632 audio codec - -Example: - -sound { - compatible = "nvidia,tegra-audio-alc5632-paz00", - "nvidia,tegra-audio-alc5632"; - - nvidia,model = "Compal PAZ00"; - - nvidia,audio-routing = - "Int Spk", "SPK_OUTP", - "Int Spk", "SPK_OUTN", - "Headset Mic","MICBIAS1", - "MIC1_N", "Headset Mic", - "MIC1_P", "Headset Mic", - "Headset Stereophone", "HP_OUT_R", - "Headset Stereophone", "HP_OUT_L"; - - nvidia,i2s-controller = <&tegra_i2s1>; - nvidia,audio-codec = <&alc5632>; - - clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt deleted file mode 100644 index c3495beba358..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt +++ /dev/null @@ -1,53 +0,0 @@ -NVIDIA Tegra audio complex, with MAX98090 CODEC - -Required properties: -- compatible : "nvidia,tegra-audio-max98090" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the MAX98090's pins (as documented in its binding), and the jacks - on the board: - - * Headphones - * Speakers - * Mic Jack - * Int Mic - -- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's - connected to the CODEC. -- nvidia,audio-codec : The phandle of the MAX98090 audio codec. - -Optional properties: -- nvidia,hp-det-gpios : The GPIO that detect headphones are plugged in -- nvidia,mic-det-gpios : The GPIO that detect microphones are plugged in - -Example: - -sound { - compatible = "nvidia,tegra-audio-max98090-venice2", - "nvidia,tegra-audio-max98090"; - nvidia,model = "NVIDIA Tegra Venice2"; - - nvidia,audio-routing = - "Headphones", "HPR", - "Headphones", "HPL", - "Speakers", "SPKR", - "Speakers", "SPKL", - "Mic Jack", "MICBIAS", - "IN34", "Mic Jack"; - - nvidia,i2s-controller = <&tegra_i2s1>; - nvidia,audio-codec = <&acodec>; - - clocks = <&tegra_car TEGRA124_CLK_PLL_A>, - <&tegra_car TEGRA124_CLK_PLL_A_OUT0>, - <&tegra_car TEGRA124_CLK_EXTERN1>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt deleted file mode 100644 index 7788808dcd0b..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt +++ /dev/null @@ -1,52 +0,0 @@ -NVIDIA Tegra audio complex, with RT5640 CODEC - -Required properties: -- compatible : "nvidia,tegra-audio-rt5640" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the RT5640's pins (as documented in its binding), and the jacks - on the board: - - * Headphones - * Speakers - * Mic Jack - -- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's - connected to the CODEC. -- nvidia,audio-codec : The phandle of the RT5640 audio codec. This binding - assumes that AIF1 on the CODEC is connected to Tegra. - -Optional properties: -- nvidia,hp-det-gpios : The GPIO that detects headphones are plugged in - -Example: - -sound { - compatible = "nvidia,tegra-audio-rt5640-dalmore", - "nvidia,tegra-audio-rt5640"; - nvidia,model = "NVIDIA Tegra Dalmore"; - - nvidia,audio-routing = - "Headphones", "HPOR", - "Headphones", "HPOL", - "Speakers", "SPORP", - "Speakers", "SPORN", - "Speakers", "SPOLP", - "Speakers", "SPOLN"; - - nvidia,i2s-controller = <&tegra_i2s1>; - nvidia,audio-codec = <&rt5640>; - - nvidia,hp-det-gpios = <&gpio 143 0>; /* GPIO PR7 */ - - clocks = <&tegra_car 216>, <&tegra_car 217>, <&tegra_car 120>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt deleted file mode 100644 index a4589cda214e..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt +++ /dev/null @@ -1,67 +0,0 @@ -NVIDIA Tegra audio complex, with RT5677 CODEC - -Required properties: -- compatible : "nvidia,tegra-audio-rt5677" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the RT5677's pins (as documented in its binding), and the jacks - on the board: - - * Headphone - * Speaker - * Headset Mic - * Internal Mic 1 - * Internal Mic 2 - -- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's - connected to the CODEC. -- nvidia,audio-codec : The phandle of the RT5677 audio codec. This binding - assumes that AIF1 on the CODEC is connected to Tegra. - -Optional properties: -- nvidia,hp-det-gpios : The GPIO that detects headphones are plugged in -- nvidia,hp-en-gpios : The GPIO that enables headphone amplifier -- nvidia,mic-present-gpios: The GPIO that mic jack is plugged in -- nvidia,dmic-clk-en-gpios : The GPIO that gates DMIC clock signal - -Example: - -sound { - compatible = "nvidia,tegra-audio-rt5677-ryu", - "nvidia,tegra-audio-rt5677"; - nvidia,model = "NVIDIA Tegra Ryu"; - - nvidia,audio-routing = - "Headphone", "LOUT2", - "Headphone", "LOUT1", - "Headset Mic", "MICBIAS1", - "IN1P", "Headset Mic", - "IN1N", "Headset Mic", - "DMIC L1", "Internal Mic 1", - "DMIC R1", "Internal Mic 1", - "DMIC L2", "Internal Mic 2", - "DMIC R2", "Internal Mic 2", - "Speaker", "PDM1L", - "Speaker", "PDM1R"; - - nvidia,i2s-controller = <&tegra_i2s1>; - nvidia,audio-codec = <&rt5677>; - - nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>; - nvidia,mic-present-gpios = <&gpio TEGRA_GPIO(O, 5) GPIO_ACTIVE_LOW>; - nvidia,hp-en-gpios = <&rt5677 1 GPIO_ACTIVE_HIGH>; - nvidia,dmic-clk-en-gpios = <&rt5677 2 GPIO_ACTIVE_HIGH>; - - clocks = <&tegra_car TEGRA124_CLK_PLL_A>, - <&tegra_car TEGRA124_CLK_PLL_A_OUT0>, - <&tegra_car TEGRA124_CLK_EXTERN1>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.txt deleted file mode 100644 index 5da7da4ea07a..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.txt +++ /dev/null @@ -1,42 +0,0 @@ -NVIDIA Tegra audio complex, with SGTL5000 CODEC - -Required properties: -- compatible : "nvidia,tegra-audio-sgtl5000" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the SGTL5000's pins (as documented in its binding), and the jacks - on the board: - - * Headphone Jack - * Line In Jack - * Mic Jack - -- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's - connected to the CODEC. -- nvidia,audio-codec : The phandle of the SGTL5000 audio codec. - -Example: - -sound { - compatible = "toradex,tegra-audio-sgtl5000-apalis_t30", - "nvidia,tegra-audio-sgtl5000"; - nvidia,model = "Toradex Apalis T30"; - nvidia,audio-routing = - "Headphone Jack", "HP_OUT", - "LINE_IN", "Line In Jack", - "MIC_IN", "Mic Jack"; - nvidia,i2s-controller = <&tegra_i2s2>; - nvidia,audio-codec = <&sgtl5000>; - clocks = <&tegra_car TEGRA30_CLK_PLL_A>, - <&tegra_car TEGRA30_CLK_PLL_A_OUT0>, - <&tegra_car TEGRA30_CLK_EXTERN1>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt deleted file mode 100644 index ef1fe7358279..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt +++ /dev/null @@ -1,21 +0,0 @@ -NVIDIA Tegra audio complex for TrimSlice - -Required properties: -- compatible : "nvidia,tegra-audio-trimslice" -- clocks : Must contain an entry for each entry in clock-names. -- clock-names : Must include the following entries: - "pll_a" (The Tegra clock of that name), - "pll_a_out0" (The Tegra clock of that name), - "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller -- nvidia,audio-codec : The phandle of the WM8903 audio codec - -Example: - -sound { - compatible = "nvidia,tegra-audio-trimslice"; - nvidia,i2s-controller = <&tegra_i2s1>; - nvidia,audio-codec = <&codec>; - clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt deleted file mode 100644 index 96f6a57dd6b4..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt +++ /dev/null @@ -1,40 +0,0 @@ -NVIDIA Tegra audio complex - -Required properties: -- compatible : "nvidia,tegra-audio-wm8753" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the WM8753's pins as documented in the binding for the WM8753, - and the jacks on the board: - - * Headphone Jack - * Mic Jack - -- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller -- nvidia,audio-codec : The phandle of the WM8753 audio codec -Example: - -sound { - compatible = "nvidia,tegra-audio-wm8753-whistler", - "nvidia,tegra-audio-wm8753" - nvidia,model = "tegra-wm8753-harmony"; - - nvidia,audio-routing = - "Headphone Jack", "LOUT1", - "Headphone Jack", "ROUT1"; - - nvidia,i2s-controller = <&i2s1>; - nvidia,audio-codec = <&wm8753>; - - clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; - diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt deleted file mode 100644 index bbd581a8c5bc..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt +++ /dev/null @@ -1,62 +0,0 @@ -NVIDIA Tegra audio complex - -Required properties: -- compatible : "nvidia,tegra-audio-wm8903" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the WM8903's pins (documented in the WM8903 binding document), - and the jacks on the board: - - * Headphone Jack - * Int Spk - * Mic Jack - * Int Mic - -- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller -- nvidia,audio-codec : The phandle of the WM8903 audio codec - -Optional properties: -- nvidia,spkr-en-gpios : The GPIO that enables the speakers -- nvidia,hp-mute-gpios : The GPIO that mutes the headphones -- nvidia,hp-det-gpios : The GPIO that detect headphones are plugged in -- nvidia,int-mic-en-gpios : The GPIO that enables the internal microphone -- nvidia,ext-mic-en-gpios : The GPIO that enables the external microphone -- nvidia,headset : The Mic Jack represents state of the headset microphone pin - -Example: - -sound { - compatible = "nvidia,tegra-audio-wm8903-harmony", - "nvidia,tegra-audio-wm8903" - nvidia,model = "tegra-wm8903-harmony"; - - nvidia,audio-routing = - "Headphone Jack", "HPOUTR", - "Headphone Jack", "HPOUTL", - "Int Spk", "ROP", - "Int Spk", "RON", - "Int Spk", "LOP", - "Int Spk", "LON", - "Mic Jack", "MICBIAS", - "IN1L", "Mic Jack"; - - nvidia,i2s-controller = <&i2s1>; - nvidia,audio-codec = <&wm8903>; - - nvidia,spkr-en-gpios = <&codec 2 0>; - nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ - nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */ - nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ - - clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; - diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt deleted file mode 100644 index 436f6cd9d07c..000000000000 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt +++ /dev/null @@ -1,60 +0,0 @@ -NVIDIA Tegra audio complex - -Required properties: -- compatible : "nvidia,tegra-audio-wm9712" -- clocks : Must contain an entry for each entry in clock-names. - See ../clocks/clock-bindings.txt for details. -- clock-names : Must include the following entries: - - pll_a - - pll_a_out0 - - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) -- nvidia,model : The user-visible name of this sound complex. -- nvidia,audio-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. Valid names for sources and - sinks are the WM9712's pins, and the jacks on the board: - - WM9712 pins: - - * MONOOUT - * HPOUTL - * HPOUTR - * LOUT2 - * ROUT2 - * OUT3 - * LINEINL - * LINEINR - * PHONE - * PCBEEP - * MIC1 - * MIC2 - * Mic Bias - - Board connectors: - - * Headphone - * LineIn - * Mic - -- nvidia,ac97-controller : The phandle of the Tegra AC97 controller - - -Example: - -sound { - compatible = "nvidia,tegra-audio-wm9712-colibri_t20", - "nvidia,tegra-audio-wm9712"; - nvidia,model = "Toradex Colibri T20"; - - nvidia,audio-routing = - "Headphone", "HPOUTL", - "Headphone", "HPOUTR", - "LineIn", "LINEINL", - "LineIn", "LINEINR", - "Mic", "MIC1"; - - nvidia,ac97-controller = <&ac97>; - - clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>; - clock-names = "pll_a", "pll_a_out0", "mclk"; -}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml new file mode 100644 index 000000000000..6b8876bfa40f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml @@ -0,0 +1,190 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/sound/nvidia,tegra-audio.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: NVIDIA Tegra audio complex + +maintainers: + - Jon Hunter jonathanh@nvidia.com + - Thierry Reding thierry.reding@gmail.com + +properties: + compatible: + oneOf: + - items: + - pattern: '^[a-z0-9]+,tegra-audio-alc5632(-[a-z0-9])+' + - const: nvidia,tegra-audio-alc5632 + - items: + - enum: + - nvidia,tegra-audio-max98090-nyan-big + - nvidia,tegra-audio-max98090-nyan-blaze + - const: nvidia,tegra-audio-max98090-nyan + - const: nvidia,tegra-audio-max98090 + - items: + - pattern: '^[a-z0-9]+,tegra-audio-max98090(-[a-z0-9])+' + - const: nvidia,tegra-audio-max98090 + - items: + - pattern: '^[a-z0-9]+,tegra-audio-rt56(39|40)(-[a-z0-9])+' + - const: nvidia,tegra-audio-rt5640 + - items: + - pattern: '^[a-z0-9]+,tegra-audio-rt5677(-[a-z0-9])+' + - const: nvidia,tegra-audio-rt5677 + - items: + - enum: + - toradex,tegra-audio-sgtl5000-apalis_t30 + - toradex,tegra-audio-sgtl5000-colibri_t30 + - toradex,tegra-audio-sgtl5000-apalis_tk1 + - const: nvidia,tegra-audio-sgtl5000 + - const: nvidia,tegra-audio-trimslice + - items: + - pattern: '^[a-z0-9]+,tegra-audio-wm8753(-[a-z0-9])+' + - const: nvidia,tegra-audio-wm8753 + - items: + - pattern: '^[a-z0-9]+,tegra-audio-(plutux|wm8903(-[a-z0-9])+)' + - const: nvidia,tegra-audio-wm8903 + - items: + - pattern: '^[a-z0-9]+,tegra-audio-wm9712(-[a-z0-9])+' + - const: nvidia,tegra-audio-wm9712 + + clocks: + items: + - description: PLL A clock + - description: PLL A OUT0 clock + - description: The Tegra cdev1/extern1 clock, which feeds the card's mclk + + clock-names: + items: + - const: pll_a + - const: pll_a_out0 + - const: mclk + + assigned-clocks: true + + assigned-clock-parents: true + + assigned-clock-rates: true + + nvidia,model: + $ref: /schemas/types.yaml#/definitions/string + description: The user-visible name of this sound complex. + + nvidia,audio-routing: + $ref: /schemas/types.yaml#/definitions/non-unique-string-array + 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. Valid names for sources and + sinks are the pins (documented in the binding document), + and the jacks on the board: + ALC5632: + * Headset Stereophone + * Int Spk + * Headset Mic + * Digital Mic + MAXX98090: + * Headphones + * SPeakers + * Mic Jack + * Int Mic + RT5640: + * Headphones + * Speakers + * Mic Jack + RT5677: + * Headphone + * Speaker + * Headset Mic + * Internal Mic 1 + * Internal Mic 2 + SGTL5000: + * Headphone Jack + * Line In Jack + * Mic Jack + WM8753: + * Headphone Jack + * Mic Jack + WM8903: + * Headphone Jack + * Int Spk + * Mic Jack + * Int Mic + WM9712: + * Headphone + * LineIn + * Mic + + nvidia,ac97-controller: + $ref: /schemas/types.yaml#/definitions/phandle + description: The phandle of the AC97 controller + + nvidia,i2s-controller: + $ref: /schemas/types.yaml#/definitions/phandle + description: The phandle of the Tegra I2S controller + + nvidia,audio-codec: + $ref: /schemas/types.yaml#/definitions/phandle + description: The phandle of audio codec + + nvidia,spkr-en-gpios: + maxItems: 1 + description: The GPIO that enables the speakers + + nvidia,hp-mute-gpios: + maxItems: 1 + description: The GPIO that mutes the headphones + + nvidia,hp-det-gpios: + maxItems: 1 + description: The GPIO that detect headphones are plugged in + + nvidia,mic-det-gpios: + maxItems: 1 + description: The GPIO that detect microphone is plugged in + + nvidia,int-mic-en-gpios: + maxItems: 1 + description: The GPIO that enables the internal microphone + + nvidia,ext-mic-en-gpios: + maxItems: 1 + description: The GPIO that enables the external microphone + + nvidia,headset: + type: boolean + description: The Mic Jack represents state of the headset microphone pin + +additionalProperties: false + +required: + - compatible + - clocks + - clock-names + +oneOf: + - required: + - nvidia,audio-codec + - nvidia,i2s-controller + - required: + - nvidia,ac97-controller + +examples: + - | + #include <dt-bindings/clock/tegra30-car.h> + + sound { + compatible = "toradex,tegra-audio-sgtl5000-apalis_t30", + "nvidia,tegra-audio-sgtl5000"; + nvidia,model = "Toradex Apalis T30 SGTL5000"; + nvidia,audio-routing = + "Headphone Jack", "HP_OUT", + "LINE_IN", "Line In Jack", + "MIC_IN", "Mic Jack"; + nvidia,i2s-controller = <&tegra_i2s2>; + nvidia,audio-codec = <&codec>; + clocks = <&tegra_car TEGRA30_CLK_PLL_A>, + <&tegra_car TEGRA30_CLK_PLL_A_OUT0>, + <&tegra_car TEGRA30_CLK_EXTERN1>; + clock-names = "pll_a", "pll_a_out0", "mclk"; + };
On Mon, Oct 25, 2021 at 07:19:25PM +0200, David Heidelberg wrote:
Convert Tegra audio complex with the
- ALC5632
- MAX98090
- RT5640
- RT5677
- SGTL5000
- TrimSlice
- WM8753
- WM8903
- WM9712
codec to the YAML format.
Perhaps say why they can all be combined.
I don't think that really works because the properties which are valid varies. Specifically, the GPIO lines vary.
Instead, define a schema with all the common properties and then reference it.
Signed-off-by: David Heidelberg david@ixit.cz
.../sound/nvidia,tegra-audio-alc5632.txt | 48 ----- .../sound/nvidia,tegra-audio-max98090.txt | 53 ----- .../sound/nvidia,tegra-audio-rt5640.txt | 52 ----- .../sound/nvidia,tegra-audio-rt5677.txt | 67 ------ .../sound/nvidia,tegra-audio-sgtl5000.txt | 42 ---- .../sound/nvidia,tegra-audio-trimslice.txt | 21 -- .../sound/nvidia,tegra-audio-wm8753.txt | 40 ---- .../sound/nvidia,tegra-audio-wm8903.txt | 62 ------ .../sound/nvidia,tegra-audio-wm9712.txt | 60 ------ .../bindings/sound/nvidia,tegra-audio.yaml | 190 ++++++++++++++++++ 10 files changed, 190 insertions(+), 445 deletions(-) delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5677.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-sgtl5000.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt delete mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml
[...]
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml new file mode 100644 index 000000000000..6b8876bfa40f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio.yaml @@ -0,0 +1,190 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/sound/nvidia,tegra-audio.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+title: NVIDIA Tegra audio complex
+maintainers:
- Jon Hunter jonathanh@nvidia.com
- Thierry Reding thierry.reding@gmail.com
+properties:
- compatible:
- oneOf:
- items:
- pattern: '^[a-z0-9]+,tegra-audio-alc5632(-[a-z0-9])+'
- const: nvidia,tegra-audio-alc5632
- items:
- enum:
- nvidia,tegra-audio-max98090-nyan-big
- nvidia,tegra-audio-max98090-nyan-blaze
- const: nvidia,tegra-audio-max98090-nyan
- const: nvidia,tegra-audio-max98090
- items:
- pattern: '^[a-z0-9]+,tegra-audio-max98090(-[a-z0-9])+'
- const: nvidia,tegra-audio-max98090
- items:
- pattern: '^[a-z0-9]+,tegra-audio-rt56(39|40)(-[a-z0-9])+'
- const: nvidia,tegra-audio-rt5640
- items:
- pattern: '^[a-z0-9]+,tegra-audio-rt5677(-[a-z0-9])+'
- const: nvidia,tegra-audio-rt5677
- items:
- enum:
- toradex,tegra-audio-sgtl5000-apalis_t30
- toradex,tegra-audio-sgtl5000-colibri_t30
- toradex,tegra-audio-sgtl5000-apalis_tk1
- const: nvidia,tegra-audio-sgtl5000
- const: nvidia,tegra-audio-trimslice
- items:
- pattern: '^[a-z0-9]+,tegra-audio-wm8753(-[a-z0-9])+'
- const: nvidia,tegra-audio-wm8753
- items:
- pattern: '^[a-z0-9]+,tegra-audio-(plutux|wm8903(-[a-z0-9])+)'
- const: nvidia,tegra-audio-wm8903
- items:
- pattern: '^[a-z0-9]+,tegra-audio-wm9712(-[a-z0-9])+'
- const: nvidia,tegra-audio-wm9712
- clocks:
- items:
- description: PLL A clock
- description: PLL A OUT0 clock
- description: The Tegra cdev1/extern1 clock, which feeds the card's mclk
- clock-names:
- items:
- const: pll_a
- const: pll_a_out0
- const: mclk
- assigned-clocks: true
- assigned-clock-parents: true
- assigned-clock-rates: true
These properties are always allowed when 'clocks' is present. So you don't have to list them.
- nvidia,model:
- $ref: /schemas/types.yaml#/definitions/string
- description: The user-visible name of this sound complex.
- nvidia,audio-routing:
- $ref: /schemas/types.yaml#/definitions/non-unique-string-array
- 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. Valid names for sources and
sinks are the pins (documented in the binding document),
and the jacks on the board:
ALC5632:
* Headset Stereophone
* Int Spk
* Headset Mic
* Digital Mic
MAXX98090:
* Headphones
* SPeakers
* Mic Jack
* Int Mic
RT5640:
* Headphones
* Speakers
* Mic Jack
RT5677:
* Headphone
* Speaker
* Headset Mic
* Internal Mic 1
* Internal Mic 2
SGTL5000:
* Headphone Jack
* Line In Jack
* Mic Jack
WM8753:
* Headphone Jack
* Mic Jack
WM8903:
* Headphone Jack
* Int Spk
* Mic Jack
* Int Mic
WM9712:
* Headphone
* LineIn
* Mic
All these strings should be part of the schema.
- nvidia,ac97-controller:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: The phandle of the AC97 controller
- nvidia,i2s-controller:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: The phandle of the Tegra I2S controller
- nvidia,audio-codec:
- $ref: /schemas/types.yaml#/definitions/phandle
- description: The phandle of audio codec
- nvidia,spkr-en-gpios:
- maxItems: 1
- description: The GPIO that enables the speakers
- nvidia,hp-mute-gpios:
- maxItems: 1
- description: The GPIO that mutes the headphones
- nvidia,hp-det-gpios:
- maxItems: 1
- description: The GPIO that detect headphones are plugged in
- nvidia,mic-det-gpios:
- maxItems: 1
- description: The GPIO that detect microphone is plugged in
- nvidia,int-mic-en-gpios:
- maxItems: 1
- description: The GPIO that enables the internal microphone
- nvidia,ext-mic-en-gpios:
- maxItems: 1
- description: The GPIO that enables the external microphone
- nvidia,headset:
- type: boolean
- description: The Mic Jack represents state of the headset microphone pin
+additionalProperties: false
+required:
- compatible
- clocks
- clock-names
+oneOf:
- required:
- nvidia,audio-codec
- nvidia,i2s-controller
- required:
- nvidia,ac97-controller
+examples:
- |
- #include <dt-bindings/clock/tegra30-car.h>
- sound {
compatible = "toradex,tegra-audio-sgtl5000-apalis_t30",
"nvidia,tegra-audio-sgtl5000";
nvidia,model = "Toradex Apalis T30 SGTL5000";
nvidia,audio-routing =
"Headphone Jack", "HP_OUT",
"LINE_IN", "Line In Jack",
"MIC_IN", "Mic Jack";
nvidia,i2s-controller = <&tegra_i2s2>;
nvidia,audio-codec = <&codec>;
clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
<&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
<&tegra_car TEGRA30_CLK_EXTERN1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
- };
-- 2.33.0
01.11.2021 23:42, Rob Herring пишет:
Convert Tegra audio complex with the
- ALC5632
- MAX98090
- RT5640
- RT5677
- SGTL5000
- TrimSlice
- WM8753
- WM8903
- WM9712
codec to the YAML format.
Perhaps say why they can all be combined.
I don't think that really works because the properties which are valid varies. Specifically, the GPIO lines vary.
Instead, define a schema with all the common properties and then reference it.
Those GPIO lines should be more board-specific, rather than CODEC-specific. Yes, some of GPIO lines may be unrelated to a specific CODEC, but practically it's not worth the effort to split this binding because of a couple optional GPIOs, IMO. We actually considered the variant with the reference that you're suggesting and decided that it should be unnecessary.
Are you insisting that the binding needs to be split?
01.11.2021 23:42, Rob Herring пишет:
- nvidia,audio-routing:
- $ref: /schemas/types.yaml#/definitions/non-unique-string-array
- 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. Valid names for sources and
sinks are the pins (documented in the binding document),
and the jacks on the board:
ALC5632:
* Headset Stereophone
* Int Spk
* Headset Mic
* Digital Mic
MAXX98090:
* Headphones
* SPeakers
Speakers -
* Mic Jack
* Int Mic
RT5640:
* Headphones
* Speakers
* Mic Jack
RT5677:
* Headphone
* Speaker
* Headset Mic
* Internal Mic 1
* Internal Mic 2
SGTL5000:
* Headphone Jack
* Line In Jack
* Mic Jack
WM8753:
* Headphone Jack
* Mic Jack
WM8903:
* Headphone Jack
* Int Spk
* Mic Jack
* Int Mic
WM9712:
* Headphone
* LineIn
* Mic
All these strings should be part of the schema.
Well, seems this can be done only using a separated bindings.
25.10.2021 20:19, David Heidelberg пишет:
+properties:
- compatible:
- oneOf:
- items:
- pattern: '^[a-z0-9]+,tegra-audio-alc5632(-[a-z0-9])+'
- const: nvidia,tegra-audio-alc5632
- items:
- enum:
- nvidia,tegra-audio-max98090-nyan-big
- nvidia,tegra-audio-max98090-nyan-blaze
- const: nvidia,tegra-audio-max98090-nyan
- const: nvidia,tegra-audio-max98090
- items:
- pattern: '^[a-z0-9]+,tegra-audio-max98090(-[a-z0-9])+'
- const: nvidia,tegra-audio-max98090
- items:
- pattern: '^[a-z0-9]+,tegra-audio-rt56(39|40)(-[a-z0-9])+'
- const: nvidia,tegra-audio-rt5640
- items:
- pattern: '^[a-z0-9]+,tegra-audio-rt5677(-[a-z0-9])+'
- const: nvidia,tegra-audio-rt5677
- items:
- enum:
- toradex,tegra-audio-sgtl5000-apalis_t30
- toradex,tegra-audio-sgtl5000-colibri_t30
- toradex,tegra-audio-sgtl5000-apalis_tk1
- const: nvidia,tegra-audio-sgtl5000
- const: nvidia,tegra-audio-trimslice
- items:
- pattern: '^[a-z0-9]+,tegra-audio-wm8753(-[a-z0-9])+'
- const: nvidia,tegra-audio-wm8753
- items:
- pattern: '^[a-z0-9]+,tegra-audio-(plutux|wm8903(-[a-z0-9])+)'
- const: nvidia,tegra-audio-wm8903
- items:
- pattern: '^[a-z0-9]+,tegra-audio-wm9712(-[a-z0-9])+'
- const: nvidia,tegra-audio-wm9712
I'm now wondering whether these patterns need to have the end of string "$" mark, for completeness.
participants (3)
-
David Heidelberg
-
Dmitry Osipenko
-
Rob Herring