xref: /linux/Documentation/devicetree/bindings/sound/ti,tas67524.yaml (revision 9611c0ce215a66770ccbe5c126bf57ba8c31bcad)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/ti,tas67524.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments TAS67524 Audio Amplifier
8
9maintainers:
10  - Sen Wang <sen@ti.com>
11
12description:
13  The TAS67524 is a four-channel, digital-input, automotive
14  Class-D audio amplifier with load diagnostics and an integrated
15  DSP for audio processing.
16
17allOf:
18  - $ref: dai-common.yaml#
19
20properties:
21  compatible:
22    oneOf:
23      - items:
24          - enum:
25              - ti,tas6754
26          - const: ti,tas67524
27      - const: ti,tas67524
28
29  reg:
30    maxItems: 1
31
32  '#sound-dai-cells':
33    const: 1
34    description: |
35      The device exposes three DAIs, selected by index.
36        0 - Standard Audio Path (Playback)
37        1 - Low-Latency Playback Path (Playback)
38        2 - Sensory Feedback (Capture - Vpredict and Isense)
39      By default, all four channels of each DAI are active.
40
41  interrupts:
42    maxItems: 1
43    description:
44      Active-low falling-edge interrupt from the FAULT pin. When provided,
45      the driver uses IRQ-driven fault reporting instead of polling.
46
47  powerdown-gpios:
48    maxItems: 1
49    description:
50      GPIO connected to the PD pin, active low. Controls the internal
51      digital circuitry power state. When asserted the device enters
52      full power-down mode and all register state is lost. Can be omitted if
53      PD pin is hardwired or externally controlled.
54
55  standby-gpios:
56    maxItems: 1
57    description:
58      GPIO connected to the STBY pin, active low. Controls the analog
59      power stage. When asserted the device enters Deep Sleep mode but
60      remains I2C-accessible with registers retained. Can be omitted if
61      STBY pin is tied to PD or hardwired.
62
63  dvdd-supply:
64    description:
65      Digital logic supply (1.62 V to 3.6 V). All three supply rails must
66      be within their recommended operating ranges before the PD pin is
67      released.
68
69  pvdd-supply:
70    description:
71      Output FET power supply (4.5 V to 19 V). All three supply rails must
72      be within their recommended operating ranges before the PD pin is
73      released.
74
75  vbat-supply:
76    description:
77      Battery supply for the Class-D output stage (4.5 V to 19 V). Optional
78      when PVDD and VBAT are connected to the same supply rail. When absent,
79      VBAT is assumed hardwired to PVDD.
80
81  ti,fast-boot:
82    type: boolean
83    description:
84      Skip DC load diagnostic sweep at power-on to reduce boot latency.
85      Automatic diagnostics after fault conditions remain enabled. Hardware
86      overcurrent protection is always active.
87
88  ti,audio-slot-no:
89    $ref: /schemas/types.yaml#/definitions/uint32
90    description:
91      TDM slot offset for the standard audio playback path via SDIN1. A value
92      of 4 maps to slot 4. If omitted, slot assignment is derived from the
93      tx_mask provided via set_tdm_slot(). Without either property, no slot
94      mapping is configured.
95
96  ti,llp-slot-no:
97    $ref: /schemas/types.yaml#/definitions/uint32
98    description:
99      TDM slot offset for the low-latency playback path via SDIN1. If omitted,
100      slot assignment is derived from the tx_mask provided via set_tdm_slot().
101      Without either property, no slot mapping is configured. Disabled outside
102      of LLP mode, and only relevant for TDM formats.
103
104  ti,vpredict-slot-no:
105    $ref: /schemas/types.yaml#/definitions/uint32
106    description: |
107      In TDM mode, enables Vpredict output and assigns its starting slot;
108      four consecutive slots carry Vpredict Ch1-4 on SDOUT1. May coexist
109      with ti,isense-slot-no using separate non-overlapping slots.
110
111      In I2S mode, enables Vpredict output on SDOUT1 (Ch1/Ch2) and SDOUT2
112      (Ch3/Ch4). The slot value is unused. Requires a GPIO configured as
113      sdout2 for Ch3/Ch4; without it only Ch1/Ch2 are output. Mutually
114      exclusive with ti,isense-slot-no; if both are set, Vpredict takes
115      priority.
116
117      Irrelevant in Left-J and Right-J modes.
118
119  ti,isense-slot-no:
120    $ref: /schemas/types.yaml#/definitions/uint32
121    description: |
122      In TDM mode, enables Isense output and assigns its starting slot;
123      four consecutive slots carry Isense Ch1-4 on SDOUT1. May coexist
124      with ti,vpredict-slot-no using separate non-overlapping slots.
125
126      In I2S mode, enables Isense output on SDOUT1 (Ch1/Ch2) and SDOUT2
127      (Ch3/Ch4). The slot value is unused. Requires a GPIO configured as
128      SDOUT2 for Ch3/Ch4; without it only Ch1/Ch2 are output. Mutually
129      exclusive with ti,vpredict-slot-no; Vpredict takes priority if both
130      are set.
131
132      Irrelevant in Left-J and Right-J modes.
133
134  ti,gpio1-function:
135    $ref: /schemas/types.yaml#/definitions/string
136    description:
137      Function for the GPIO_1 pin. When omitted, GPIO_1 remains in its
138      power-on default state.
139    enum:
140      - low            # Output: driven low
141      - auto-mute      # Output: high when all channels are auto-muted
142      - auto-mute-ch4  # Output: high when channel 4 is auto-muted
143      - auto-mute-ch3  # Output: high when channel 3 is auto-muted
144      - auto-mute-ch2  # Output: high when channel 2 is auto-muted
145      - auto-mute-ch1  # Output: high when channel 1 is auto-muted
146      - sdout2         # Output: Routes secondary serial data output 2
147      - sdout1         # Output: Re-routes secondary serial data output 1
148      - warn           # Output: warning signal (OTW, CBC)
149      - fault          # Output: fault signal (OTSD, OC, DC)
150      - clock-sync     # Output: clock synchronisation
151      - invalid-clock  # Output: high when clock is invalid
152      - high           # Output: driven high
153      - mute           # Input: external mute control
154      - phase-sync     # Input: phase synchronisation
155      - sdin2          # Input: secondary SDIN2 for I2S/LJ/RJ ch3/ch4
156      - deep-sleep     # Input: asserted transitions device to Deep Sleep
157      - hiz            # Input: asserted transitions device to Hi-Z
158      - play           # Input: asserted transitions device to Play
159      - sleep          # Input: asserted transitions device to Sleep
160
161  ti,gpio2-function:
162    $ref: /schemas/types.yaml#/definitions/string
163    description:
164      Function for the GPIO_2 pin. When omitted, GPIO_2 remains in its
165      power-on default state.
166    enum:
167      - low            # Output: driven low
168      - auto-mute      # Output: high when all channels are auto-muted
169      - auto-mute-ch4  # Output: high when channel 4 is auto-muted
170      - auto-mute-ch3  # Output: high when channel 3 is auto-muted
171      - auto-mute-ch2  # Output: high when channel 2 is auto-muted
172      - auto-mute-ch1  # Output: high when channel 1 is auto-muted
173      - sdout2         # Output: Routes secondary serial data output 2
174      - sdout1         # Output: Re-routes secondary serial data output 1
175      - warn           # Output: warning signal (OTW, CBC)
176      - fault          # Output: fault signal (OTSD, OC, DC)
177      - clock-sync     # Output: clock synchronisation
178      - invalid-clock  # Output: high when clock is invalid
179      - high           # Output: driven high
180      - mute           # Input: external mute control
181      - phase-sync     # Input: phase synchronisation
182      - sdin2          # Input: secondary SDIN2 for I2S/LJ/RJ ch3/ch4
183      - deep-sleep     # Input: asserted transitions device to Deep Sleep
184      - hiz            # Input: asserted transitions device to Hi-Z
185      - play           # Input: asserted transitions device to Play
186      - sleep          # Input: asserted transitions device to Sleep
187
188  ports:
189    $ref: /schemas/graph.yaml#/properties/ports
190    properties:
191      port@0:
192        $ref: audio-graph-port.yaml#
193        unevaluatedProperties: false
194        description: Standard audio playback port (DAI 0).
195
196      port@1:
197        $ref: audio-graph-port.yaml#
198        unevaluatedProperties: false
199        description: Low-latency playback port (LLP) (DAI 1).
200
201      port@2:
202        $ref: audio-graph-port.yaml#
203        unevaluatedProperties: false
204        description: Sensory feedback capture port (DAI 2).
205
206  port:
207    $ref: audio-graph-port.yaml#
208    unevaluatedProperties: false
209
210required:
211  - compatible
212  - reg
213  - '#sound-dai-cells'
214  - dvdd-supply
215  - pvdd-supply
216
217anyOf:
218  - required: [powerdown-gpios]
219  - required: [standby-gpios]
220
221unevaluatedProperties: false
222
223examples:
224  - |
225    #include <dt-bindings/gpio/gpio.h>
226
227    i2c {
228        #address-cells = <1>;
229        #size-cells = <0>;
230
231        amplifier@70 {
232            compatible = "ti,tas67524";
233            reg = <0x70>;
234            #sound-dai-cells = <1>;
235            sound-name-prefix = "TAS0";
236
237            standby-gpios = <&main_gpio0 33 GPIO_ACTIVE_LOW>;
238
239            dvdd-supply = <&dvdd_1v8>;
240            pvdd-supply = <&pvdd_12v>;
241            vbat-supply = <&vbat_12v>;
242
243            ti,audio-slot-no = <0>;
244            ti,llp-slot-no = <4>;
245            ti,vpredict-slot-no = <0>;
246            ti,isense-slot-no = <4>;
247
248            ti,gpio2-function = "warn";
249
250            ports {
251                #address-cells = <1>;
252                #size-cells = <0>;
253
254                port@0 {
255                    reg = <0>;
256
257                    tas0_audio_ep: endpoint {
258                        dai-format = "dsp_b";
259                        remote-endpoint = <&be_tas0_audio_ep>;
260                    };
261                };
262
263                port@1 {
264                    reg = <1>;
265
266                    tas0_anc_ep: endpoint {
267                        remote-endpoint = <&be_tas0_anc_ep>;
268                    };
269                };
270
271                port@2 {
272                    reg = <2>;
273
274                    tas0_fb_ep: endpoint {
275                        remote-endpoint = <&be_tas0_fb_ep>;
276                    };
277                };
278            };
279        };
280    };
281