
On Thu, Jun 26, 2025 at 11:43:31PM +0530, Niranjan H Y wrote:
tac5x1x family are series of low-power and high performance mono/stereo audio codecs consists of ADC and DAC combinations. The family consist of Codecs(DAC & ADC), ADC only and DAC only configurations. The documentation explains the list of devices in the family, their power supply configurations and gpio configuration options available for various functionality.
Signed-off-by: Niranjan H Y niranjan.hy@ti.com
v2:
- Document newly added dts entries ti,adc1-impedance, ti,adc2-impedance, ti,out2x-vcom-cfg
v3:
- add documentation for ti,pdm-input-pins
- Update required section
.../devicetree/bindings/sound/ti,tac5x1x.yaml | 262 ++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/ti,tac5x1x.yaml
diff --git a/Documentation/devicetree/bindings/sound/ti,tac5x1x.yaml b/Documentation/devicetree/bindings/sound/ti,tac5x1x.yaml new file mode 100644 index 000000000000..5fea6513f97f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/ti,tac5x1x.yaml @@ -0,0 +1,262 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +# Copyright (C) 2025 Texas Instruments Incorporated +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sound/ti,tac5x1x.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml#
+title: Texas Instruments TAC5X1X Codec
+description: |
- TAC5X1X are series of low-power and high performance mono or stereo
- audio codecs, as well as multiple inputs and outputs programmable in
- single-ended or fully differential configurations. Device supports both
- Microphone and Line In input on ADC Channel. DAC Output can be configured
- for either Line Out or Head Phone Load.
- The serial control bus supports SPI or I2C protocols, while the serial audio
- data bus is programmable for I2S, left/right-justified, DSP, or TDM modes.
- Specification about the codecs can be found at:
- https://www.ti.com/lit/gpn/taa5212
- https://www.ti.com/lit/gpn/taa5412-q1
- https://www.ti.com/lit/gpn/tac5111
- https://www.ti.com/lit/gpn/tac5112
- https://www.ti.com/lit/gpn/tac5211
- https://www.ti.com/lit/gpn/tac5212
- https://www.ti.com/lit/gpn/tac5311-q1
- https://www.ti.com/lit/gpn/tac5312-q1
- https://www.ti.com/lit/gpn/tac5411-q1
- https://www.ti.com/lit/gpn/tac5412-q1
- https://www.ti.com/lit/gpn/tad5112
- https://www.ti.com/lit/gpn/tad5212
+maintainers:
- Niranjan H Y niranjan.hy@ti.com
- Kevin Lu kevin-lu@ti.com
+properties:
- compatible:
- enum:
- ti,taa5212
- ti,taa5412
- ti,tac5111
- ti,tac5112
- ti,tac5211
- ti,tac5212
- ti,tac5311
- ti,tac5312
- ti,tac5411
- ti,tac5412
- ti,tad5112
- ti,tad5212
- reg:
- maxItems: 1
- ti,vref:
- description: VREF required voltage. If node is omitted then VREF is powered down.
- $ref: /schemas/types.yaml#/definitions/uint32
Voltage is in microvolt. Use proper suffix/values.
- oneOf:
- const: 0
description: VREF output is powered to 2.75V.
- const: 1
description: VREF output is powered to 2.5V.
- const: 2
description: VREF output is powered to 1.375V.
- ti,micbias-vg:
- description: MicBias required voltage. If node is omitted then MicBias is powered down.
- $ref: /schemas/types.yaml#/definitions/uint32
- oneOf:
- const: 0
description: MICBIAS output is same as the VREF output
- const: 1
description: MICBIAS output is 0.5 times the VREF output
- const: 3
description: MICBIAS output is same as the AVDD
- avdd-supply:
- description: Analog DAC voltage.
- iovdd-supply:
- description: I/O voltage.
- ti,gpios-func:
- description: |
Array indicating the GPIO1, GPIO2, GPO1 Functionality in the same order.
Each integer elemnent in the array represent the following
- 0 TAC5X1X_GPIO_DISABLE - GPIO is Disabled
- 1 TAC5X1X_GPIO_GPI - General Purpose Input
- 2 ADC3XXX_GPIO_GPO - General Purpose Output
- 3 TAC5X1X_GPIO_IRQ - Chip Interrupt
- 4 TAC5X1X_GPIO_PDMCLK - PDM CLK Output
- 5 TAC5X1X_GPIO_P_DOUT - Primary ASI DOUT
- 6 TAC5X1X_GPIO_P_DOUT2 - Primary ASI DOUT2
- 7 TAC5X1X_GPIO_S_DOUT - Secondary ASI DOUT
- 8 TAC5X1X_GPIO_S_DOUT2 - Secondary ASI DOUT2
- 9 TAC5X1X_GPIO_S_BCLK - Secondary BCLK Output
- 10 TAC5X1X_GPIO_S_FSYNC - Secondary FSYNC Output
- 11 TAC5X1X_GPIO_CLKOUT - General Purpose Output
- 12 TAC5X1X_GPIO_DOUT_MUX
- 13 TAC5X1X_GPIO_DAISY_OUT
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 3
- maxItems: 3
Don't encode gpios and pins as some custom properties.
- ti,gpios-drive:
- description: |
Array indicating the GPIO1, GPIO2, GPO1 Driver values
Each number in the array indicate the following driver values.
- 0 # Hi-Z Output
- 1 # Drive active low and active High
- 2 # Drive active low and weak High
- 3 # Drive acive 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: 3
- maxItems: 3
Use standard pinctrl bindings.
- ti,pdm-input-pins:
- description: |
Array indicating the PDM Data Input for "Ch1 & Ch2" and "Ch3 & Ch4"
respectively. Each number in the array indicate the following
- 0 # PDM input disabled
- 1 # PDM input GPIO1
- 2 # PDM input GPIO2
- 3 # PDM input GPI1
- $ref: /schemas/types.yaml#/definitions/uint32-array
- minItems: 2
- maxItems: 2
This is v3, but changelog is scarce, no cover letter, no other lore references. All this is questionable. Plus the style mixing vendor with standard properties.
- ti,gpi1-func:
- description: GPI1 Functionality
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # TAC5X1X_GPIO_DISABLE - I/O buffers powered down and not used
- 1 # TAC5X1X_GPIO_GPI - General purpose input
- default: 0
- '#sound-dai-cells':
Missing ref to dai common. Look at other bindings.
- const: 0
- clocks:
- maxItems: 1
- ti,gpa-gpio:
Why this appeared here? Looks like totally random sorting.
First goes compatible, then reg, then standard properties, then vendor properties. I have few more comments but this binding looks terrible. I suggest you doing extensive initernal review, before you send next version.
- description: GPA using GPIO1 configuration
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # GPA using GPIO1 is disabled
- 1 # GPA using GPIO1
- default: 0
- ti,in-ch-en:
- description: Enable Input channel diagnostics for TAC54XX and TAC53XX device.
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # Disable input channel diagnostics
- 1 # Enable input channel diagnostics
- ti,out-ch-en:
- description: Enable Output channel diagnostics for TAC54XX and TAC53XX device
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # Disable Output channel diagnostics
- 1 # Enable Output channel Diagnostics
- ti,incl-se-inm:
- description: INxM pin Diagnostics Scan Selection for Single Ended Configuration
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # INxM pin Diagnostics Scan Selection for Single Ended excluded for diagnosis
- 1 # INxM pin Diagnostics Scan Selection for Single Ended included for diagnosis
- ti,incl-ac-coup:
- description: AC coupled channels pins Scan Selection for Diagnostics
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # AC coupled channels pins Scan Selection for Diagnostics exluded for diagnosis
- 1 # AC coupled channels pins Scan Selection for Diagnostics included for diagnosis
- ti,micbias-threshold:
- description: Micbias Low and High threshold values for TAC54XX and TAC53XX series
- $ref: /schemas/types.yaml#/definitions/uint32-array
- maxItems: 2
- minItems: 2
- items:
minimum: 72
maximum: 162
- ti,gpa-threshold:
- description: GPA Low and High threshold Values
- $ref: /schemas/types.yaml#/definitions/uint32-array
- maxItems: 2
- minItems: 2
- items:
minimum: 75
maximum: 186
- ti,adc1-impedance:
- description: Channel 1 Input Impedance Value
Use proper units.
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # 5 kOhm
- 1 # 10 kOhm
- 2 # 40 kOhm
- default: 0
- ti,adc2-impedance:
- description: Channel 2 Input Impedance Value
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # 5 kOhm
- 1 # 10 kOhm
- 2 # 40 kOhm
- default: 0
- ti,out2x-vcom-cfg:
- description: Channel OUT2x VCOM configuration
- $ref: /schemas/types.yaml#/definitions/uint32
- enum:
- 0 # 0.6 * Vref
- 1 # AVDD by 2
- default: 0
+required:
- compatible
- reg
- ti,vref
- ti,micbias-vg
+additionalProperties: false
+examples:
- |
- #include <dt-bindings/gpio/gpio.h>
- i2c {
#address-cells = <1>;
#size-cells = <0>;
tac5x1x: tac5x1x@52 {
Node names should be generic. See also an explanation and list of examples (not exhaustive) in DT specification: https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetre...
Best regards, Krzysztof