1*aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*aa1a8ff2SEmmanuel Vadot%YAML 1.2
3*aa1a8ff2SEmmanuel Vadot---
4*aa1a8ff2SEmmanuel Vadot$id: http://devicetree.org/schemas/sound/mediatek,mt7986-afe.yaml#
5*aa1a8ff2SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*aa1a8ff2SEmmanuel Vadot
7*aa1a8ff2SEmmanuel Vadottitle: MediaTek AFE PCM controller for MT7986
8*aa1a8ff2SEmmanuel Vadot
9*aa1a8ff2SEmmanuel Vadotmaintainers:
10*aa1a8ff2SEmmanuel Vadot  - Maso Huang <maso.huang@mediatek.com>
11*aa1a8ff2SEmmanuel Vadot
12*aa1a8ff2SEmmanuel Vadotproperties:
13*aa1a8ff2SEmmanuel Vadot  compatible:
14*aa1a8ff2SEmmanuel Vadot    oneOf:
15*aa1a8ff2SEmmanuel Vadot      - const: mediatek,mt7986-afe
16*aa1a8ff2SEmmanuel Vadot      - items:
17*aa1a8ff2SEmmanuel Vadot          - enum:
18*aa1a8ff2SEmmanuel Vadot              - mediatek,mt7981-afe
19*aa1a8ff2SEmmanuel Vadot              - mediatek,mt7988-afe
20*aa1a8ff2SEmmanuel Vadot          - const: mediatek,mt7986-afe
21*aa1a8ff2SEmmanuel Vadot
22*aa1a8ff2SEmmanuel Vadot  reg:
23*aa1a8ff2SEmmanuel Vadot    maxItems: 1
24*aa1a8ff2SEmmanuel Vadot
25*aa1a8ff2SEmmanuel Vadot  interrupts:
26*aa1a8ff2SEmmanuel Vadot    maxItems: 1
27*aa1a8ff2SEmmanuel Vadot
28*aa1a8ff2SEmmanuel Vadot  clocks:
29*aa1a8ff2SEmmanuel Vadot    minItems: 5
30*aa1a8ff2SEmmanuel Vadot    items:
31*aa1a8ff2SEmmanuel Vadot      - description: audio bus clock
32*aa1a8ff2SEmmanuel Vadot      - description: audio 26M clock
33*aa1a8ff2SEmmanuel Vadot      - description: audio intbus clock
34*aa1a8ff2SEmmanuel Vadot      - description: audio hopping clock
35*aa1a8ff2SEmmanuel Vadot      - description: audio pll clock
36*aa1a8ff2SEmmanuel Vadot      - description: mux for pcm_mck
37*aa1a8ff2SEmmanuel Vadot      - description: audio i2s/pcm mck
38*aa1a8ff2SEmmanuel Vadot
39*aa1a8ff2SEmmanuel Vadot  clock-names:
40*aa1a8ff2SEmmanuel Vadot    minItems: 5
41*aa1a8ff2SEmmanuel Vadot    items:
42*aa1a8ff2SEmmanuel Vadot      - const: bus_ck
43*aa1a8ff2SEmmanuel Vadot      - const: 26m_ck
44*aa1a8ff2SEmmanuel Vadot      - const: l_ck
45*aa1a8ff2SEmmanuel Vadot      - const: aud_ck
46*aa1a8ff2SEmmanuel Vadot      - const: eg2_ck
47*aa1a8ff2SEmmanuel Vadot      - const: sel
48*aa1a8ff2SEmmanuel Vadot      - const: i2s_m
49*aa1a8ff2SEmmanuel Vadot
50*aa1a8ff2SEmmanuel Vadotrequired:
51*aa1a8ff2SEmmanuel Vadot  - compatible
52*aa1a8ff2SEmmanuel Vadot  - reg
53*aa1a8ff2SEmmanuel Vadot  - interrupts
54*aa1a8ff2SEmmanuel Vadot  - clocks
55*aa1a8ff2SEmmanuel Vadot  - clock-names
56*aa1a8ff2SEmmanuel Vadot
57*aa1a8ff2SEmmanuel VadotallOf:
58*aa1a8ff2SEmmanuel Vadot  - if:
59*aa1a8ff2SEmmanuel Vadot      properties:
60*aa1a8ff2SEmmanuel Vadot        compatible:
61*aa1a8ff2SEmmanuel Vadot          contains:
62*aa1a8ff2SEmmanuel Vadot            const: mediatek,mt7986-afe
63*aa1a8ff2SEmmanuel Vadot    then:
64*aa1a8ff2SEmmanuel Vadot      properties:
65*aa1a8ff2SEmmanuel Vadot        clocks:
66*aa1a8ff2SEmmanuel Vadot          items:
67*aa1a8ff2SEmmanuel Vadot            - description: audio bus clock
68*aa1a8ff2SEmmanuel Vadot            - description: audio 26M clock
69*aa1a8ff2SEmmanuel Vadot            - description: audio intbus clock
70*aa1a8ff2SEmmanuel Vadot            - description: audio hopping clock
71*aa1a8ff2SEmmanuel Vadot            - description: audio pll clock
72*aa1a8ff2SEmmanuel Vadot        clock-names:
73*aa1a8ff2SEmmanuel Vadot          items:
74*aa1a8ff2SEmmanuel Vadot            - const: bus_ck
75*aa1a8ff2SEmmanuel Vadot            - const: 26m_ck
76*aa1a8ff2SEmmanuel Vadot            - const: l_ck
77*aa1a8ff2SEmmanuel Vadot            - const: aud_ck
78*aa1a8ff2SEmmanuel Vadot            - const: eg2_ck
79*aa1a8ff2SEmmanuel Vadot
80*aa1a8ff2SEmmanuel Vadot  - if:
81*aa1a8ff2SEmmanuel Vadot      properties:
82*aa1a8ff2SEmmanuel Vadot        compatible:
83*aa1a8ff2SEmmanuel Vadot          contains:
84*aa1a8ff2SEmmanuel Vadot            const: mediatek,mt7981-afe
85*aa1a8ff2SEmmanuel Vadot    then:
86*aa1a8ff2SEmmanuel Vadot      properties:
87*aa1a8ff2SEmmanuel Vadot        clocks:
88*aa1a8ff2SEmmanuel Vadot          items:
89*aa1a8ff2SEmmanuel Vadot            - description: audio bus clock
90*aa1a8ff2SEmmanuel Vadot            - description: audio 26M clock
91*aa1a8ff2SEmmanuel Vadot            - description: audio intbus clock
92*aa1a8ff2SEmmanuel Vadot            - description: audio hopping clock
93*aa1a8ff2SEmmanuel Vadot            - description: audio pll clock
94*aa1a8ff2SEmmanuel Vadot            - description: mux for pcm_mck
95*aa1a8ff2SEmmanuel Vadot        clock-names:
96*aa1a8ff2SEmmanuel Vadot          items:
97*aa1a8ff2SEmmanuel Vadot            - const: bus_ck
98*aa1a8ff2SEmmanuel Vadot            - const: 26m_ck
99*aa1a8ff2SEmmanuel Vadot            - const: l_ck
100*aa1a8ff2SEmmanuel Vadot            - const: aud_ck
101*aa1a8ff2SEmmanuel Vadot            - const: eg2_ck
102*aa1a8ff2SEmmanuel Vadot            - const: sel
103*aa1a8ff2SEmmanuel Vadot
104*aa1a8ff2SEmmanuel Vadot  - if:
105*aa1a8ff2SEmmanuel Vadot      properties:
106*aa1a8ff2SEmmanuel Vadot        compatible:
107*aa1a8ff2SEmmanuel Vadot          contains:
108*aa1a8ff2SEmmanuel Vadot            const: mediatek,mt7988-afe
109*aa1a8ff2SEmmanuel Vadot    then:
110*aa1a8ff2SEmmanuel Vadot      properties:
111*aa1a8ff2SEmmanuel Vadot        clocks:
112*aa1a8ff2SEmmanuel Vadot          items:
113*aa1a8ff2SEmmanuel Vadot            - description: audio bus clock
114*aa1a8ff2SEmmanuel Vadot            - description: audio 26M clock
115*aa1a8ff2SEmmanuel Vadot            - description: audio intbus clock
116*aa1a8ff2SEmmanuel Vadot            - description: audio hopping clock
117*aa1a8ff2SEmmanuel Vadot            - description: audio pll clock
118*aa1a8ff2SEmmanuel Vadot            - description: mux for pcm_mck
119*aa1a8ff2SEmmanuel Vadot            - description: audio i2s/pcm mck
120*aa1a8ff2SEmmanuel Vadot        clock-names:
121*aa1a8ff2SEmmanuel Vadot          items:
122*aa1a8ff2SEmmanuel Vadot            - const: bus_ck
123*aa1a8ff2SEmmanuel Vadot            - const: 26m_ck
124*aa1a8ff2SEmmanuel Vadot            - const: l_ck
125*aa1a8ff2SEmmanuel Vadot            - const: aud_ck
126*aa1a8ff2SEmmanuel Vadot            - const: eg2_ck
127*aa1a8ff2SEmmanuel Vadot            - const: sel
128*aa1a8ff2SEmmanuel Vadot            - const: i2s_m
129*aa1a8ff2SEmmanuel Vadot
130*aa1a8ff2SEmmanuel VadotadditionalProperties: false
131*aa1a8ff2SEmmanuel Vadot
132*aa1a8ff2SEmmanuel Vadotexamples:
133*aa1a8ff2SEmmanuel Vadot  - |
134*aa1a8ff2SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
135*aa1a8ff2SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
136*aa1a8ff2SEmmanuel Vadot    #include <dt-bindings/clock/mt7986-clk.h>
137*aa1a8ff2SEmmanuel Vadot
138*aa1a8ff2SEmmanuel Vadot    afe@11210000 {
139*aa1a8ff2SEmmanuel Vadot        compatible = "mediatek,mt7986-afe";
140*aa1a8ff2SEmmanuel Vadot        reg = <0x11210000 0x9000>;
141*aa1a8ff2SEmmanuel Vadot        interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
142*aa1a8ff2SEmmanuel Vadot        clocks = <&infracfg_ao CLK_INFRA_AUD_BUS_CK>,
143*aa1a8ff2SEmmanuel Vadot                 <&infracfg_ao CLK_INFRA_AUD_26M_CK>,
144*aa1a8ff2SEmmanuel Vadot                 <&infracfg_ao CLK_INFRA_AUD_L_CK>,
145*aa1a8ff2SEmmanuel Vadot                 <&infracfg_ao CLK_INFRA_AUD_AUD_CK>,
146*aa1a8ff2SEmmanuel Vadot                 <&infracfg_ao CLK_INFRA_AUD_EG2_CK>;
147*aa1a8ff2SEmmanuel Vadot        clock-names = "bus_ck",
148*aa1a8ff2SEmmanuel Vadot                      "26m_ck",
149*aa1a8ff2SEmmanuel Vadot                      "l_ck",
150*aa1a8ff2SEmmanuel Vadot                      "aud_ck",
151*aa1a8ff2SEmmanuel Vadot                      "eg2_ck";
152*aa1a8ff2SEmmanuel Vadot        assigned-clocks = <&topckgen CLK_TOP_A1SYS_SEL>,
153*aa1a8ff2SEmmanuel Vadot                          <&topckgen CLK_TOP_AUD_L_SEL>,
154*aa1a8ff2SEmmanuel Vadot                          <&topckgen CLK_TOP_A_TUNER_SEL>;
155*aa1a8ff2SEmmanuel Vadot        assigned-clock-parents = <&topckgen CLK_TOP_APLL2_D4>,
156*aa1a8ff2SEmmanuel Vadot                                 <&apmixedsys CLK_APMIXED_APLL2>,
157*aa1a8ff2SEmmanuel Vadot                                 <&topckgen CLK_TOP_APLL2_D4>;
158*aa1a8ff2SEmmanuel Vadot    };
159*aa1a8ff2SEmmanuel Vadot
160*aa1a8ff2SEmmanuel Vadot...
161