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@xxxxxx> > > --- > 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@xxxxxx> > + - Kevin Lu <kevin-lu@xxxxxx> > + > +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-devicetree-basics.html#generic-names-recommendation Best regards, Krzysztof