summaryrefslogtreecommitdiffstats
blob: 1cc068f82226cba3fbe9ac87fa14e52e064c13db (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# 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
    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

  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

  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

  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':
    const: 0

  clocks:
    maxItems: 1

  ti,gpa-gpio:
    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
    $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

additionalProperties: false

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

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

      tac5x1x: tac5x1x@52 {
        compatible = "ti,tac5212";
        reg = <0x52>;
        #sound-dai-cells = <0>;
        avdd-supply = <&vdd_3v3_reg>;
        iovdd-supply = <&vdd_3v3_reg>;
        ti,vref = <0>;
        ti,micbias-vg = <3>;
        ti,gpi1-func = <0>;
        ti,gpios-func = <4>, <1>, <0>;
        ti,gpios-drive = <0>, <0>, <0>;
        ti,gpa-gpio = <0>;
        ti,in-ch-en = <1>;
        ti,out-ch-en = <1>;
        ti,incl-ac-coup = <0>;
        ti,incl-se-inm = <0>;
        ti,gpa-threshold = <75>, <186>;
      };
    };
...