# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/mediatek,mt8188-afe.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek AFE PCM controller for mt8188

maintainers:
  - Trevor Wu <trevor.wu@mediatek.com>

properties:
  compatible:
    const: mediatek,mt8188-afe

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  resets:
    maxItems: 1

  reset-names:
    const: audiosys

  memory-region:
    maxItems: 1
    description: |
      Shared memory region for AFE memif.  A "shared-dma-pool".
      See dtschema reserved-memory/shared-dma-pool.yaml for details.

  mediatek,topckgen:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle of the mediatek topckgen controller

  mediatek,infracfg:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle of the mediatek infracfg controller

  power-domains:
    maxItems: 1

  clocks:
    items:
      - description: 26M clock
      - description: audio pll1 clock
      - description: audio pll2 clock
      - description: clock divider for i2si1_mck
      - description: clock divider for i2si2_mck
      - description: clock divider for i2so1_mck
      - description: clock divider for i2so2_mck
      - description: clock divider for dptx_mck
      - description: a1sys hoping clock
      - description: audio intbus clock
      - description: audio hires clock
      - description: audio local bus clock
      - description: mux for dptx_mck
      - description: mux for i2so1_mck
      - description: mux for i2so2_mck
      - description: mux for i2si1_mck
      - description: mux for i2si2_mck
      - description: audio 26m clock
      - description: audio pll1 divide 4
      - description: audio pll2 divide 4
      - description: clock divider for iec
      - description: mux for a2sys clock
      - description: mux for aud_iec

  clock-names:
    items:
      - const: clk26m
      - const: apll1
      - const: apll2
      - const: apll12_div0
      - const: apll12_div1
      - const: apll12_div2
      - const: apll12_div3
      - const: apll12_div9
      - const: top_a1sys_hp
      - const: top_aud_intbus
      - const: top_audio_h
      - const: top_audio_local_bus
      - const: top_dptx
      - const: top_i2so1
      - const: top_i2so2
      - const: top_i2si1
      - const: top_i2si2
      - const: adsp_audio_26m
      - const: apll1_d4
      - const: apll2_d4
      - const: apll12_div4
      - const: top_a2sys
      - const: top_aud_iec

  mediatek,etdm-in1-cowork-source:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      etdm modules can share the same external clock pin. Specify
      which etdm clock source is required by this etdm in module.
    enum:
      - 1 # etdm2_in
      - 2 # etdm1_out
      - 3 # etdm2_out

  mediatek,etdm-in2-cowork-source:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      etdm modules can share the same external clock pin. Specify
      which etdm clock source is required by this etdm in module.
    enum:
      - 0 # etdm1_in
      - 2 # etdm1_out
      - 3 # etdm2_out

  mediatek,etdm-out1-cowork-source:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      etdm modules can share the same external clock pin. Specify
      which etdm clock source is required by this etdm out module.
    enum:
      - 0 # etdm1_in
      - 1 # etdm2_in
      - 3 # etdm2_out

  mediatek,etdm-out2-cowork-source:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      etdm modules can share the same external clock pin. Specify
      which etdm clock source is required by this etdm out module.
    enum:
      - 0 # etdm1_in
      - 1 # etdm2_in
      - 2 # etdm1_out

patternProperties:
  "^mediatek,etdm-in[1-2]-chn-disabled$":
    $ref: /schemas/types.yaml#/definitions/uint8-array
    minItems: 1
    maxItems: 16
    description:
      This is a list of channel IDs which should be disabled.
      By default, all data received from ETDM pins will be outputted to
      memory. etdm in supports disable_out in direct mode(w/o interconn),
      so user can disable the specified channels by the property.
    uniqueItems: true
    items:
      minimum: 0
      maximum: 15

  "^mediatek,etdm-in[1-2]-multi-pin-mode$":
    type: boolean
    description: if present, the etdm data mode is I2S.

  "^mediatek,etdm-out[1-3]-multi-pin-mode$":
    type: boolean
    description: if present, the etdm data mode is I2S.

required:
  - compatible
  - reg
  - interrupts
  - resets
  - reset-names
  - mediatek,topckgen
  - mediatek,infracfg
  - power-domains
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    afe@10b10000 {
        compatible = "mediatek,mt8188-afe";
        reg = <0x10b10000 0x10000>;
        interrupts = <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH 0>;
        resets = <&watchdog 14>;
        reset-names = "audiosys";
        memory-region = <&snd_dma_mem_reserved>;
        mediatek,topckgen = <&topckgen>;
        mediatek,infracfg = <&infracfg_ao>;
        power-domains = <&spm 13>; //MT8188_POWER_DOMAIN_AUDIO
        mediatek,etdm-in2-cowork-source = <2>;
        mediatek,etdm-out2-cowork-source = <0>;
        mediatek,etdm-in1-multi-pin-mode;
        mediatek,etdm-in1-chn-disabled = /bits/ 8 <0x0 0x2>;
        clocks = <&clk26m>,
                 <&apmixedsys 9>, //CLK_APMIXED_APLL1
                 <&apmixedsys 10>, //CLK_APMIXED_APLL2
                 <&topckgen 186>, //CLK_TOP_APLL12_CK_DIV0
                 <&topckgen 187>, //CLK_TOP_APLL12_CK_DIV1
                 <&topckgen 188>, //CLK_TOP_APLL12_CK_DIV2
                 <&topckgen 189>, //CLK_TOP_APLL12_CK_DIV3
                 <&topckgen 191>, //CLK_TOP_APLL12_CK_DIV9
                 <&topckgen 83>, //CLK_TOP_A1SYS_HP
                 <&topckgen 31>, //CLK_TOP_AUD_INTBUS
                 <&topckgen 32>, //CLK_TOP_AUDIO_H
                 <&topckgen 69>, //CLK_TOP_AUDIO_LOCAL_BUS
                 <&topckgen 81>, //CLK_TOP_DPTX
                 <&topckgen 77>, //CLK_TOP_I2SO1
                 <&topckgen 78>, //CLK_TOP_I2SO2
                 <&topckgen 79>, //CLK_TOP_I2SI1
                 <&topckgen 80>, //CLK_TOP_I2SI2
                 <&adsp_audio26m 0>, //CLK_AUDIODSP_AUDIO26M
                 <&topckgen 132>, //CLK_TOP_APLL1_D4
                 <&topckgen 133>, //CLK_TOP_APLL2_D4
                 <&topckgen 183>, //CLK_TOP_APLL12_CK_DIV4
                 <&topckgen 84>, //CLK_TOP_A2SYS
                 <&topckgen 82>; //CLK_TOP_AUD_IEC>;
        clock-names = "clk26m",
                      "apll1",
                      "apll2",
                      "apll12_div0",
                      "apll12_div1",
                      "apll12_div2",
                      "apll12_div3",
                      "apll12_div9",
                      "top_a1sys_hp",
                      "top_aud_intbus",
                      "top_audio_h",
                      "top_audio_local_bus",
                      "top_dptx",
                      "top_i2so1",
                      "top_i2so2",
                      "top_i2si1",
                      "top_i2si2",
                      "adsp_audio_26m",
                      "apll1_d4",
                      "apll2_d4",
                      "apll12_div4",
                      "top_a2sys",
                      "top_aud_iec";
    };

...
