summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/sound/ti,tas67524.yaml
blob: 812a4d39e2a5c234cc4f0b1956014313c558242c (plain)
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
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,tas67524.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TAS67524 Audio Amplifier

maintainers:
  - Sen Wang <sen@ti.com>

description:
  The TAS67524 is a four-channel, digital-input, automotive
  Class-D audio amplifier with load diagnostics and an integrated
  DSP for audio processing.

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - ti,tas6754
          - const: ti,tas67524
      - const: ti,tas67524

  reg:
    maxItems: 1

  '#sound-dai-cells':
    const: 1
    description: |
      The device exposes three DAIs, selected by index.
        0 - Standard Audio Path (Playback)
        1 - Low-Latency Playback Path (Playback)
        2 - Sensory Feedback (Capture - Vpredict and Isense)
      By default, all four channels of each DAI are active.

  interrupts:
    maxItems: 1
    description:
      Active-low falling-edge interrupt from the FAULT pin. When provided,
      the driver uses IRQ-driven fault reporting instead of polling.

  powerdown-gpios:
    maxItems: 1
    description:
      GPIO connected to the PD pin, active low. Controls the internal
      digital circuitry power state. When asserted the device enters
      full power-down mode and all register state is lost. Can be omitted if
      PD pin is hardwired or externally controlled.

  standby-gpios:
    maxItems: 1
    description:
      GPIO connected to the STBY pin, active low. Controls the analog
      power stage. When asserted the device enters Deep Sleep mode but
      remains I2C-accessible with registers retained. Can be omitted if
      STBY pin is tied to PD or hardwired.

  dvdd-supply:
    description:
      Digital logic supply (1.62 V to 3.6 V). All three supply rails must
      be within their recommended operating ranges before the PD pin is
      released.

  pvdd-supply:
    description:
      Output FET power supply (4.5 V to 19 V). All three supply rails must
      be within their recommended operating ranges before the PD pin is
      released.

  vbat-supply:
    description:
      Battery supply for the Class-D output stage (4.5 V to 19 V). Optional
      when PVDD and VBAT are connected to the same supply rail. When absent,
      VBAT is assumed hardwired to PVDD.

  ti,fast-boot:
    type: boolean
    description:
      Skip DC load diagnostic sweep at power-on to reduce boot latency.
      Automatic diagnostics after fault conditions remain enabled. Hardware
      overcurrent protection is always active.

  ti,audio-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      TDM slot offset for the standard audio playback path via SDIN1. A value
      of 4 maps to slot 4. If omitted, slot assignment is derived from the
      tx_mask provided via set_tdm_slot(). Without either property, no slot
      mapping is configured.

  ti,llp-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      TDM slot offset for the low-latency playback path via SDIN1. If omitted,
      slot assignment is derived from the tx_mask provided via set_tdm_slot().
      Without either property, no slot mapping is configured. Disabled outside
      of LLP mode, and only relevant for TDM formats.

  ti,vpredict-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      In TDM mode, enables Vpredict output and assigns its starting slot;
      four consecutive slots carry Vpredict Ch1-4 on SDOUT1. May coexist
      with ti,isense-slot-no using separate non-overlapping slots.

      In I2S mode, enables Vpredict output on SDOUT1 (Ch1/Ch2) and SDOUT2
      (Ch3/Ch4). The slot value is unused. Requires a GPIO configured as
      sdout2 for Ch3/Ch4; without it only Ch1/Ch2 are output. Mutually
      exclusive with ti,isense-slot-no; if both are set, Vpredict takes
      priority.

      Irrelevant in Left-J and Right-J modes.

  ti,isense-slot-no:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      In TDM mode, enables Isense output and assigns its starting slot;
      four consecutive slots carry Isense Ch1-4 on SDOUT1. May coexist
      with ti,vpredict-slot-no using separate non-overlapping slots.

      In I2S mode, enables Isense output on SDOUT1 (Ch1/Ch2) and SDOUT2
      (Ch3/Ch4). The slot value is unused. Requires a GPIO configured as
      SDOUT2 for Ch3/Ch4; without it only Ch1/Ch2 are output. Mutually
      exclusive with ti,vpredict-slot-no; Vpredict takes priority if both
      are set.

      Irrelevant in Left-J and Right-J modes.

  ti,gpio1-function:
    $ref: /schemas/types.yaml#/definitions/string
    description:
      Function for the GPIO_1 pin. When omitted, GPIO_1 remains in its
      power-on default state.
    enum:
      - low            # Output: driven low
      - auto-mute      # Output: high when all channels are auto-muted
      - auto-mute-ch4  # Output: high when channel 4 is auto-muted
      - auto-mute-ch3  # Output: high when channel 3 is auto-muted
      - auto-mute-ch2  # Output: high when channel 2 is auto-muted
      - auto-mute-ch1  # Output: high when channel 1 is auto-muted
      - sdout2         # Output: Routes secondary serial data output 2
      - sdout1         # Output: Re-routes secondary serial data output 1
      - warn           # Output: warning signal (OTW, CBC)
      - fault          # Output: fault signal (OTSD, OC, DC)
      - clock-sync     # Output: clock synchronisation
      - invalid-clock  # Output: high when clock is invalid
      - high           # Output: driven high
      - mute           # Input: external mute control
      - phase-sync     # Input: phase synchronisation
      - sdin2          # Input: secondary SDIN2 for I2S/LJ/RJ ch3/ch4
      - deep-sleep     # Input: asserted transitions device to Deep Sleep
      - hiz            # Input: asserted transitions device to Hi-Z
      - play           # Input: asserted transitions device to Play
      - sleep          # Input: asserted transitions device to Sleep

  ti,gpio2-function:
    $ref: /schemas/types.yaml#/definitions/string
    description:
      Function for the GPIO_2 pin. When omitted, GPIO_2 remains in its
      power-on default state.
    enum:
      - low            # Output: driven low
      - auto-mute      # Output: high when all channels are auto-muted
      - auto-mute-ch4  # Output: high when channel 4 is auto-muted
      - auto-mute-ch3  # Output: high when channel 3 is auto-muted
      - auto-mute-ch2  # Output: high when channel 2 is auto-muted
      - auto-mute-ch1  # Output: high when channel 1 is auto-muted
      - sdout2         # Output: Routes secondary serial data output 2
      - sdout1         # Output: Re-routes secondary serial data output 1
      - warn           # Output: warning signal (OTW, CBC)
      - fault          # Output: fault signal (OTSD, OC, DC)
      - clock-sync     # Output: clock synchronisation
      - invalid-clock  # Output: high when clock is invalid
      - high           # Output: driven high
      - mute           # Input: external mute control
      - phase-sync     # Input: phase synchronisation
      - sdin2          # Input: secondary SDIN2 for I2S/LJ/RJ ch3/ch4
      - deep-sleep     # Input: asserted transitions device to Deep Sleep
      - hiz            # Input: asserted transitions device to Hi-Z
      - play           # Input: asserted transitions device to Play
      - sleep          # Input: asserted transitions device to Sleep

  ports:
    $ref: /schemas/graph.yaml#/properties/ports
    properties:
      port@0:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: Standard audio playback port (DAI 0).

      port@1:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: Low-latency playback port (LLP) (DAI 1).

      port@2:
        $ref: audio-graph-port.yaml#
        unevaluatedProperties: false
        description: Sensory feedback capture port (DAI 2).

  port:
    $ref: audio-graph-port.yaml#
    unevaluatedProperties: false

required:
  - compatible
  - reg
  - '#sound-dai-cells'
  - dvdd-supply
  - pvdd-supply

anyOf:
  - required: [powerdown-gpios]
  - required: [standby-gpios]

unevaluatedProperties: false

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

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

        amplifier@70 {
            compatible = "ti,tas67524";
            reg = <0x70>;
            #sound-dai-cells = <1>;
            sound-name-prefix = "TAS0";

            standby-gpios = <&main_gpio0 33 GPIO_ACTIVE_LOW>;

            dvdd-supply = <&dvdd_1v8>;
            pvdd-supply = <&pvdd_12v>;
            vbat-supply = <&vbat_12v>;

            ti,audio-slot-no = <0>;
            ti,llp-slot-no = <4>;
            ti,vpredict-slot-no = <0>;
            ti,isense-slot-no = <4>;

            ti,gpio2-function = "warn";

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

                port@0 {
                    reg = <0>;

                    tas0_audio_ep: endpoint {
                        dai-format = "dsp_b";
                        remote-endpoint = <&be_tas0_audio_ep>;
                    };
                };

                port@1 {
                    reg = <1>;

                    tas0_anc_ep: endpoint {
                        remote-endpoint = <&be_tas0_anc_ep>;
                    };
                };

                port@2 {
                    reg = <2>;

                    tas0_fb_ep: endpoint {
                        remote-endpoint = <&be_tas0_fb_ep>;
                    };
                };
            };
        };
    };