Unverified Commit 88dffe43 authored by David Heidelberg's avatar David Heidelberg Committed by Mark Brown
Browse files

ASoC: 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.

Additional changes:
 - added missing HPOUTL to the WM9712 codec.
 - extended rt5677 codec with multiple pins

Reviewed-by: default avatarDmitry Osipenko <digetx@gmail.com>
Signed-off-by: default avatarDavid Heidelberg <david@ixit.cz>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20211211224946.79875-1-david@ixit.cz


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2167c0b2
Loading
Loading
Loading
Loading
+0 −48
Original line number Diff line number Diff line
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";
};
+74 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-alc5632.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVIDIA Tegra audio complex with ALC5632 CODEC

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Thierry Reding <thierry.reding@gmail.com>

allOf:
  - $ref: nvidia,tegra-audio-common.yaml#

properties:
  compatible:
    items:
      - pattern: '^[a-z0-9]+,tegra-audio-alc5632(-[a-z0-9]+)+$'
      - const: nvidia,tegra-audio-alc5632

  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.
    minItems: 2
    items:
      enum:
        # Board Connectors
        - "Headset Stereophone"
        - "Int Spk"
        - "Headset Mic"
        - "Digital Mic"

        # CODEC Pins
        - SPKOUT
        - SPKOUTN
        - MICBIAS1
        - MIC1
        - HPR
        - HPL
        - DMICDAT

required:
  - nvidia,i2s-controller

unevaluatedProperties: false

examples:
  - |
    sound {
        compatible = "nvidia,tegra-audio-alc5632-paz00",
                     "nvidia,tegra-audio-alc5632";

        nvidia,model = "Compal PAZ00";

        nvidia,audio-routing = "Int Spk", "SPKOUT",
                               "Int Spk", "SPKOUTN",
                               "Headset Mic", "MICBIAS1",
                               "MIC1", "Headset Mic",
                               "Headset Stereophone", "HPR",
                               "Headset Stereophone", "HPL",
                               "DMICDAT", "Digital Mic";

        nvidia,i2s-controller = <&i2s>;
        nvidia,audio-codec = <&codec>;

        clocks = <&clk 112>, <&clk 113>, <&clk 93>;
        clock-names = "pll_a", "pll_a_out0", "mclk";
    };
+83 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: "http://devicetree.org/schemas/sound/nvidia,tegra-audio-common.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Common properties for NVIDIA Tegra audio complexes

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Thierry Reding <thierry.reding@gmail.com>

properties:
  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

  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.

  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,ear-sel-gpios:
    maxItems: 1
    description: The GPIO that switch between the microphones

  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: true
+0 −53
Original line number Diff line number Diff line
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";
};
+97 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-max98090.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVIDIA Tegra audio complex with MAX98090 CODEC

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Thierry Reding <thierry.reding@gmail.com>

allOf:
  - $ref: nvidia,tegra-audio-common.yaml#

properties:
  compatible:
    oneOf:
      - items:
          - pattern: '^[a-z0-9]+,tegra-audio-max98090(-[a-z0-9]+)+$'
          - const: nvidia,tegra-audio-max98090
      - 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

  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.
    minItems: 2
    items:
      enum:
        # Board Connectors
        - "Headphones"
        - "Speakers"
        - "Mic Jack"
        - "Int Mic"

        # CODEC Pins
        - MIC1
        - MIC2
        - DMICL
        - DMICR
        - IN1
        - IN2
        - IN3
        - IN4
        - IN5
        - IN6
        - IN12
        - IN34
        - IN56
        - HPL
        - HPR
        - SPKL
        - SPKR
        - RCVL
        - RCVR
        - MICBIAS

required:
  - nvidia,i2s-controller

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/tegra124-car.h>

    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";
    };
Loading