code:
Texas Instruments - tas2552 Codec module

The tas2552 serial control bus communicates through I2C protocols

Required properties:
	- compatible - One of:
		"ti,tas2552" - TAS2552
	- reg -  I2C slave address: it can be 0x40 if ADDR pin is 0
				    or 0x41 if ADDR pin is 1.
	- supply-*: Required supply regulators are:
		"vbat"		battery voltage
		"iovdd"		I/O Voltage
		"avdd"		Analog DAC Voltage

Optional properties:
	- enable-gpio - gpio pin to enable/disable the device

tas2552 can receive its reference clock via MCLK, BCLK, IVCLKIN pin or use the
internal 1.8MHz. This CLKIN is used by the PLL. In addition to PLL, the PDM
reference clock is also selectable: PLL, IVCLKIN, BCLK or MCLK.
For system integration the dt-bindings/sound/tas2552.h header file provides
defined values to select and configure the PLL and PDM reference clocks.

Example:

tas2552: tas2552@41 {
	compatible = "ti,tas2552";
	reg = <0x41>;
	vbat-supply = <&reg_vbat>;
	iovdd-supply = <&reg_iovdd>;
	avdd-supply = <&reg_avdd>;
	enable-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>;
};

For more product information please see the link below:
https://www.ti.com/product/TAS2552


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2019 Texas Instruments Incorporated
%YAML 1.2
---
$id: "http://devicetree.org/schemas/sound/tas2562.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Texas Instruments TAS2562 Smart PA

maintainers:
  - Andrew Davis <afd@ti.com>

description: |
  The TAS2562 is a mono, digital input Class-D audio amplifier optimized for
  efficiently driving high peak power into small loudspeakers.
  Integrated speaker voltage and current sense provides for
  real time monitoring of loudspeaker behavior.

  Specifications about the audio amplifier can be found at:
    https://www.ti.com/lit/gpn/tas2562
    https://www.ti.com/lit/gpn/tas2563
    https://www.ti.com/lit/gpn/tas2564
    https://www.ti.com/lit/gpn/tas2110

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    enum:
      - ti,tas2562
      - ti,tas2563
      - ti,tas2564
      - ti,tas2110

  reg:
    maxItems: 1
    description: |
       I2C address of the device can be one of these 0x4c, 0x4d, 0x4e or 0x4f

  shut-down-gpios:
    maxItems: 1
    description: GPIO used to control the state of the device.
    deprecated: true

  shutdown-gpios:
    maxItems: 1
    description: GPIO used to control the state of the device.

  interrupts:
    maxItems: 1

  ti,imon-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: TDM TX current sense time slot.

  '#sound-dai-cells':
    const: 1

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
   #include <dt-bindings/gpio/gpio.h>
   i2c0 {
     #address-cells = <1>;
     #size-cells = <0>;
     codec: codec@4c {
       compatible = "ti,tas2562";
       reg = <0x4c>;
       #sound-dai-cells = <1>;
       interrupt-parent = <&gpio1>;
       interrupts = <14>;
       shutdown-gpios = <&gpio1 15 0>;
       ti,imon-slot-no = <0>;
     };
   };

repo_name: angery/linux


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2019-20 Texas Instruments Incorporated
%YAML 1.2
---
$id: "http://devicetree.org/schemas/sound/tas2770.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Texas Instruments TAS2770 Smart PA

maintainers:
  - Shi Fu <shifu0704@thundersoft.com>

description: |
  The TAS2770 is a mono, digital input Class-D audio amplifier optimized for
  efficiently driving high peak power into small loudspeakers.
  Integrated speaker voltage and current sense provides for
  real time monitoring of loudspeaker behavior.

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    enum:
      - ti,tas2770

  reg:
    maxItems: 1
    description: |
       I2C address of the device can be between 0x41 to 0x48.

  reset-gpio:
    maxItems: 1
    description: GPIO used to reset the device.

  shutdown-gpios:
    maxItems: 1
    description: GPIO used to control the state of the device.

  interrupts:
    maxItems: 1

  ti,imon-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: TDM TX current sense time slot.

  ti,vmon-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: TDM TX voltage sense time slot.

  ti,asi-format:
    deprecated: true
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Sets TDM RX capture edge.
    enum:
      - 0 # Rising edge
      - 1 # Falling edge

  '#sound-dai-cells':
    const: 1

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
   #include <dt-bindings/gpio/gpio.h>
   i2c0 {
     #address-cells = <1>;
     #size-cells = <0>;
     codec: codec@41 {
       compatible = "ti,tas2770";
       reg = <0x41>;
       #sound-dai-cells = <1>;
       interrupt-parent = <&gpio1>;
       interrupts = <14>;
       reset-gpio = <&gpio1 15 0>;
       shutdown-gpios = <&gpio1 14 0>;
       ti,imon-slot-no = <0>;
       ti,vmon-slot-no = <2>;
     };
   };


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2020-2022 Texas Instruments Incorporated
%YAML 1.2
---
$id: "http://devicetree.org/schemas/sound/tas27xx.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Texas Instruments TAS2764/TAS2780 Smart PA

maintainers:
  - Shenghao Ding <shenghao-ding@ti.com>

description: |
  The TAS2764/TAS2780 is a mono, digital input Class-D audio amplifier
  optimized for efficiently driving high peak power into small
  loudspeakers. Integrated speaker voltage and current sense provides
  for real time monitoring of loudspeaker behavior.

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    enum:
      - ti,tas2764
      - ti,tas2780

  reg:
    maxItems: 1
    description: |
       I2C address of the device can be between 0x38 to 0x45.

  reset-gpios:
    maxItems: 1
    description: GPIO used to reset the device.

  shutdown-gpios:
    maxItems: 1
    description: GPIO used to control the state of the device.

  interrupts:
    maxItems: 1

  ti,imon-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: TDM TX current sense time slot.

  ti,vmon-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: TDM TX voltage sense time slot.

  '#sound-dai-cells':
    const: 1

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
   #include <dt-bindings/gpio/gpio.h>
   i2c0 {
     #address-cells = <1>;
     #size-cells = <0>;
     codec: codec@38 {
       compatible = "ti,tas2764";
       reg = <0x38>;
       #sound-dai-cells = <1>;
       interrupt-parent = <&gpio1>;
       interrupts = <14>;
       reset-gpios = <&gpio1 15 0>;
       shutdown-gpios = <&gpio1 15 0>;
       ti,imon-slot-no = <0>;
       ti,vmon-slot-no = <2>;
     };
   };

...


code:
Texas Instruments TAS5711/TAS5717/TAS5719/TAS5721 stereo power amplifiers

The codec is controlled through an I2C interface.  It also has two other
signals that can be wired up to GPIOs: reset (strongly recommended), and
powerdown (optional).

Required properties:

- compatible: should be one of the following:
  - "ti,tas5707"
  - "ti,tas5711",
  - "ti,tas5717",
  - "ti,tas5719",
  - "ti,tas5721"
- reg: The I2C address of the device
- #sound-dai-cells: must be equal to 0

Optional properties:

- reset-gpios: GPIO specifier for the TAS571x's active low reset line
- pdn-gpios: GPIO specifier for the TAS571x's active low powerdown line
- clocks: clock phandle for the MCLK input
- clock-names: should be "mclk"
- AVDD-supply: regulator phandle for the AVDD supply (all chips)
- DVDD-supply: regulator phandle for the DVDD supply (all chips)
- HPVDD-supply: regulator phandle for the HPVDD supply (5717/5719)
- PVDD_AB-supply: regulator phandle for the PVDD_AB supply (5717/5719)
- PVDD_CD-supply: regulator phandle for the PVDD_CD supply (5717/5719)
- PVDD_A-supply: regulator phandle for the PVDD_A supply (5711)
- PVDD_B-supply: regulator phandle for the PVDD_B supply (5711)
- PVDD_C-supply: regulator phandle for the PVDD_C supply (5711)
- PVDD_D-supply: regulator phandle for the PVDD_D supply (5711)
- DRVDD-supply: regulator phandle for the DRVDD supply (5721)
- PVDD-supply: regulator phandle for the PVDD supply (5721)

Example:

	tas5717: audio-codec@2a {
		compatible = "ti,tas5717";
		reg = <0x2a>;
		#sound-dai-cells = <0>;

		reset-gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
		pdn-gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;

		clocks = <&clk_core CLK_I2S>;
		clock-names = "mclk";
	};


code:
Texas Instruments TAS5720 Mono Audio amplifier

The TAS5720 serial control bus communicates through the I2C protocol only. The
serial bus is also used for periodic codec fault checking/reporting during
audio playback. For more product information please see the links below:

https://www.ti.com/product/TAS5720L
https://www.ti.com/product/TAS5720M
https://www.ti.com/product/TAS5722L

Required properties:

- compatible : "ti,tas5720",
               "ti,tas5722"
- reg : I2C slave address
- dvdd-supply : phandle to a 3.3-V supply for the digital circuitry
- pvdd-supply : phandle to a supply used for the Class-D amp and the analog

Example:

tas5720: tas5720@6c {
	compatible = "ti,tas5720";
	reg = <0x6c>;
	dvdd-supply = <&vdd_3v3_reg>;
	pvdd-supply = <&amp_supply_reg>;
};


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/tas5805m.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TAS5805M audio amplifier

maintainers:
  - Daniel Beer <daniel.beer@igorinstitute.com>

description: |
  The TAS5805M is a class D audio amplifier with a built-in DSP.

properties:
  compatible:
    enum:
      - ti,tas5805m

  reg:
    maxItems: 1
    description: |
      I2C address of the amplifier. See the datasheet for possible values.

  pvdd-supply:
    description: |
      Regulator for audio power supply (PVDD in the datasheet).

  pdn-gpios:
    description: |
      Power-down control GPIO (PDN pin in the datasheet).

  ti,dsp-config-name:
    description: |
      The name of the DSP configuration that should be loaded for this
      instance. Configuration blobs are sequences of register writes
      generated from TI's PPC3 tool.
    $ref: /schemas/types.yaml#/definitions/string

examples:
  - |
    i2c0 {
        #address-cells = <1>;
        #size-cells = <0>;
        tas5805m: tas5805m@2c {
                reg = <0x2c>;
                compatible = "ti,tas5805m";

                pvdd-supply = <&audiopwr>;
                pdn-gpios = <&tlmm 160 0>;

                ti,dsp-config-name = "mono_pbtl_48khz";
        };
    };

additionalProperties: true


code:
TDA7419 audio processor

This device supports I2C only.

Required properties:

- compatible : "st,tda7419"
- reg : the I2C address of the device.
- vdd-supply : a regulator spec for the common power supply (8-10V)

Optional properties:

- st,mute-gpios : a GPIO spec for the MUTE pin.

Pins on the device (for linking into audio routes):

  * SE3L
  * SE3R
  * SE2L
  * SE2R
  * SE1L
  * SE1R
  * DIFFL
  * DIFFR
  * MIX
  * OUTLF
  * OUTRF
  * OUTLR
  * OUTRR
  * OUTSW

Example:

ap: tda7419@44 {
	compatible = "st,tda7419";
	reg = <0x44>;
	vdd-supply = <&vdd_9v0_reg>;
};


code:
TDM slot:

This specifies audio DAI's TDM slot.

TDM slot properties:
dai-tdm-slot-num : Number of slots in use.
dai-tdm-slot-width : Width in bits for each slot.
dai-tdm-slot-tx-mask : Transmit direction slot mask, optional
dai-tdm-slot-rx-mask : Receive direction slot mask, optional

For instance:
	dai-tdm-slot-num = <2>;
	dai-tdm-slot-width = <8>;
	dai-tdm-slot-tx-mask = <0 1>;
	dai-tdm-slot-rx-mask = <1 0>;

And for each specified driver, there could be one .of_xlate_tdm_slot_mask()
to specify an explicit mapping of the channels and the slots. If it's absent
the default snd_soc_of_xlate_tdm_slot_mask() will be used to generating the
tx and rx masks.

For snd_soc_of_xlate_tdm_slot_mask(), the tx and rx masks will use a 1 bit
for an active slot as default, and the default active bits are at the LSB of
the masks.

The explicit masks are given as array of integers, where the first
number presents bit-0 (LSB), second presents bit-1, etc. Any non zero
number is considered 1 and 0 is 0. snd_soc_of_xlate_tdm_slot_mask()
does not do anything, if either mask is set non zero value.


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/test-component.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Test Component

maintainers:
  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

properties:
  compatible:
    enum:
      - test-cpu
      - test-cpu-verbose
      - test-cpu-verbose-dai
      - test-cpu-verbose-component
      - test-codec
      - test-codec-verbose
      - test-codec-verbose-dai
      - test-codec-verbose-component

required:
  - compatible

additionalProperties: true

examples:
  - |
    test_cpu {
        compatible = "test-cpu";
    };


code:
NXP TFA9879 class-D audio amplifier

Required properties:

- compatible : "nxp,tfa9879"

- reg : the I2C address of the device

- #sound-dai-cells : must be 0.

Example:

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;

	amp: amp@6c {
		#sound-dai-cells = <0>;
		compatible = "nxp,tfa9879";
		reg = <0x6c>;
	};
};


code:
Texas Intstruments ADS117x ADC

Required properties:

  - compatible : "ti,ads1174" or "ti,ads1178"

Example:

ads1178 {
	compatible = "ti,ads1178";
};


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2020 Texas Instruments Incorporated
# Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,j721e-cpb-audio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments J721e Common Processor Board Audio Support

maintainers:
  - Peter Ujfalusi <peter.ujfalusi@gmail.com>

description: |
  The audio support on the board is using pcm3168a codec connected to McASP10
  serializers in parallel setup.
  The pcm3168a SCKI clock is sourced from j721e AUDIO_REFCLK2 pin.
  In order to support 48KHz and 44.1KHz family of sampling rates the parent
  clock for AUDIO_REFCLK2 needs to be changed between PLL4 (for 48KHz) and
  PLL15 (for 44.1KHz). The same PLLs are used for McASP10's AUXCLK clock via
  different HSDIVIDER.

  Clocking setup for j721e:
    48KHz family:
    PLL4 ---> PLL4_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
          |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI

    44.1KHz family:
    PLL15 ---> PLL15_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
           |-> PLL15_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI

  Clocking setup for j7200:
    48KHz family:
    PLL4 ---> PLL4_HSDIV0 ---> MCASP0_AUXCLK ---> McASP0.auxclk
          |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI

properties:
  compatible:
    enum:
      - ti,j721e-cpb-audio
      - ti,j7200-cpb-audio

  model:
    $ref: /schemas/types.yaml#/definitions/string
    description: User specified audio sound card name

  ti,cpb-mcasp:
    description: phandle to McASP used on CPB
    $ref: /schemas/types.yaml#/definitions/phandle

  ti,cpb-codec:
    description: phandle to the pcm3168a codec used on the CPB
    $ref: /schemas/types.yaml#/definitions/phandle

  clocks:
    minItems: 4
    maxItems: 6

  clock-names:
    minItems: 4
    maxItems: 6

required:
  - compatible
  - model
  - ti,cpb-mcasp
  - ti,cpb-codec
  - clocks
  - clock-names

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: ti,j721e-cpb-audio

    then:
      properties:
        clocks:
          items:
            - description: AUXCLK clock for McASP used by CPB audio
            - description: Parent for CPB_McASP auxclk (for 48KHz)
            - description: Parent for CPB_McASP auxclk (for 44.1KHz)
            - description: SCKI clock for the pcm3168a codec on CPB
            - description: Parent for CPB_SCKI clock (for 48KHz)
            - description: Parent for CPB_SCKI clock (for 44.1KHz)

        clock-names:
          items:
            - const: cpb-mcasp-auxclk
            - const: cpb-mcasp-auxclk-48000
            - const: cpb-mcasp-auxclk-44100
            - const: cpb-codec-scki
            - const: cpb-codec-scki-48000
            - const: cpb-codec-scki-44100

  - if:
      properties:
        compatible:
          contains:
            const: ti,j7200-cpb-audio

    then:
      properties:
        clocks:
          items:
            - description: AUXCLK clock for McASP used by CPB audio
            - description: Parent for CPB_McASP auxclk (for 48KHz)
            - description: SCKI clock for the pcm3168a codec on CPB
            - description: Parent for CPB_SCKI clock (for 48KHz)

        clock-names:
          items:
            - const: cpb-mcasp-auxclk
            - const: cpb-mcasp-auxclk-48000
            - const: cpb-codec-scki
            - const: cpb-codec-scki-48000

examples:
  - |+
    sound {
        compatible = "ti,j721e-cpb-audio";
        model = "j721e-cpb";

        ti,cpb-mcasp = <&mcasp10>;
        ti,cpb-codec = <&pcm3168a_1>;

        clocks = <&k3_clks 184 1>,
                 <&k3_clks 184 2>, <&k3_clks 184 4>,
                 <&k3_clks 157 371>,
                 <&k3_clks 157 400>, <&k3_clks 157 401>;
        clock-names = "cpb-mcasp-auxclk",
                      "cpb-mcasp-auxclk-48000", "cpb-mcasp-auxclk-44100",
                      "cpb-codec-scki",
                      "cpb-codec-scki-48000", "cpb-codec-scki-44100";
    };


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2020 Texas Instruments Incorporated
# Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,j721e-cpb-ivi-audio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments J721e Common Processor Board Audio Support

maintainers:
  - Peter Ujfalusi <peter.ujfalusi@gmail.com>

description: |
  The Infotainment board plugs into the Common Processor Board, the support of the
  extension board is extending the CPB audio support, decribed in:
  sound/ti,j721e-cpb-audio.txt

  The audio support on the Infotainment Expansion Board consists of McASP0
  connected to two pcm3168a codecs with dedicated set of serializers to each.
  The SCKI for pcm3168a is sourced from j721e AUDIO_REFCLK0 pin.

  In order to support 48KHz and 44.1KHz family of sampling rates the parent clock
  for AUDIO_REFCLK0 needs to be changed between PLL4 (for 48KHz) and PLL15 (for
  44.1KHz). The same PLLs are used for McASP0's AUXCLK clock via different
  HSDIVIDER.

  Note: the same PLL4 and PLL15 is used by the audio support on the CPB!

  Clocking setup for 48KHz family:
  PLL4 ---> PLL4_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
        |                |-> MCASP0_AUXCLK  ---> McASP0.auxclk
        |
        |-> PLL4_HSDIV2 ---> AUDIO_REFCLK2  ---> pcm3168a.SCKI
                         |-> AUDIO_REFCLK0  ---> pcm3168a_a/b.SCKI

  Clocking setup for 44.1KHz family:
  PLL15 ---> PLL15_HSDIV0 ---> MCASP10_AUXCLK ---> McASP10.auxclk
        |                  |-> MCASP0_AUXCLK  ---> McASP0.auxclk
        |
        |-> PLL15_HSDIV2 ---> AUDIO_REFCLK2   ---> pcm3168a.SCKI
                          |-> AUDIO_REFCLK0   ---> pcm3168a_a/b.SCKI

properties:
  compatible:
    items:
      - const: ti,j721e-cpb-ivi-audio

  model:
    $ref: /schemas/types.yaml#/definitions/string
    description: User specified audio sound card name

  ti,cpb-mcasp:
    description: phandle to McASP used on CPB
    $ref: /schemas/types.yaml#/definitions/phandle

  ti,cpb-codec:
    description: phandle to the pcm3168a codec used on the CPB
    $ref: /schemas/types.yaml#/definitions/phandle

  ti,ivi-mcasp:
    description: phandle to McASP used on IVI
    $ref: /schemas/types.yaml#/definitions/phandle

  ti,ivi-codec-a:
    description: phandle to the pcm3168a-A codec on the expansion board
    $ref: /schemas/types.yaml#/definitions/phandle

  ti,ivi-codec-b:
    description: phandle to the pcm3168a-B codec on the expansion board
    $ref: /schemas/types.yaml#/definitions/phandle

  clocks:
    items:
      - description: AUXCLK clock for McASP used by CPB audio
      - description: Parent for CPB_McASP auxclk (for 48KHz)
      - description: Parent for CPB_McASP auxclk (for 44.1KHz)
      - description: SCKI clock for the pcm3168a codec on CPB
      - description: Parent for CPB_SCKI clock (for 48KHz)
      - description: Parent for CPB_SCKI clock (for 44.1KHz)
      - description: AUXCLK clock for McASP used by IVI audio
      - description: Parent for IVI_McASP auxclk (for 48KHz)
      - description: Parent for IVI_McASP auxclk (for 44.1KHz)
      - description: SCKI clock for the pcm3168a codec on IVI
      - description: Parent for IVI_SCKI clock (for 48KHz)
      - description: Parent for IVI_SCKI clock (for 44.1KHz)

  clock-names:
    items:
      - const: cpb-mcasp-auxclk
      - const: cpb-mcasp-auxclk-48000
      - const: cpb-mcasp-auxclk-44100
      - const: cpb-codec-scki
      - const: cpb-codec-scki-48000
      - const: cpb-codec-scki-44100
      - const: ivi-mcasp-auxclk
      - const: ivi-mcasp-auxclk-48000
      - const: ivi-mcasp-auxclk-44100
      - const: ivi-codec-scki
      - const: ivi-codec-scki-48000
      - const: ivi-codec-scki-44100

required:
  - compatible
  - model
  - ti,cpb-mcasp
  - ti,cpb-codec
  - ti,ivi-mcasp
  - ti,ivi-codec-a
  - ti,ivi-codec-b
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |+
    sound {
        compatible = "ti,j721e-cpb-ivi-audio";
        model = "j721e-cpb-ivi";

        ti,cpb-mcasp = <&mcasp10>;
        ti,cpb-codec = <&pcm3168a_1>;

        ti,ivi-mcasp = <&mcasp0>;
        ti,ivi-codec-a = <&pcm3168a_a>;
        ti,ivi-codec-b = <&pcm3168a_b>;

        clocks = <&k3_clks 184 1>,
                 <&k3_clks 184 2>, <&k3_clks 184 4>,
                 <&k3_clks 157 371>,
                 <&k3_clks 157 400>, <&k3_clks 157 401>,
                 <&k3_clks 174 1>,
                 <&k3_clks 174 2>, <&k3_clks 174 4>,
                 <&k3_clks 157 301>,
                 <&k3_clks 157 330>, <&k3_clks 157 331>;
        clock-names = "cpb-mcasp-auxclk",
                      "cpb-mcasp-auxclk-48000", "cpb-mcasp-auxclk-44100",
                      "cpb-codec-scki",
                      "cpb-codec-scki-48000", "cpb-codec-scki-44100",
                      "ivi-mcasp-auxclk",
                      "ivi-mcasp-auxclk-48000", "ivi-mcasp-auxclk-44100",
                      "ivi-codec-scki",
                      "ivi-codec-scki-48000", "ivi-codec-scki-44100";
    };


code:
Texas Instruments PCM1681 8-channel PWM Processor

Required properties:

 - compatible:		Should contain "ti,pcm1681".
 - reg:			The i2c address. Should contain <0x4c>.

Examples:

	i2c_bus {
		pcm1681@4c {
			compatible = "ti,pcm1681";
			reg = <0x4c>;
		};
	};


code:
Texas Instruments pcm3168a DT bindings

This driver supports both SPI and I2C bus access for this codec

Required properties:

  - compatible: "ti,pcm3168a"

  - clocks : Contains an entry for each entry in clock-names

  - clock-names : Includes the following entries:
	"scki"	The system clock

  - VDD1-supply : Digital power supply regulator 1 (+3.3V)

  - VDD2-supply : Digital power supply regulator 2 (+3.3V)

  - VCCAD1-supply : ADC power supply regulator 1 (+5V)

  - VCCAD2-supply : ADC power supply regulator 2 (+5V)

  - VCCDA1-supply : DAC power supply regulator 1 (+5V)

  - VCCDA2-supply : DAC power supply regulator 2 (+5V)

For required properties on SPI/I2C, consult SPI/I2C device tree documentation

Optional properties:

  - reset-gpios : Optional reset gpio line connected to RST pin of the codec.
		  The RST line is low active:
		  RST = low: device power-down
		  RST = high: device is enabled

Examples:

i2c0: i2c0@0 {

	...

	pcm3168a: audio-codec@44 {
		compatible = "ti,pcm3168a";
		reg = <0x44>;
		reset-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
		clocks = <&clk_core CLK_AUDIO>;
		clock-names = "scki";
		VDD1-supply = <&supply3v3>;
		VDD2-supply = <&supply3v3>;
		VCCAD1-supply = <&supply5v0>;
		VCCAD2-supply = <&supply5v0>;
		VCCDA1-supply = <&supply5v0>;
		VCCDA2-supply = <&supply5v0>;
		pinctrl-names = "default";
		pinctrl-0 = <&dac_clk_pin>;
	};
};


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,src4xxx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments SRC4392 Device Tree Bindings

description: |
  The SRC4392 is a digital audio codec that can be connected via
  I2C or SPI. Currently, only I2C bus is supported.

maintainers:
  - Matt Flax <flatmax@flatmax.com>

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    const: ti,src4392

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

  reg:
    maxItems: 1

required:
  - "#sound-dai-cells"
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        audio-codec@70 {
            #sound-dai-cells = <0>;
            compatible = "ti,src4392";
            reg = <0x70>;
        };
    };
...


code:
Texas Instruments TAS5086 6-channel PWM Processor

Required properties:

 - compatible:		Should contain "ti,tas5086".
 - reg:			The i2c address. Should contain <0x1b>.

Optional properties:

 - reset-gpio: 		A GPIO spec to define which pin is connected to the
			chip's !RESET pin. If specified, the driver will
			assert a hardware reset at probe time.

 - ti,charge-period:	This property should contain the time in microseconds
			that closely matches the external single-ended
			split-capacitor charge period. The hardware chip
			waits for this period of time before starting the
			PWM signals. This helps reduce pops and clicks.

			When not specified, the hardware default of 1300ms
			is retained.

 - ti,mid-z-channel-X:	Boolean properties, X being a number from 1 to 6.
			If given, channel X will start with the Mid-Z start
			sequence, otherwise the default Low-Z scheme is used.

			The correct configuration depends on how the power
			stages connected to the PWM output pins work. Not all
			power stages are compatible to Mid-Z - please refer
			to the datasheets for more details.

			Most systems should not set any of these properties.

 - avdd-supply:         Power supply for AVDD, providing 3.3V
 - dvdd-supply:         Power supply for DVDD, providing 3.3V

Examples:

	i2c_bus {
		tas5086@1b {
			compatible = "ti,tas5086";
			reg = <0x1b>;
			reset-gpio = <&gpio 23 0>;
			ti,charge-period = <156000>;
			avdd-supply = <&vdd_3v3_reg>;
			dvdd-supply = <&vdd_3v3_reg>;
		};
	};


code:
Texas Instruments TAS6424 Quad-Channel Audio amplifier

The TAS6424 serial control bus communicates through I2C protocols.

Required properties:
	- compatible: "ti,tas6424" - TAS6424
	- reg: I2C slave address
	- sound-dai-cells: must be equal to 0
	- standby-gpios: GPIO used to shut the TAS6424 down.
	- mute-gpios: GPIO used to mute all the outputs

Example:

tas6424: tas6424@6a {
	compatible = "ti,tas6424";
	reg = <0x6a>;

	#sound-dai-cells = <0>;
};

For more product information please see the link below:
https://www.ti.com/product/TAS6424-Q1


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,tlv320adc3xxx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TLV320ADC3001/TLV320ADC3101 Stereo ADC

maintainers:
  - Ricard Wanderlof <ricardw@axis.com>

description: |
  Texas Instruments TLV320ADC3001 and TLV320ADC3101 Stereo ADC
  https://www.ti.com/product/TLV320ADC3001
  https://www.ti.com/product/TLV320ADC3101

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    enum:
      - ti,tlv320adc3001
      - ti,tlv320adc3101

  reg:
    maxItems: 1
    description: I2C address

  '#sound-dai-cells':
    const: 0

  '#gpio-cells':
    const: 2

  gpio-controller: true

  reset-gpios:
    maxItems: 1
    description: GPIO pin used for codec reset (RESET pin)

  clocks:
    maxItems: 1
    description: Master clock (MCLK)

  ti,dmdin-gpio1:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0 # ADC3XXX_GPIO_DISABLED       - I/O buffers powered down and not used
      - 1 # ADC3XXX_GPIO_INPUT          - Various non-GPIO input functions
      - 2 # ADC3XXX_GPIO_GPI            - General purpose input
      - 3 # ADC3XXX_GPIO_GPO            - General purpose output
      - 4 # ADC3XXX_GPIO_CLKOUT         - Clock source set in CLKOUT_MUX reg
      - 5 # ADC3XXX_GPIO_INT1           - INT1 output
      - 6 # ADC3XXX_GPIO_SECONDARY_BCLK - Codec interface secondary BCLK
      - 7 # ADC3XXX_GPIO_SECONDARY_WCLK - Codec interface secondary WCLK
    default: 0
    description: |
      Configuration for DMDIN/GPIO1 pin.

      When ADC3XXX_GPIO_GPO is configured, this causes corresponding the
      ALSA control "GPIOx Output" to appear, as a switch control.

  ti,dmclk-gpio2:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0 # ADC3XXX_GPIO_DISABLED       - I/O buffers powered down and not used
      - 1 # ADC3XXX_GPIO_INPUT          - Various non-GPIO input functions
      - 2 # ADC3XXX_GPIO_GPI            - General purpose input
      - 3 # ADC3XXX_GPIO_GPO            - General purpose output
      - 4 # ADC3XXX_GPIO_CLKOUT         - Clock source set in CLKOUT_MUX reg
      - 5 # ADC3XXX_GPIO_INT1           - INT1 output
      - 6 # ADC3XXX_GPIO_SECONDARY_BCLK - Codec interface secondary BCLK
      - 7 # ADC3XXX_GPIO_SECONDARY_WCLK - Codec interface secondary WCLK
    default: 0
    description: |
      Configuration for DMCLK/GPIO2 pin.

      When ADC3XXX_GPIO_GPO is configured, this causes corresponding the
      ALSA control "GPIOx Output" to appear, as a switch control.

      Note that there is currently no support for reading the GPIO pins as
      inputs.

  ti,micbias1-vg:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0 # ADC3XXX_MICBIAS_OFF		- Mic bias is powered down
      - 1 # ADC3XXX_MICBIAS_2_0V	- Mic bias is set to 2.0V
      - 2 # ADC3XXX_MICBIAS_2_5V	- Mic bias is set to 2.5V
      - 3 # ADC3XXX_MICBIAS_AVDD	- Mic bias is same as AVDD supply
    default: 0
    description: |
      Mic bias voltage output on MICBIAS1 pin

  ti,micbias2-vg:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0 # ADC3XXX_MICBIAS_OFF		- Mic bias is powered down
      - 1 # ADC3XXX_MICBIAS_2_0V	- Mic bias is set to 2.0V
      - 2 # ADC3XXX_MICBIAS_2_5V	- Mic bias is set to 2.5V
      - 3 # ADC3XXX_MICBIAS_AVDD	- Mic bias is same as AVDD supply
    default: 0
    description: |
      Mic bias voltage output on MICBIAS2 pin

required:
  - compatible
  - reg
  - clocks

unevaluatedProperties: false

examples:
  - |

    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/sound/tlv320adc3xxx.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;
        tlv320adc3101: audio-codec@18 {
            compatible = "ti,tlv320adc3101";
            reg = <0x18>;
            reset-gpios = <&gpio_pc 3 GPIO_ACTIVE_LOW>;
            clocks = <&audio_mclk>;
            gpio-controller;
            #gpio-cells = <2>;
            ti,dmdin-gpio1 = <ADC3XXX_GPIO_GPO>;
            ti,micbias1-vg = <ADC3XXX_MICBIAS_AVDD>;
        };
    };

    audio_mclk: clock {
        compatible = "fixed-clock";
        #clock-cells = <0>;
        clock-frequency = <24576000>;
    };
...


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,ts3a227e.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TS3A227E
  Autonomous Audio Accessory Detection and Configuration Switch

maintainers:
  - Dylan Reid <dgreid@chromium.org>

description: |
  The TS3A227E detect headsets of 3-ring and 4-ring standards and
  switches automatically to route the microphone correctly. It also
  handles key press detection in accordance with the Android audio
  headset specification v1.0.

properties:
  compatible:
    enum:
      - ti,ts3a227e

  reg:
    const: 0x3b

  interrupts:
    maxItems: 1

  ti,micbias:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Intended MICBIAS voltage (datasheet section 9.6.7).
    enum:
      - 0 # 2.1 V
      - 1 # 2.2 V
      - 2 # 2.3 V
      - 3 # 2.4 V
      - 4 # 2.5 V
      - 5 # 2.6 V
      - 6 # 2.7 V
      - 7 # 2.8 V
    default: 1

  ti,debounce-release-ms:
    description: key release debounce time in ms (datasheet section 9.6.7).
    enum:
      - 0
      - 20
    default: 20

  ti,debounce-press-ms:
    description: key press debounce time in ms (datasheet section 9.6.7).
    enum:
      - 2
      - 40
      - 80
      - 120
    default: 80

  ti,debounce-insertion-ms:
    description: headset insertion debounce time in ms (datasheet section 9.6.5).
    enum:
      - 2
      - 30
      - 60
      - 90
      - 120
      - 150
      - 1000
      - 2000
    default: 90

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;
        codec: audio-controller@3b {
            compatible = "ti,ts3a227e";
            reg = <0x3b>;
            interrupt-parent = <&gpio1>;
            interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
        };
    };

...


code:
# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
# Copyright (C) 2019 Texas Instruments Incorporated
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/tlv320adcx140.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TLV320ADCX140 Quad Channel Analog-to-Digital Converter

maintainers:
  - Andrew Davis <afd@ti.com>

description: |
  The TLV320ADCX140 are multichannel (4-ch analog recording or 8-ch digital
  PDM microphones recording), high-performance audio, analog-to-digital
  converter (ADC) with analog inputs supporting up to 2V RMS. The TLV320ADCX140
  family supports line and  microphone Inputs, and offers a programmable
  microphone bias or supply voltage generation.

  Specifications can be found at:
    https://www.ti.com/lit/ds/symlink/tlv320adc3140.pdf
    https://www.ti.com/lit/ds/symlink/tlv320adc5140.pdf
    https://www.ti.com/lit/ds/symlink/tlv320adc6140.pdf

properties:
  compatible:
    enum:
      - ti,tlv320adc3140
      - ti,tlv320adc5140
      - ti,tlv320adc6140

  reg:
    maxItems: 1
    description: |
      I2C addresss of the device can be one of these 0x4c, 0x4d, 0x4e or 0x4f

  reset-gpios:
    maxItems: 1
    description: |
      GPIO used for hardware reset.

  areg-supply:
    description: |
      Regulator with AVDD at 3.3V.  If not defined then the internal regulator
      is enabled.

  ti,mic-bias-source:
    description: |
      Indicates the source for MIC Bias.
      0 - Mic bias is set to VREF
      1 - Mic bias is set to VREF × 1.096
      6 - Mic bias is set to AVDD
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 6]

  ti,vref-source:
    description: |
      Indicates the source for MIC Bias.
      0 - Set VREF to 2.75V
      1 - Set VREF to 2.5V
      2 - Set VREF to 1.375V
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]

  ti,pdm-edge-select:
    description: |
       Defines the PDMCLK sampling edge configuration for the PDM inputs.  This
       array is defined as <PDMIN1 PDMIN2 PDMIN3 PDMIN4>.

       0 - (default) Odd channel is latched on the negative edge and even
       channel is latched on the positive edge.
       1 - Odd channel is latched on the positive edge and even channel is
       latched on the negative edge.

       PDMIN1 - PDMCLK latching edge used for channel 1 and 2 data
       PDMIN2 - PDMCLK latching edge used for channel 3 and 4 data
       PDMIN3 - PDMCLK latching edge used for channel 5 and 6 data
       PDMIN4 - PDMCLK latching edge used for channel 7 and 8 data

    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 4
    items:
      maximum: 1
    default: [0, 0, 0, 0]

  ti,gpi-config:
    description: |
       Defines the configuration for the general purpose input pins (GPI).
       The array is defined as <GPI1 GPI2 GPI3 GPI4>.

       0 - (default) disabled
       1 - GPIX is configured as a general-purpose input (GPI)
       2 - GPIX is configured as a master clock input (MCLK)
       3 - GPIX is configured as an ASI input for daisy-chain (SDIN)
       4 - GPIX is configured as a PDM data input for channel 1 and channel
            (PDMDIN1)
       5 - GPIX is configured as a PDM data input for channel 3 and channel
            (PDMDIN2)
       6 - GPIX is configured as a PDM data input for channel 5 and channel
            (PDMDIN3)
       7 - GPIX is configured as a PDM data input for channel 7 and channel
            (PDMDIN4)

    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 4
    items:
      maximum: 7
    default: [0, 0, 0, 0]

  ti,gpio-config:
    description: |
       Defines the configuration and output drive for the General Purpose
       Input and Output pin (GPIO1). Its value is a pair, the first value is for
       the configuration type and the second value is for the output drive
       type. The array is defined as <GPIO1_CFG GPIO1_DRV>

       configuration for the GPIO pin can be one of the following:
       0 - disabled
       1 - GPIO1 is configured as a general-purpose output (GPO)
       2 - (default) GPIO1 is configured as a device interrupt output (IRQ)
       3 - GPIO1 is configured as a secondary ASI output (SDOUT2)
       4 - GPIO1 is configured as a PDM clock output (PDMCLK)
       8 - GPIO1 is configured as an input to control when MICBIAS turns on or
           off (MICBIAS_EN)
       9 - GPIO1 is configured as a general-purpose input (GPI)
       10 - GPIO1 is configured as a master clock input (MCLK)
       11 - GPIO1 is configured as an ASI input for daisy-chain (SDIN)
       12 - GPIO1 is configured as a PDM data input for channel 1 and channel 2
            (PDMDIN1)
       13 - GPIO1 is configured as a PDM data input for channel 3 and channel 4
            (PDMDIN2)
       14 - GPIO1 is configured as a PDM data input for channel 5 and channel 6
            (PDMDIN3)
       15 - GPIO1 is configured as a PDM data input for channel 7 and channel 8
            (PDMDIN4)

       output drive type for the GPIO pin can be one of the following:
       0 - Hi-Z output
       1 - Drive active low and active high
       2 - (default) Drive active low and weak high
       3 - Drive active low and Hi-Z
       4 - Drive weak low and active high
       5 - Drive Hi-Z and active high

    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2
    items:
      maximum: 15
    default: [2, 2]

  ti,asi-tx-drive:
    type: boolean
    description: |
      When set the device will set the Tx ASI output to a Hi-Z state for unused
      data cycles. Default is to drive the output low on unused ASI cycles.

patternProperties:
  '^ti,gpo-config-[1-4]$':
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description: |
       Defines the configuration and output driver for the general purpose
       output pins (GPO).  These values are pairs, the first value is for the
       configuration type and the second value is for the output drive type.
       The array is defined as <GPO_CFG GPO_DRV>

       GPO output configuration can be one of the following:

       0 - (default) disabled
       1 - GPOX is configured as a general-purpose output (GPO)
       2 - GPOX is configured as a device interrupt output (IRQ)
       3 - GPOX is configured as a secondary ASI output (SDOUT2)
       4 - GPOX is configured as a PDM clock output (PDMCLK)

       GPO output drive configuration for the GPO pins can be one of the following:

       0d - (default) Hi-Z output
       1d - Drive active low and active high
       2d - Drive active low and weak high
       3d - Drive active low and Hi-Z
       4d - Drive weak low and active high
       5d - Drive Hi-Z and active high

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    i2c0 {
      #address-cells = <1>;
      #size-cells = <0>;
      codec: codec@4c {
        compatible = "ti,tlv320adc5140";
        reg = <0x4c>;
        ti,mic-bias-source = <6>;
        ti,pdm-edge-select = <0 1 0 1>;
        ti,gpi-config = <4 5 6 7>;
        ti,gpio-config = <10 2>;
        ti,gpo-config-1 = <0 0>;
        ti,gpo-config-2 = <0 0>;
        reset-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
      };
    };


code:
Texas Instruments - tlv320aic31xx Codec module

The tlv320aic31xx serial control bus communicates through I2C protocols

Required properties:

- compatible - "string" - One of:
    "ti,tlv320aic310x" - Generic TLV320AIC31xx with mono speaker amp
    "ti,tlv320aic311x" - Generic TLV320AIC31xx with stereo speaker amp
    "ti,tlv320aic3100" - TLV320AIC3100 (mono speaker amp, no MiniDSP)
    "ti,tlv320aic3110" - TLV320AIC3110 (stereo speaker amp, no MiniDSP)
    "ti,tlv320aic3120" - TLV320AIC3120 (mono speaker amp, MiniDSP)
    "ti,tlv320aic3111" - TLV320AIC3111 (stereo speaker amp, MiniDSP)
    "ti,tlv320dac3100" - TLV320DAC3100 (no ADC, mono speaker amp, no MiniDSP)
    "ti,tlv320dac3101" - TLV320DAC3101 (no ADC, stereo speaker amp, no MiniDSP)

- reg - <int> -  I2C slave address
- HPVDD-supply, SPRVDD-supply, SPLVDD-supply, AVDD-supply, IOVDD-supply,
  DVDD-supply : power supplies for the device as covered in
  Documentation/devicetree/bindings/regulator/regulator.txt

Optional properties:

- reset-gpios - GPIO specification for the active low RESET input.
- ai31xx-micbias-vg - MicBias Voltage setting
        1 or MICBIAS_2_0V - MICBIAS output is powered to 2.0V
        2 or MICBIAS_2_5V - MICBIAS output is powered to 2.5V
        3 or MICBIAS_AVDD - MICBIAS output is connected to AVDD
	If this node is not mentioned or if the value is unknown, then
	micbias	is set to 2.0V.
- ai31xx-ocmv - output common-mode voltage setting
        0 - 1.35V,
        1 - 1.5V,
        2 - 1.65V,
        3 - 1.8V

Deprecated properties:

- gpio-reset - gpio pin number used for codec reset

CODEC output pins:
  * HPL
  * HPR
  * SPL, devices with stereo speaker amp
  * SPR, devices with stereo speaker amp
  * SPK, devices with mono speaker amp
  * MICBIAS

CODEC input pins:
  * MIC1LP, devices with ADC
  * MIC1RP, devices with ADC
  * MIC1LM, devices with ADC
  * AIN1, devices without ADC
  * AIN2, devices without ADC

The pins can be used in referring sound node's audio-routing property.

Example:
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/sound/tlv320aic31xx.h>

tlv320aic31xx: tlv320aic31xx@18 {
	compatible = "ti,tlv320aic311x";
	reg = <0x18>;

	ai31xx-micbias-vg = <MICBIAS_OFF>;

	reset-gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;

	HPVDD-supply = <&regulator>;
	SPRVDD-supply = <&regulator>;
	SPLVDD-supply = <&regulator>;
	AVDD-supply = <&regulator>;
	IOVDD-supply = <&regulator>;
	DVDD-supply = <&regulator>;
};


code:
Texas Instruments - tlv320aic32x4 Codec module

The tlv320aic32x4 serial control bus communicates through I2C protocols

Required properties:
 - compatible - "string" - One of:
	"ti,tlv320aic32x4" TLV320AIC3204
	"ti,tlv320aic32x6" TLV320AIC3206, TLV320AIC3256
	"ti,tas2505" TAS2505, TAS2521
 - reg: I2C slave address
 - supply-*: Required supply regulators are:
    "iov" - digital IO power supply
    "ldoin" - LDO power supply
    "dv" - Digital core power supply
    "av" - Analog core power supply
    If you supply ldoin, dv and av are optional. Otherwise they are required
   See regulator/regulator.txt for more information about the detailed binding
   format.

Optional properties:
 - reset-gpios: Reset-GPIO phandle with args as described in gpio/gpio.txt
 - clocks/clock-names: Clock named 'mclk' for the master clock of the codec.
   See clock/clock-bindings.txt for information about the detailed format.
 - aic32x4-gpio-func - <array of 5 int>
	- Types are defined in include/sound/tlv320aic32x4.h

Example:

codec: tlv320aic32x4@18 {
	compatible = "ti,tlv320aic32x4";
	reg = <0x18>;
	clocks = <&clks 201>;
	clock-names = "mclk";
	aic32x4-gpio-func= <
			0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
			0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
			0x04 /* MFP3 AIC32X4_MFP3_GPIO_ENABLED */
			0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
			0x08 /* MFP5 AIC32X4_MFP5_GPIO_INPUT */
		>;
};


code:
Texas Instruments - tlv320aic3x Codec module

The tlv320aic3x serial control bus communicates through both I2C and SPI bus protocols

Required properties:

- compatible - "string" - One of:
    "ti,tlv320aic3x" - Generic TLV320AIC3x device
    "ti,tlv320aic33" - TLV320AIC33
    "ti,tlv320aic3007" - TLV320AIC3007
    "ti,tlv320aic3106" - TLV320AIC3106
    "ti,tlv320aic3104" - TLV320AIC3104

- reg - <int> -  I2C slave address

Optional properties:

- reset-gpios - GPIO specification for the active low RESET input.
- ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality
				    - Not supported on tlv320aic3104
- ai3x-micbias-vg - MicBias Voltage required.
	1 - MICBIAS output is powered to 2.0V,
	2 - MICBIAS output is powered to 2.5V,
	3 - MICBIAS output is connected to AVDD,
	If this node is not mentioned or if the value is incorrect, then MicBias
	is powered down.
- ai3x-ocmv - Output Common-Mode Voltage selection:
	0 - 1.35V,
	1 - 1.5V,
	2 - 1.65V,
	3 - 1.8V
- AVDD-supply, IOVDD-supply, DRVDD-supply, DVDD-supply : power supplies for the
  device as covered in Documentation/devicetree/bindings/regulator/regulator.txt

Deprecated properties:

- gpio-reset - gpio pin number used for codec reset

CODEC output pins:
  * LLOUT
  * RLOUT
  * MONO_LOUT
  * HPLOUT
  * HPROUT
  * HPLCOM
  * HPRCOM

CODEC input pins for TLV320AIC3104:
  * MIC2L
  * MIC2R
  * LINE1L
  * LINE1R

CODEC input pins for other compatible codecs:
  * MIC3L
  * MIC3R
  * LINE1L
  * LINE2L
  * LINE1R
  * LINE2R

The pins can be used in referring sound node's audio-routing property.

I2C example:

#include <dt-bindings/gpio/gpio.h>

tlv320aic3x: tlv320aic3x@1b {
	compatible = "ti,tlv320aic3x";
	reg = <0x1b>;

	reset-gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;

	AVDD-supply = <&regulator>;
	IOVDD-supply = <&regulator>;
	DRVDD-supply = <&regulator>;
	DVDD-supply = <&regulator>;
};

SPI example:

spi0: spi@f0000000 {
	tlv320aic3x: codec@0 {
		compatible = "ti,tlv320aic3x";
		reg = <0>; /* CS number */
		#sound-dai-cells = <0>;
		spi-max-frequency = <1000000>;

		AVDD-supply = <&regulator>;
		IOVDD-supply = <&regulator>;
		DRVDD-supply = <&regulator>;
		DVDD-supply = <&regulator>;
		ai3x-ocmv = <0>;
	};
};


code:
Texas Instruments - tpa6130a2 Codec module

The tpa6130a2 serial control bus communicates through I2C protocols

Required properties:

- compatible - "string" - One of:
    "ti,tpa6130a2" - TPA6130A2
    "ti,tpa6140a2" - TPA6140A2

- reg - <int> -  I2C slave address

- Vdd-supply - <phandle> - power supply regulator

Optional properties:

- power-gpio - gpio pin to power the device

Example:

tpa6130a2: tpa6130a2@60 {
	compatible = "ti,tpa6130a2";
	reg = <0x60>;
	Vdd-supply = <&vmmc2>;
	power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>;
};


code:
TSCS42XX Audio CODEC

Required Properties:

	- compatible :	"tempo,tscs42A1" for analog mic
			"tempo,tscs42A2" for digital mic

	- reg : 	<0x71> for analog mic
			<0x69> for digital mic

	- clock-names:	Must one of  the following "mclk1", "xtal", "mclk2"

	- clocks:	phandle of the clock that provides the codec sysclk

Example:

wookie: codec@69 {
	compatible = "tempo,tscs42A2";
	reg = <0x69>;
	clock-names = "xtal";
	clocks = <&audio_xtal>;
};


code:
TSCS454 Audio CODEC

Required Properties:

	- compatible :	"tempo,tscs454"

	- reg : 	<0x69>

	- clock-names:	Must one of  the following "xtal", "mclk1", "mclk2"

	- clocks:	phandle of the clock that provides the codec sysclk

	Note: If clock is not provided then bit clock is assumed

Example:

redwood: codec@69 {
	#sound-dai-cells = <1>;
	compatible = "tempo,tscs454";
	reg = <0x69>;
	clock-names = "mclk1";
	clocks = <&audio_mclk>;
};


code:
UDA1334 audio CODEC

This device uses simple GPIO pins for controlling codec settings.

Required properties:

  - compatible : "nxp,uda1334"
  - nxp,mute-gpios: a GPIO spec for the MUTE pin.
  - nxp,deemph-gpios: a GPIO spec for the De-emphasis pin

Example:

uda1334: audio-codec {
	compatible = "nxp,uda1334";
	nxp,mute-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
	nxp,deemph-gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
};


code:
* MOP500 Audio Machine Driver

This node is responsible for linking together all ux500 Audio Driver components.

Required properties:
 - compatible              : "stericsson,snd-soc-mop500"

Non-standard properties:
 - stericsson,cpu-dai      : Phandle to the CPU-side DAI
 - stericsson,audio-codec  : Phandle to the Audio CODEC
 - stericsson,card-name    : Over-ride default card name

Example:

	sound {
		compatible = "stericsson,snd-soc-mop500";

		stericsson,cpu-dai = <&msp1 &msp3>;
		stericsson,audio-codec = <&codec>;
	};

	msp1: msp@80124000 {
		compatible = "stericsson,ux500-msp-i2s";
		reg = <0x80124000 0x1000>;
		interrupts = <0 62 0x4>;
		v-ape-supply = <&db8500_vape_reg>;
	};

	msp3: msp@80125000 {
		compatible = "stericsson,ux500-msp-i2s";
		reg = <0x80125000 0x1000>;
		interrupts = <0 62 0x4>;
		v-ape-supply = <&db8500_vape_reg>;
	};

	codec: ab8500-codec {
		compatible = "stericsson,ab8500-codec";
		stericsson,earpeice-cmv = <950>; /* Units in mV. */
	};


code:
* ux500 MSP (CPU-side Digital Audio Interface)

Required properties:
 - compatible       :"stericsson,ux500-msp-i2s"
 - reg              : Physical base address and length of the device's registers.

Optional properties:
 - interrupts       : The interrupt output from the device.
 - <name>-supply    : Phandle to the regulator <name> supply

Example:

	sound {
		compatible = "stericsson,snd-soc-mop500";

		stericsson,platform-pcm-dma = <&pcm>;
		stericsson,cpu-dai = <&msp1 &msp3>;
		stericsson,audio-codec = <&codec>;
	};

	pcm: ux500-pcm {
		compatible = "stericsson,ux500-pcm";
	};

	msp1: msp@80124000 {
		compatible = "stericsson,ux500-msp-i2s";
		reg = <0x80124000 0x1000>;
		interrupts = <0 62 0x4>;
		v-ape-supply = <&db8500_vape_reg>;
	};

	msp3: msp@80125000 {
		compatible = "stericsson,ux500-msp-i2s";
		reg = <0x80125000 0x1000>;
		interrupts = <0 62 0x4>;
		v-ape-supply = <&db8500_vape_reg>;
	};

	codec: ab8500-codec {
		compatible = "stericsson,ab8500-codec";
		stericsson,earpeice-cmv = <950>; /* Units in mV. */
	};


code:
Widgets:

This mainly specifies audio off-codec DAPM widgets.

Each entry is a pair of strings in DT:

	"template-wname", "user-supplied-wname"

The "template-wname" being the template widget name and currently includes:
"Microphone", "Line", "Headphone" and "Speaker".

The "user-supplied-wname" being the user specified widget name.

For instance:
	simple-audio-widgets =
		"Microphone", "Microphone Jack",
		"Line", "Line In Jack",
		"Line", "Line Out Jack",
		"Headphone", "Headphone Jack",
		"Speaker", "Speaker External";


code:
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,arizona.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic/Wolfson Microelectronics Arizona class audio SoCs

maintainers:
  - patches@opensource.cirrus.com

description: |
  These devices are audio SoCs with extensive digital capabilities and a range
  of analogue I/O.

  This document lists sound specific bindings, see the primary binding
  document ../mfd/arizona.yaml

allOf:
  - $ref: dai-common.yaml#

properties:
  '#sound-dai-cells':
    description:
      The first cell indicating the audio interface.
    const: 1

  wlf,inmode:
    description:
      A list of INn_MODE register values, where n is the number of input
      signals. Valid values are 0 (Differential), 1 (Single-ended) and
      2 (Digital Microphone). If absent, INn_MODE registers set to 0 by
      default.  If present, values must be specified less than or equal
      to the number of input signals. If values less than the number of
      input signals, elements that have not been specified are set to 0 by
      default. Entries are <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280,
      wm8997) and <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814)
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 4
    items:
      minimum: 0
      maximum: 2
      default: 0

  wlf,out-mono:
    description:
      A list of boolean values indicating whether each output is mono
      or stereo. Position within the list indicates the output affected
      (eg. First entry in the list corresponds to output 1). A non-zero
      value indicates a mono output. If present, the number of values
      should be less than or equal to the number of outputs, if less values
      are supplied the additional outputs will be treated as stereo.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 6
    items:
      minimum: 0
      maximum: 1
      default: 0

  wlf,dmic-ref:
    description:
      DMIC reference voltage source for each input, can be selected from
      either MICVDD or one of the MICBIAS's, defines (ARIZONA_DMIC_xxxx)
      are provided in dt-bindings/mfd/arizona.h. If present, the number
      of values should be less than or equal to the number of inputs,
      unspecified inputs will use the chip default.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 4
    items:
      minimum: 0
      maximum: 3
      default: 0

  wlf,max-channels-clocked:
    description:
      The maximum number of channels to be clocked on each AIF, useful for
      I2S systems with multiple data lines being mastered.  Specify one
      cell for each AIF to be configured, specify zero for AIFs that should
      be handled normally.  If present, number of cells must be less than
      or equal to the number of AIFs. If less than the number of AIFs, for
      cells that have not been specified the corresponding AIFs will be
      treated as default setting.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 3
    items:
      default: 0

  wlf,spk-fmt:
    description:
      PDM speaker data format, must contain 2 cells (OUT5 and OUT6).  See
      the datasheet for values.  The second cell is ignored for codecs that
      do not have OUT6 (wm5102, wm8997, wm8998, wm1814)
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2

  wlf,spk-mute:
    description:
      PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6).  See
      the datasheet for values.  The second cell is ignored for codecs that
      do not have OUT6 (wm5102, wm8997, wm8998, wm1814)
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2

  wlf,out-volume-limit:
    description:
      The volume limit value that should be applied to each output
      channel. See the datasheet for exact values. Channels are specified
      in the order OUT1L, OUT1R, OUT2L, OUT2R, etc.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 12

additionalProperties: true


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,wm8731.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Wolfson Microelectromics WM8731 audio CODEC

maintainers:
  - patches@opensource.cirrus.com

description: |
  Wolfson Microelectronics WM8731 audio CODEC

  Pins on the device (for linking into audio routes):
    * LOUT: Left Channel Line Output
    * ROUT: Right Channel Line Output
    * LHPOUT: Left Channel Headphone Output
    * RHPOUT: Right Channel Headphone Output
    * LLINEIN: Left Channel Line Input
    * RLINEIN: Right Channel Line Input
    * MICIN: Microphone Input

properties:
  compatible:
    enum:
      - wlf,wm8731

  reg:
    maxItems: 1

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

  clocks:
    description: Clock provider for MCLK pin.
    maxItems: 1

  clock-names:
    items:
      - const: mclk

  AVDD-supply:
    description: Analog power supply regulator on the AVDD pin.

  HPVDD-supply:
    description: Headphone power supply regulator on the HPVDD pin.

  DBVDD-supply:
    description: Digital buffer supply regulator for the DBVDD pin.

  DCVDD-supply:
    description: Digital core supply regulator for the DCVDD pin.

required:
  - reg
  - compatible
  - AVDD-supply
  - HPVDD-supply
  - DBVDD-supply
  - DCVDD-supply

allOf:
  - $ref: dai-common.yaml#
  - $ref: /schemas/spi/spi-peripheral-props.yaml#

unevaluatedProperties: false

examples:
  - |
    spi {
        #address-cells = <1>;
        #size-cells = <0>;
        wm8731_i2c: codec@0 {
            compatible = "wlf,wm8731";
            reg = <0>;
            spi-max-frequency = <12500000>;

            AVDD-supply = <&avdd_reg>;
            HPVDD-supply = <&hpvdd_reg>;
            DCVDD-supply = <&dcvdd_reg>;
            DBVDD-supply = <&dbvdd_reg>;
        };
    };
  - |

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;
        wm8731_spi: codec@1b {
            compatible = "wlf,wm8731";
            reg = <0x1b>;

            AVDD-supply = <&avdd_reg>;
            HPVDD-supply = <&hpvdd_reg>;
            DCVDD-supply = <&dcvdd_reg>;
            DBVDD-supply = <&dbvdd_reg>;
        };
    };


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: "http://devicetree.org/schemas/sound/wlf,wm8903.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: WM8903 audio codec

description: |
  This device supports I2C only.
  Pins on the device (for linking into audio routes):
      * IN1L
      * IN1R
      * IN2L
      * IN2R
      * IN3L
      * IN3R
      * DMICDAT
      * HPOUTL
      * HPOUTR
      * LINEOUTL
      * LINEOUTR
      * LOP
      * LON
      * ROP
      * RON
      * MICBIAS

maintainers:
  - patches@opensource.cirrus.com

properties:
  compatible:
    const: wlf,wm8903

  reg:
    maxItems: 1

  gpio-controller: true
  '#gpio-cells':
    const: 2

  interrupts:
    maxItems: 1

  micdet-cfg:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 0
    description: Default register value for R6 (Mic Bias).

  micdet-delay:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 100
    description: The debounce delay for microphone detection in mS.

  gpio-cfg:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    description: |
      minItems: 5
      maxItems: 5
      A list of GPIO configuration register values.
      If absent, no configuration of these registers is performed.
      If any entry has the value 0xffffffff, that GPIO's
      configuration will not be modified.

  AVDD-supply:
    description: Analog power supply regulator on the AVDD pin.

  CPVDD-supply:
    description: Charge pump supply regulator on the CPVDD pin.

  DBVDD-supply:
    description: Digital buffer supply regulator for the DBVDD pin.

  DCVDD-supply:
    description: Digital core supply regulator for the DCVDD pin.

required:
  - compatible
  - reg
  - gpio-controller
  - '#gpio-cells'

additionalProperties: false

examples:
  - |
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;

      wm8903: codec@1a {
        compatible = "wlf,wm8903";
        reg = <0x1a>;
        interrupts = <347>;

        AVDD-supply = <&fooreg_a>;
        CPVDD-supply = <&fooreg_b>;
        DBVDD-supply = <&fooreg_c>;
        DCVDD-supply = <&fooreg_d>;

        gpio-controller;
        #gpio-cells = <2>;

        micdet-cfg = <0>;
        micdet-delay = <100>;
        gpio-cfg = <
          0x0600 /* DMIC_LR, output */
          0x0680 /* DMIC_DAT, input */
          0x0000 /* GPIO, output, low */
          0x0200 /* Interrupt, output */
          0x01a0 /* BCLK, input, active high */
        >;
      };
    };


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,wm8940.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Wolfson WM8940 Codec

maintainers:
  - patches@opensource.cirrus.com

allOf:
  - $ref: dai-common.yaml#

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

  compatible:
    const: wlf,wm8940

  reg:
    maxItems: 1

  spi-max-frequency:
    maximum: 526000

required:
  - '#sound-dai-cells'
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        codec@0 {
            #sound-dai-cells = <0>;
            compatible = "wlf,wm8940";
            reg = <0>;
            spi-max-frequency = <500000>;
        };
    };
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        codec@1a {
            #sound-dai-cells = <0>;
            compatible = "wlf,wm8940";
            reg = <0x1a>;
        };
    };

...


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,wm8961.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Wolfson WM8961 Ultra-Low Power Stereo CODEC

maintainers:
  - patches@opensource.cirrus.com

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    const: wlf,wm8961

  reg:
    maxItems: 1

  '#sound-dai-cells':
    const: 0

required:
  - compatible
  - reg
  - '#sound-dai-cells'

unevaluatedProperties: false

examples:
  - |
    i2c {
          #address-cells = <1>;
          #size-cells = <0>;

          wm8961: codec@4a {
                  compatible = "wlf,wm8961";
                  reg = <0x4a>;
                  #sound-dai-cells = <0>;
          };
    };


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,wm8962.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Wolfson WM8962 Ultra-Low Power Stereo CODEC

maintainers:
  - patches@opensource.cirrus.com

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    const: wlf,wm8962

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  interrupts:
    maxItems: 1

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

  AVDD-supply:
    description: Analogue supply.

  CPVDD-supply:
    description: Charge pump power supply.

  DBVDD-supply:
    description: Digital Buffer Supply.

  DCVDD-supply:
    description: Digital Core Supply.

  MICVDD-supply:
    description: Microphone bias amp supply.

  PLLVDD-supply:
    description: PLL Supply

  SPKVDD1-supply:
    description: Supply for left speaker drivers.

  SPKVDD2-supply:
    description: Supply for right speaker drivers.

  spk-mono:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      If present, the SPK_MONO bit of R51 (Class D Control 2) gets set,
      indicating that the speaker is in mono mode.

  mic-cfg:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Default register value for R48 (Additional Control 4).
      If absent, the default should be the register default.

  gpio-cfg:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 6
    maxItems: 6
    description:
      A list of GPIO configuration register values.  If absent, no
      configuration of these registers is performed.  Note that only values
      within [0x0, 0xffff] are valid.  Any other value is regarded as setting
      the GPIO register to its reset value 0x0.

  port:
    $ref: audio-graph-port.yaml#
    unevaluatedProperties: false

required:
  - compatible
  - reg
  - AVDD-supply
  - CPVDD-supply
  - DBVDD-supply
  - DCVDD-supply
  - MICVDD-supply
  - PLLVDD-supply
  - SPKVDD1-supply
  - SPKVDD2-supply

unevaluatedProperties: false

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

    i2c {
          #address-cells = <1>;
          #size-cells = <0>;

          wm8962: codec@1a {
                  compatible = "wlf,wm8962";
                  reg = <0x1a>;
                  clocks = <&clks IMX6QDL_CLK_CKO>;
                  DCVDD-supply = <&reg_audio>;
                  DBVDD-supply = <&reg_audio>;
                  AVDD-supply = <&reg_audio>;
                  CPVDD-supply = <&reg_audio>;
                  MICVDD-supply = <&reg_audio>;
                  PLLVDD-supply = <&reg_audio>;
                  SPKVDD1-supply = <&reg_audio>;
                  SPKVDD2-supply = <&reg_audio>;
                  gpio-cfg = <
                          0x0000 /* 0:Default */
                          0x0000 /* 1:Default */
                          0x0013 /* 2:FN_DMICCLK */
                          0x0000 /* 3:Default */
                          0x8014 /* 4:FN_DMICCDAT */
                          0x0000 /* 5:Default */
                  >;
          };
    };


code:
WM8974 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:
  - compatible: "wlf,wm8974"
  - reg: the I2C address or SPI chip select number of the device

Examples:

codec: wm8974@1a {
	compatible = "wlf,wm8974";
	reg = <0x1a>;
};


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,wm8978.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Wolfson WM8978 Codec

maintainers:
  - patches@opensource.cirrus.com

allOf:
  - $ref: dai-common.yaml#

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

  compatible:
    const: wlf,wm8978

  reg:
    maxItems: 1

  spi-max-frequency:
    maximum: 526000

required:
  - '#sound-dai-cells'
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        codec@0 {
            #sound-dai-cells = <0>;
            compatible = "wlf,wm8978";
            reg = <0>;
            spi-max-frequency = <500000>;
        };
    };

  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        codec@1a {
            #sound-dai-cells = <0>;
            compatible = "wlf,wm8978";
            reg = <0x1a>;
        };
    };

...


code:
WM8510 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8510"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Example:

wm8510: codec@1a {
	compatible = "wlf,wm8510";
	reg = <0x1a>;
};


code:
WM8523 audio CODEC

This device supports I2C only.

Required properties:

  - compatible : "wlf,wm8523"

  - reg : the I2C address of the device.

Example:

wm8523: codec@1a {
	compatible = "wlf,wm8523";
	reg = <0x1a>;
};


code:
WM8524 audio CODEC

This device does not use I2C or SPI but a simple Hardware Control Interface.

Required properties:

  - compatible : "wlf,wm8524"

  - wlf,mute-gpios: a GPIO spec for the MUTE pin.

Example:

wm8524: codec {
	compatible = "wlf,wm8524";
	wlf,mute-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
};


code:
WM8580 and WM8581 audio CODEC

This device supports I2C only.

Required properties:

  - compatible : "wlf,wm8580", "wlf,wm8581"

  - reg : the I2C address of the device.

Example:

wm8580: codec@1a {
	compatible = "wlf,wm8580";
	reg = <0x1a>;
};


code:
WM8711 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8711"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Example:

wm8711: codec@1a {
	compatible = "wlf,wm8711";
	reg = <0x1a>;
};


code:
WM8728 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8728"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Example:

wm8728: codec@1a {
	compatible = "wlf,wm8728";
	reg = <0x1a>;
};


code:
WM8737 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8737"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Example:

wm8737: codec@1a {
	compatible = "wlf,wm8737";
	reg = <0x1a>;
};


code:
WM8741 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8741"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Optional properties:

  - diff-mode: Differential output mode configuration. Default value for field
    DIFF in register R8 (MODE_CONTROL_2). If absent, the default is 0, shall be:
    0 = stereo
    1 = mono left
    2 = stereo reversed
    3 = mono right

Example:

wm8741: codec@1a {
	compatible = "wlf,wm8741";
	reg = <0x1a>;

	diff-mode = <3>;
};


code:
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wm8750.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: WM8750 and WM8987 audio CODECs

description: |
  These devices support both I2C and SPI (configured with pin strapping
  on the board).

maintainers:
  - Mark Brown <broonie@kernel.org>

properties:
  compatible:
    enum:
      - wlf,wm8750
      - wlf,wm8987

  reg:
    description:
      The I2C address of the device for I2C, the chip select number for SPI
    maxItems: 1

additionalProperties: false

required:
  - reg

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        codec@1a {
            compatible = "wlf,wm8750";
            reg = <0x1a>;
        };
    };


code:
WM8753 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8753"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Pins on the device (for linking into audio routes):

  * LOUT1
  * LOUT2
  * ROUT1
  * ROUT2
  * MONO1
  * MONO2
  * OUT3
  * OUT4
  * LINE1
  * LINE2
  * RXP
  * RXN
  * ACIN
  * ACOP
  * MIC1N
  * MIC1
  * MIC2N
  * MIC2
  * Mic Bias

Example:

wm8753: codec@1a {
	compatible = "wlf,wm8753";
	reg = <0x1a>;
};


code:
WM8770 audio CODEC

This device supports SPI.

Required properties:

  - compatible : "wlf,wm8770"

  - reg : the chip select number.

Example:

wm8770: codec@1 {
	compatible = "wlf,wm8770";
	reg = <1>;
};


code:
WM8776 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8776"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

Example:

wm8776: codec@1a {
	compatible = "wlf,wm8776";
	reg = <0x1a>;
};


code:
WM8782 stereo ADC

This device does not have any control interface or reset pins.

Required properties:

 - compatible  : "wlf,wm8782"
 - Vdda-supply : phandle to a regulator for the analog power supply (2.7V - 5.5V)
 - Vdd-supply  : phandle to a regulator for the digital power supply (2.7V - 3.6V)

Example:

wm8782: stereo-adc {
	compatible = "wlf,wm8782";
	Vdda-supply = <&vdda_supply>;
	Vdd-supply = <&vdd_supply>;
};


code:
WM8804 audio CODEC

This device supports both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : "wlf,wm8804"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

  - PVDD-supply, DVDD-supply : Power supplies for the device, as covered
    in Documentation/devicetree/bindings/regulator/regulator.txt

Optional properties:

  - wlf,reset-gpio: A GPIO specifier for the GPIO controlling the reset pin

Example:

wm8804: codec@1a {
	compatible = "wlf,wm8804";
	reg = <0x1a>;
};


code:
WM8904 audio CODEC

This device supports I2C only.

Required properties:
  - compatible: "wlf,wm8904" or "wlf,wm8912"
  - reg: the I2C address of the device.
  - clock-names: "mclk"
  - clocks: reference to
    <Documentation/devicetree/bindings/clock/clock-bindings.txt>

Pins on the device (for linking into audio routes):

  * IN1L
  * IN1R
  * IN2L
  * IN2R
  * IN3L
  * IN3R
  * HPOUTL
  * HPOUTR
  * LINEOUTL
  * LINEOUTR
  * MICBIAS

Examples:

codec: wm8904@1a {
	compatible = "wlf,wm8904";
	reg = <0x1a>;
	clocks = <&pck0>;
	clock-names = "mclk";
};


code:
WM8960 audio CODEC

This device supports I2C only.

Required properties:

  - compatible : "wlf,wm8960"

  - reg : the I2C address of the device.

Optional properties:
  - wlf,shared-lrclk: This is a boolean property. If present, the LRCM bit of
	R24 (Additional control 2) gets set, indicating that ADCLRC and DACLRC pins
	will be disabled only when ADC (Left and Right) and DAC (Left and Right)
	are disabled.
	When wm8960 works on synchronize mode and DACLRC pin is used to supply
	frame clock, it will no frame clock for captrue unless enable DAC to enable
	DACLRC pin. If shared-lrclk is present, no need to enable DAC for captrue.

  - wlf,capless: This is a boolean property. If present, OUT3 pin will be
	enabled and disabled together with HP_L and HP_R pins in response to jack
	detect events.

  - wlf,hp-cfg: A list of headphone jack detect configuration register values.
		The list must be 3 entries long.
		hp-cfg[0]: HPSEL[1:0] of R48 (Additional Control 4).
		hp-cfg[1]: {HPSWEN:HPSWPOL} of R24 (Additional Control 2).
		hp-cfg[2]: {TOCLKSEL:TOEN} of R23 (Additional Control 1).

  - wlf,gpio-cfg: A list of GPIO configuration register values.
		  The list must be 2 entries long.
		  gpio-cfg[0]: ALRCGPIO of R9 (Audio interface)
		  gpio-cfg[1]: {GPIOPOL:GPIOSEL[2:0]} of R48 (Additional Control 4).

Example:

wm8960: codec@1a {
	compatible = "wlf,wm8960";
	reg = <0x1a>;

	wlf,shared-lrclk;
};


code:
WM1811/WM8994/WM8958 audio CODEC

These devices support both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : One of "wlf,wm1811", "wlf,wm8994" or "wlf,wm8958".

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

  - gpio-controller : Indicates this device is a GPIO controller.
  - #gpio-cells : Must be 2. The first cell is the pin number and the
    second cell is used to specify optional parameters (currently unused).

  - power supplies for the device, as covered in
    Documentation/devicetree/bindings/regulator/regulator.txt, depending
    on compatible:
    - for wlf,wm1811 and wlf,wm8958:
      AVDD1-supply, AVDD2-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply,
      DCVDD-supply, CPVDD-supply, SPKVDD1-supply, SPKVDD2-supply
    - for wlf,wm8994:
      AVDD1-supply, AVDD2-supply, DBVDD-supply, DCVDD-supply, CPVDD-supply,
      SPKVDD1-supply, SPKVDD2-supply

Optional properties:

  - interrupts : The interrupt line the IRQ signal for the device is
    connected to.  This is optional, if it is not connected then none
    of the interrupt related properties should be specified.
  - interrupt-controller : These devices contain interrupt controllers
    and may provide interrupt services to other devices if they have an
    interrupt line connected.
  - #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
    The first cell is the IRQ number.
    The second cell is the flags, encoded as the trigger masks from
    Documentation/devicetree/bindings/interrupt-controller/interrupts.txt

  - clocks : A list of up to two phandle and clock specifier pairs
  - clock-names : A list of clock names sorted in the same order as clocks.
                  Valid clock names are "MCLK1" and "MCLK2".

  - wlf,gpio-cfg : A list of GPIO configuration register values. If absent,
    no configuration of these registers is performed. If any value is
    over 0xffff then the register will be left as default. If present 11
    values must be supplied.

  - wlf,micbias-cfg : Two MICBIAS register values for WM1811 or
    WM8958.  If absent the register defaults will be used.

  - wlf,ldo1ena : GPIO specifier for control of LDO1ENA input to device.
  - wlf,ldo2ena : GPIO specifier for control of LDO2ENA input to device.

  - wlf,lineout1-se : If present LINEOUT1 is in single ended mode.
  - wlf,lineout2-se : If present LINEOUT2 is in single ended mode.

  - wlf,lineout1-feedback : If present LINEOUT1 has common mode feedback
    connected.
  - wlf,lineout2-feedback : If present LINEOUT2 has common mode feedback
    connected.

  - wlf,ldoena-always-driven : If present LDOENA is always driven.

  - wlf,spkmode-pu : If present enable the internal pull-up resistor on
    the SPKMODE pin.

  - wlf,csnaddr-pd : If present enable the internal pull-down resistor on
    the CS/ADDR pin.

Pins on the device (for linking into audio routes):

  * IN1LN
  * IN1LP
  * IN2LN
  * IN2LP:VXRN
  * IN1RN
  * IN1RP
  * IN2RN
  * IN2RP:VXRP
  * SPKOUTLP
  * SPKOUTLN
  * SPKOUTRP
  * SPKOUTRN
  * HPOUT1L
  * HPOUT1R
  * HPOUT2P
  * HPOUT2N
  * LINEOUT1P
  * LINEOUT1N
  * LINEOUT2P
  * LINEOUT2N

Example:

wm8994: codec@1a {
	compatible = "wlf,wm8994";
	reg = <0x1a>;

	gpio-controller;
	#gpio-cells = <2>;

	lineout1-se;

	AVDD1-supply = <&regulator>;
	AVDD2-supply = <&regulator>;
	CPVDD-supply = <&regulator>;
	DBVDD-supply = <&regulator>;
	DCVDD-supply = <&regulator>;
	SPKVDD1-supply = <&regulator>;
	SPKVDD2-supply = <&regulator>;
};


code:
Device-Tree bindings for Xilinx PL audio formatter

The IP core supports DMA, data formatting(AES<->PCM conversion)
of audio samples.

Required properties:
 - compatible: "xlnx,audio-formatter-1.0"
 - interrupt-names: Names specified to list of interrupts in same
		    order mentioned under "interrupts".
		    List of supported interrupt names are:
		    "irq_mm2s" : interrupt from MM2S block
		    "irq_s2mm" : interrupt from S2MM block
 - interrupts-parent: Phandle for interrupt controller.
 - interrupts: List of Interrupt numbers.
 - reg: Base address and size of the IP core instance.
 - clock-names: List of input clocks.
   Required elements: "s_axi_lite_aclk", "aud_mclk"
 - clocks: Input clock specifier. Refer to common clock bindings.

Example:
	audio_ss_0_audio_formatter_0: audio_formatter@80010000 {
		compatible = "xlnx,audio-formatter-1.0";
		interrupt-names = "irq_mm2s", "irq_s2mm";
		interrupt-parent = <&gic>;
		interrupts = <0 104 4>, <0 105 4>;
		reg = <0x0 0x80010000 0x0 0x1000>;
		clock-names = "s_axi_lite_aclk", "aud_mclk";
		clocks = <&clk 71>, <&clk_wiz_1 0>;
	};


code:
Device-Tree bindings for Xilinx I2S PL block

The IP supports I2S based playback/capture audio

Required property:
 - compatible: "xlnx,i2s-transmitter-1.0" for playback and
	       "xlnx,i2s-receiver-1.0" for capture

Required property common to both I2S playback and capture:
 - reg: Base address and size of the IP core instance.
 - xlnx,dwidth: sample data width. Can be any of 16, 24.
 - xlnx,num-channels: Number of I2S streams. Can be any of 1, 2, 3, 4.
		      supported channels = 2 * xlnx,num-channels

Example:

	i2s_receiver@a0080000 {
		compatible = "xlnx,i2s-receiver-1.0";
		reg = <0x0 0xa0080000 0x0 0x10000>;
		xlnx,dwidth = <0x18>;
		xlnx,num-channels = <1>;
	};
	i2s_transmitter@a0090000 {
		compatible = "xlnx,i2s-transmitter-1.0";
		reg = <0x0 0xa0090000 0x0 0x10000>;
		xlnx,dwidth = <0x18>;
		xlnx,num-channels = <1>;
	};


code:
Device-Tree bindings for Xilinx SPDIF IP

The IP supports playback and capture of SPDIF audio

Required properties:
 - compatible: "xlnx,spdif-2.0"
 - clock-names: List of input clocks.
   Required elements: "s_axi_aclk", "aud_clk_i"
 - clocks: Input clock specifier. Refer to common clock bindings.
 - reg: Base address and address length of the IP core instance.
 - interrupts-parent: Phandle for interrupt controller.
 - interrupts: List of Interrupt numbers.
 - xlnx,spdif-mode: 0 :- receiver mode
		    1 :- transmitter mode
 - xlnx,aud_clk_i: input audio clock value.

Example:
	spdif_0: spdif@80010000 {
		clock-names = "aud_clk_i", "s_axi_aclk";
		clocks = <&misc_clk_0>, <&clk 71>;
		compatible = "xlnx,spdif-2.0";
		interrupt-names = "spdif_interrupt";
		interrupt-parent = <&gic>;
		interrupts = <0 91 4>;
		reg = <0x0 0x80010000 0x0 0x10000>;
		xlnx,spdif-mode = <1>;
		xlnx,aud_clk_i = <49152913>;
	};


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/zl38060.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ZL38060 Connected Home Audio Processor from Microsemi.

description: |
  The ZL38060 is a "Connected Home Audio Processor" from Microsemi,
  which consists of a Digital Signal Processor (DSP), several Digital
  Audio Interfaces (DAIs), analog outputs, and a block of 14 GPIOs.

maintainers:
  - Jaroslav Kysela <perex@perex.cz>
  - Takashi Iwai <tiwai@suse.com>

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    const: mscc,zl38060

  reg:
    description:
      SPI device address.
    maxItems: 1

  spi-max-frequency:
    maximum: 24000000

  reset-gpios:
    description:
      A GPIO line handling reset of the chip. As the line is active low,
      it should be marked GPIO_ACTIVE_LOW (see ../gpio/gpio.txt)
    maxItems: 1

  '#gpio-cells':
    const: 2

  gpio-controller: true

  '#sound-dai-cells':
    const: 0

required:
  - compatible
  - reg
  - '#gpio-cells'
  - gpio-controller
  - '#sound-dai-cells'

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    spi0 {
        #address-cells = <1>;
        #size-cells = <0>;

        codec: zl38060@0 {
            gpio-controller;
            #gpio-cells = <2>;
            #sound-dai-cells = <0>;
            compatible = "mscc,zl38060";
            reg = <0>;
            spi-max-frequency = <12000000>;
            reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
        };
    };


code:
Qualcomm SoundWire Controller Bindings

This binding describes the Qualcomm SoundWire Controller along with its
board specific bus parameters.

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,soundwire-v<MAJOR>.<MINOR>.<STEP>",
		    Example:
			"qcom,soundwire-v1.3.0"
			"qcom,soundwire-v1.5.0"
			"qcom,soundwire-v1.5.1"
			"qcom,soundwire-v1.6.0"
- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: the base address and size of SoundWire controller
		    address space.

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the SoundWire Controller core and optional
		    wake IRQ

- interrupt-names:
	Usage: Optional
	Value type: boolean
	Value type: <stringlist>
	Definition: should be "core" for core and "wakeup" for wake interrupt.

- wakeup-source:
	Usage: Optional
	Value type: boolean
	Definition: should specify if SoundWire Controller is wake up capable.

- clock-names:
	Usage: required
	Value type: <stringlist>
	Definition: should be "iface" for SoundWire Controller interface clock

- clocks:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify the SoundWire Controller interface clock

- #sound-dai-cells:
	Usage: required
	Value type: <u32>
	Definition: must be 1 for digital audio interfaces on the controller.

- qcom,dout-ports:
	Usage: required
	Value type: <u32>
	Definition: must be count of data out ports

- qcom,din-ports:
	Usage: required
	Value type: <u32>
	Definition: must be count of data in ports

- qcom,ports-offset1:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify payload transport window offset1 of each
		    data port. Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-offset2:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should specify payload transport window offset2 of each
		    data port. Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-sinterval-low:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: should be sample interval low of each data port.
		    Out ports followed by In ports. Used for Sample Interval
		    calculation.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-word-length:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be size of payload channel sample.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-block-pack-mode:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be 0 or 1 to indicate the block packing mode.
		    0 to indicate Blocks are per Channel
		    1 to indicate Blocks are per Port.
		    Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-block-group-count:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be in range 1 to 4 to indicate how many sample
		    intervals are combined into a payload.
		    Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-lane-control:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be in range 0 to 7 to identify which	data lane
		    the data port uses.
		    Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-hstart:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be number identifying lowerst numbered coloum in
		    SoundWire Frame, i.e. left edge of the Transport sub-frame
		    for each port. Values between 0 and 15 are valid.
		    Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,ports-hstop:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be number identifying highest numbered coloum in
		    SoundWire Frame, i.e. the right edge of the Transport
		    sub-frame for each port. Values between 0 and 15 are valid.
		    Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- qcom,dports-type:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: should be one of the following types
		    0 for reduced port
		    1 for simple ports
		    2 for full port
		    Out ports followed by In ports.
		    Value of 0xFF indicates that this option is not implemented
		    or applicable for the respective data port.
		    More info in MIPI Alliance SoundWire 1.0 Specifications.

- reset:
	Usage: optional
	Value type: <prop-encoded-array>
	Definition: Should specify the SoundWire audio CSR reset controller interface,
		    which is required for SoundWire version 1.6.0 and above.

- reset-names:
	Usage: optional
	Value type: <stringlist>
	Definition: should be "swr_audio_cgcr" for SoundWire audio CSR reset
		    controller interface.

Note:
	More Information on detail of encoding of these fields can be
found in MIPI Alliance SoundWire 1.0 Specifications.

= SoundWire devices
Each subnode of the bus represents SoundWire device attached to it.
The properties of these nodes are defined by the individual bindings.

= EXAMPLE
The following example represents a SoundWire controller on DB845c board
which has controller integrated inside WCD934x codec on SDM845 SoC.

soundwire: soundwire@c85 {
	compatible = "qcom,soundwire-v1.3.0";
	reg = <0xc85 0x20>;
	interrupts = <20 IRQ_TYPE_EDGE_RISING>;
	clocks = <&wcc>;
	clock-names = "iface";
	resets = <&lpass_audiocc LPASS_AUDIO_SWR_TX_CGCR>;
	reset-names = "swr_audio_cgcr";
	#sound-dai-cells = <1>;
	qcom,dports-type = <0>;
	qcom,dout-ports	= <6>;
	qcom,din-ports	= <2>;
	qcom,ports-sinterval-low = /bits/ 8  <0x07 0x1F 0x3F 0x7 0x1F 0x3F 0x0F 0x0F>;
	qcom,ports-offset1 = /bits/ 8 <0x01 0x02 0x0C 0x6 0x12 0x0D 0x07 0x0A >;
	qcom,ports-offset2 = /bits/ 8 <0x00 0x00 0x1F 0x00 0x00 0x1F 0x00 0x00>;

	/* Left Speaker */
	left{
		....
	};

	/* Right Speaker */
	right{
		....
	};
};


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soundwire/soundwire-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SoundWire Controller Generic Binding

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
  - Vinod Koul <vkoul@kernel.org>

description: |
  SoundWire busses can be described with a node for the SoundWire controller
  device and a set of child nodes for each SoundWire slave on the bus.

properties:
  $nodename:
    pattern: "^soundwire(@.*)?$"

  "#address-cells":
    const: 2

  "#size-cells":
    const: 0

patternProperties:
  "^.*@[0-9a-f],[0-9a-f]$":
    type: object

    properties:
      compatible:
        pattern: "^sdw[0-9a-f]{1}[0-9a-f]{4}[0-9a-f]{4}[0-9a-f]{2}$"
        description: Is the textual representation of SoundWire Enumeration
          address. compatible string should contain SoundWire Version ID,
          Manufacturer ID, Part ID and Class ID in order and shall be in
          lower-case hexadecimal with leading zeroes.
          Valid sizes of these fields are
          Version ID is 1 nibble, number '0x1' represents SoundWire 1.0
          and '0x2' represents SoundWire 1.1 and so on.
          MFD is 4 nibbles
          PID is 4 nibbles
          CID is 2 nibbles
          More Information on detail of encoding of these fields can be
          found in MIPI Alliance DisCo & SoundWire 1.0 Specifications.

      reg:
        maxItems: 1
        description:
          Link ID followed by Instance ID of SoundWire Device Address.

    required:
      - compatible
      - reg

required:
  - "#address-cells"
  - "#size-cells"

additionalProperties: true

examples:
  - |
    soundwire@c2d0000 {
        #address-cells = <2>;
        #size-cells = <0>;
        reg = <0x0c2d0000 0x2000>;

        speaker@0,1 {
            compatible = "sdw10217201000";
            reg = <0 1>;
            powerdown-gpios = <&wcdpinctrl 2 0>;
            #thermal-sensor-cells = <0>;
            #sound-dai-cells = <0>;
        };

        speaker@0,2 {
            compatible = "sdw10217201000";
            reg = <0 2>;
            powerdown-gpios = <&wcdpinctrl 2 0>;
            #thermal-sensor-cells = <0>;
            #sound-dai-cells = <0>;
        };
    };

...


code:
Analog Devices AXI SPI Engine controller Device Tree Bindings

Required properties:
- compatible		: Must be "adi,axi-spi-engine-1.00.a""
- reg			: Physical base address and size of the register map.
- interrupts		: Property with a value describing the interrupt
			  number.
- clock-names		: List of input clock names - "s_axi_aclk", "spi_clk"
- clocks		: Clock phandles and specifiers (See clock bindings for
			  details on clock-names and clocks).
- #address-cells	: Must be <1>
- #size-cells		: Must be <0>

Optional subnodes:
	Subnodes are use to represent the SPI slave devices connected to the SPI
	master. They follow the generic SPI bindings as outlined in spi-bus.txt.

Example:

    spi@@44a00000 {
		compatible = "adi,axi-spi-engine-1.00.a";
		reg = <0x44a00000 0x1000>;
		interrupts = <0 56 4>;
		clocks = <&clkc 15 &clkc 15>;
		clock-names = "s_axi_aclk", "spi_clk";

		#address-cells = <1>;
		#size-cells = <0>;

		/* SPI devices */
    };


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/allwinner,sun4i-a10-spi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A10 SPI Controller

allOf:
  - $ref: "spi-controller.yaml"

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <mripard@kernel.org>

properties:
  "#address-cells": true
  "#size-cells": true

  compatible:
    const: allwinner,sun4i-a10-spi

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

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

  clock-names:
    items:
      - const: ahb
      - const: mod

  dmas:
    items:
      - description: RX DMA Channel
      - description: TX DMA Channel

  dma-names:
    items:
      - const: rx
      - const: tx

  num-cs: true

patternProperties:
  "^.*@[0-9a-f]+":
    type: object
    properties:
      reg:
        items:
          minimum: 0
          maximum: 4

      spi-rx-bus-width:
        const: 1

      spi-tx-bus-width:
        const: 1

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    spi1: spi@1c06000 {
        compatible = "allwinner,sun4i-a10-spi";
        reg = <0x01c06000 0x1000>;
        interrupts = <11>;
        clocks = <&ahb_gates 21>, <&spi1_clk>;
        clock-names = "ahb", "mod";
        #address-cells = <1>;
        #size-cells = <0>;
    };

...


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/allwinner,sun6i-a31-spi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A31 SPI Controller

allOf:
  - $ref: "spi-controller.yaml"

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <mripard@kernel.org>

properties:
  "#address-cells": true
  "#size-cells": true

  compatible:
    oneOf:
      - const: allwinner,sun6i-a31-spi
      - const: allwinner,sun8i-h3-spi
      - items:
          - enum:
              - allwinner,sun8i-r40-spi
              - allwinner,sun50i-h6-spi
              - allwinner,sun50i-h616-spi
              - allwinner,suniv-f1c100s-spi
          - const: allwinner,sun8i-h3-spi

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

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

  clock-names:
    items:
      - const: ahb
      - const: mod

  resets:
    maxItems: 1

  dmas:
    items:
      - description: RX DMA Channel
      - description: TX DMA Channel

  dma-names:
    items:
      - const: rx
      - const: tx

  num-cs: true

patternProperties:
  "^.*@[0-9a-f]+":
    type: object
    properties:
      reg:
        items:
          minimum: 0
          maximum: 4

      spi-rx-bus-width:
        const: 1

      spi-tx-bus-width:
        const: 1

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    spi1: spi@1c69000 {
        compatible = "allwinner,sun6i-a31-spi";
        reg = <0x01c69000 0x1000>;
        interrupts = <0 66 4>;
        clocks = <&ahb1_gates 21>, <&spi1_clk>;
        clock-names = "ahb", "mod";
        resets = <&ahb1_rst 21>;
        #address-cells = <1>;
        #size-cells = <0>;
    };

  - |
    spi0: spi@1c68000 {
        compatible = "allwinner,sun8i-h3-spi";
        reg = <0x01c68000 0x1000>;
        interrupts = <0 65 4>;
        clocks = <&ccu 30>, <&ccu 82>;
        clock-names = "ahb", "mod";
        dmas = <&dma 23>, <&dma 23>;
        dma-names = "rx", "tx";
        resets = <&ccu 15>;
        #address-cells = <1>;
        #size-cells = <0>;
    };

...


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 BayLibre, SAS
%YAML 1.2
---
$id: "http://devicetree.org/schemas/spi/amlogic,meson-gx-spicc.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Amlogic Meson SPI Communication Controller

maintainers:
  - Neil Armstrong <neil.armstrong@linaro.org>

description: |
  The Meson SPICC is a generic SPI controller for general purpose Full-Duplex
  communications with dedicated 16 words RX/TX PIO FIFOs.

properties:
  compatible:
    enum:
      - amlogic,meson-gx-spicc # SPICC controller on Amlogic GX and compatible SoCs
      - amlogic,meson-axg-spicc # SPICC controller on Amlogic AXG and compatible SoCs
      - amlogic,meson-g12a-spicc # SPICC controller on Amlogic G12A and compatible SoCs

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  resets:
    maxItems: 1

  clocks:
    minItems: 1
    items:
      - description: controller register bus clock
      - description: baud rate generator and delay control clock

  clock-names:
    minItems: 1
    maxItems: 2

allOf:
  - $ref: "spi-controller.yaml#"
  - if:
      properties:
        compatible:
          contains:
            enum:
              - amlogic,meson-g12a-spicc

    then:
      properties:
        clocks:
          minItems: 2

        clock-names:
          items:
            - const: core
            - const: pclk

    else:
      properties:
        clocks:
          maxItems: 1

        clock-names:
          items:
            - const: core

  - if:
      properties:
        compatible:
          contains:
            enum:
              - amlogic,meson-gx-spicc

    then:
      properties:
        pinctrl-0: true
        pinctrl-1: true
        pinctrl-2: true

        pinctrl-names:
          minItems: 1
          items:
            - const: default
            - const: idle-high
            - const: idle-low

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names

unevaluatedProperties: false

examples:
  - |
    spi@c1108d80 {
          compatible = "amlogic,meson-gx-spicc";
          reg = <0xc1108d80 0x80>;
          interrupts = <112>;
          clocks = <&clk81>;
          clock-names = "core";
          #address-cells = <1>;
          #size-cells = <0>;

          display@0 {
              compatible = "lg,lg4573";
              spi-max-frequency = <1000000>;
              reg = <0>;
          };
    };