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: 0description: VREF output is powered to 2.75V.- const: 1description: VREF output is powered to 2.5V.- const: 2description: 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: 0description: MICBIAS output is same as the VREF output- const: 1description: MICBIAS output is 0.5 times the VREF output- const: 3description: 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 valuesEach 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: 72maximum: 162- ti,gpa-threshold:
- description: GPA Low and High threshold Values
- $ref: /schemas/types.yaml#/definitions/uint32-array
- maxItems: 2
- minItems: 2
- items:
minimum: 75maximum: 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