Documentation / devicetree / bindings / sound / ti,tas67524.yaml


Based on kernel version 7.2. Page generated on 2026-08-20 08:41 EST.

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>;
                    };
                };
            };
        };
    };