# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2022 - 2023 Texas Instruments Incorporated
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/ti,tas2781.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TAS2781 SmartAMP

maintainers:
  - Shenghao Ding <shenghao-ding@ti.com>

description:
  The TAS2781 is a mono, digital input Class-D audio amplifier
  optimized for efficiently driving high peak power into small
  loudspeakers. An integrated on-chip DSP supports Texas Instruments
  Smart Amp speaker protection algorithm. The integrated speaker
  voltage and current sense provides for real time
  monitoring of loudspeaker behavior.

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

properties:
  compatible:
    enum:
      - ti,tas2781

  reg:
    description:
      I2C address, in multiple tas2781s case, all the i2c address
      aggregate as one Audio Device to support multiple audio slots.
    maxItems: 8
    minItems: 1
    items:
      minimum: 0x38
      maximum: 0x3f

  reset-gpios:
    maxItems: 1

  interrupts:
    maxItems: 1

  '#sound-dai-cells':
    const: 0

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
   #include <dt-bindings/gpio/gpio.h>
   i2c {
     /* example with quad tas2781s, such as tablet or pad device */
     #address-cells = <1>;
     #size-cells = <0>;
     quad_tas2781: tas2781@38 {
       compatible = "ti,tas2781";
       reg = <0x38>, /* Audio slot 0 */
             <0x3a>, /* Audio slot 1 */
             <0x39>, /* Audio slot 2 */
             <0x3b>; /* Audio slot 3 */

       #sound-dai-cells = <0>;
       reset-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
       interrupt-parent = <&gpio1>;
       interrupts = <15>;
     };
   };
...
