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

title: Texas Instruments TLV320AIC32x4 Stereo Audio codec

maintainers:
  - Alexander Stein <alexander.stein@ew.tq-group.com>

description: |
  The TLV320AIC32x4 audio codec can be accessed using I2C or SPI

properties:
  compatible:
    enum:
      - ti,tas2505
      - ti,tlv320aic32x4
      - ti,tlv320aic32x6

  reg:
    maxItems: 1

  clocks:
    items:
      - description: Master clock

  clock-names:
    items:
      - const: mclk

  av-supply:
    description: Analog core power supply

  dv-supply:
    description: Digital core power supply

  iov-supply:
    description: Digital IO power supply

  ldoin-supply:
    description: LDO power supply

  reset-gpios:
    maxItems: 1

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

  aic32x4-gpio-func:
    description: |
       GPIO function configuration for pins MFP1-MFP5.
       Types are defined in include/sound/tlv320aic32x4.h
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 5
    maxItems: 5

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - iov-supply

allOf:
  - $ref: dai-common.yaml#
  - if:
      not:
        required:
          - ldoin-supply
    then:
      required:
        - av-supply
        - dv-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      audio-codec@18 {
        compatible = "ti,tlv320aic32x4";
        reg = <0x18>;
        iov-supply = <&reg_3v3>;
        ldoin-supply = <&reg_3v3>;
        clocks = <&clks 201>;
        clock-names = "mclk";
        aic32x4-gpio-func= <
          0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
          0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
          0x04 /* MFP3 AIC32X4_MFP3_GPIO_ENABLED */
          0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
          0x08 /* MFP5 AIC32X4_MFP5_GPIO_INPUT */
        >;
      };
    };