# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/socionext,uniphier-aio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: UniPhier AIO audio system

maintainers:
  - <alsa-devel@alsa-project.org>

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

properties:
  compatible:
    enum:
      - socionext,uniphier-ld11-aio
      - socionext,uniphier-ld20-aio
      - socionext,uniphier-pxs2-aio

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clock-names:
    const: aio

  clocks:
    maxItems: 1

  reset-names:
    const: aio

  resets:
    maxItems: 1

  socionext,syscon:
    description: |
      Specifies a phandle to soc-glue, which is used for changing mode of S/PDIF
      signal pin to output from Hi-Z. This property is optional if you use I2S
      signal pins only.
    $ref: /schemas/types.yaml#/definitions/phandle

  "#sound-dai-cells":
    const: 1

patternProperties:
  "^port@[0-9]$":
    description: |
      Port number of DT node is specified by the following DAI channels that
      depends on SoC.
      ld11-aio,ld20-aio:
        0: hdmi
        1: pcmin2
        2: line
        3: hpcmout1
        4: pcmout3
        5: hiecout1
        6: epcmout2
        7: epcmout3
        8: hieccompout1
      pxs2-aio:
        0: hdmi
        1: line
        2: aux
        3: hiecout1
        4: iecout1
        5: hieccompout1
        6: ieccompout1
    $ref: audio-graph-port.yaml#
    unevaluatedProperties: false

unevaluatedProperties: false

required:
  - compatible
  - reg
  - interrupts
  - clock-names
  - clocks
  - reset-names
  - resets
  - "#sound-dai-cells"

examples:
  - |
    audio@56000000 {
        compatible = "socionext,uniphier-ld20-aio";
        reg = <0x56000000 0x80000>;
        interrupts = <0 144 4>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_aout>;
        clock-names = "aio";
        clocks = <&sys_clk 40>;
        reset-names = "aio";
        resets = <&sys_rst 40>;
        #sound-dai-cells = <1>;
        socionext,syscon = <&soc_glue>;
    };