Documentation / devicetree / bindings / sound / mediatek,mt7986-afe.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 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
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/mediatek,mt7986-afe.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek AFE PCM controller for MT7986

maintainers:
  - Maso Huang <maso.huang@mediatek.com>

properties:
  compatible:
    oneOf:
      - const: mediatek,mt7986-afe
      - items:
          - enum:
              - mediatek,mt7981-afe
              - mediatek,mt7988-afe
          - const: mediatek,mt7986-afe

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    minItems: 5
    items:
      - description: audio bus clock
      - description: audio 26M clock
      - description: audio intbus clock
      - description: audio hopping clock
      - description: audio pll clock
      - description: mux for pcm_mck
      - description: audio i2s/pcm mck

  clock-names:
    minItems: 5
    items:
      - const: bus_ck
      - const: 26m_ck
      - const: l_ck
      - const: aud_ck
      - const: eg2_ck
      - const: sel
      - const: i2s_m

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt7986-afe
    then:
      properties:
        clocks:
          items:
            - description: audio bus clock
            - description: audio 26M clock
            - description: audio intbus clock
            - description: audio hopping clock
            - description: audio pll clock
        clock-names:
          items:
            - const: bus_ck
            - const: 26m_ck
            - const: l_ck
            - const: aud_ck
            - const: eg2_ck

  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt7981-afe
    then:
      properties:
        clocks:
          items:
            - description: audio bus clock
            - description: audio 26M clock
            - description: audio intbus clock
            - description: audio hopping clock
            - description: audio pll clock
            - description: mux for pcm_mck
        clock-names:
          items:
            - const: bus_ck
            - const: 26m_ck
            - const: l_ck
            - const: aud_ck
            - const: eg2_ck
            - const: sel

  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt7988-afe
    then:
      properties:
        clocks:
          items:
            - description: audio bus clock
            - description: audio 26M clock
            - description: audio intbus clock
            - description: audio hopping clock
            - description: audio pll clock
            - description: mux for pcm_mck
            - description: audio i2s/pcm mck
        clock-names:
          items:
            - const: bus_ck
            - const: 26m_ck
            - const: l_ck
            - const: aud_ck
            - const: eg2_ck
            - const: sel
            - const: i2s_m

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/clock/mt7986-clk.h>
 
    afe@11210000 {
        compatible = "mediatek,mt7986-afe";
        reg = <0x11210000 0x9000>;
        interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&infracfg_ao CLK_INFRA_AUD_BUS_CK>,
                 <&infracfg_ao CLK_INFRA_AUD_26M_CK>,
                 <&infracfg_ao CLK_INFRA_AUD_L_CK>,
                 <&infracfg_ao CLK_INFRA_AUD_AUD_CK>,
                 <&infracfg_ao CLK_INFRA_AUD_EG2_CK>;
        clock-names = "bus_ck",
                      "26m_ck",
                      "l_ck",
                      "aud_ck",
                      "eg2_ck";
        assigned-clocks = <&topckgen CLK_TOP_A1SYS_SEL>,
                          <&topckgen CLK_TOP_AUD_L_SEL>,
                          <&topckgen CLK_TOP_A_TUNER_SEL>;
        assigned-clock-parents = <&topckgen CLK_TOP_APLL2_D4>,
                                 <&apmixedsys CLK_APMIXED_APLL2>,
                                 <&topckgen CLK_TOP_APLL2_D4>;
    };

...