Merge tag 'ntb-5.11' of git://github.com/jonmason/ntb
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / sound / qcom,lpass-cpu.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/sound/qcom,lpass-cpu.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm Technologies Inc. LPASS CPU dai driver bindings
8
9 maintainers:
10   - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11   - Rohit kumar <rohitkr@codeaurora.org>
12
13 description: |
14   Qualcomm Technologies Inc. SOC Low-Power Audio SubSystem (LPASS) that consist
15   of MI2S interface for audio data transfer on external codecs. LPASS cpu driver
16   is a module to configure Low-Power Audio Interface(LPAIF) core registers
17   across different IP versions.
18
19 properties:
20   compatible:
21     enum:
22       - qcom,lpass-cpu
23       - qcom,apq8016-lpass-cpu
24       - qcom,sc7180-lpass-cpu
25
26   reg:
27     maxItems: 2
28     description: LPAIF core registers
29
30   reg-names:
31     maxItems: 2
32
33   clocks:
34     minItems: 3
35     maxItems: 6
36
37   clock-names:
38     minItems: 3
39     maxItems: 6
40
41   interrupts:
42     maxItems: 2
43     description: LPAIF DMA buffer interrupt
44
45   interrupt-names:
46     maxItems: 2
47
48   qcom,adsp:
49     $ref: /schemas/types.yaml#/definitions/phandle
50     description: Phandle for the audio DSP node
51
52   iommus:
53     maxItems: 2
54     description: Phandle to apps_smmu node with sid mask
55
56   power-domains:
57     maxItems: 1
58
59   '#sound-dai-cells':
60     const: 1
61
62   '#address-cells':
63     const: 1
64
65   '#size-cells':
66     const: 0
67
68 patternProperties:
69   "^dai-link@[0-9a-f]$":
70     type: object
71     description: |
72       LPASS CPU dai node for each I2S device. Bindings of each node
73       depends on the specific driver providing the functionality and
74       properties.
75     properties:
76       reg:
77         maxItems: 1
78         description: Must be one of the DAI ID
79
80       qcom,playback-sd-lines:
81         $ref: /schemas/types.yaml#/definitions/uint32-array
82         description: list of MI2S data lines for playback
83
84       qcom,capture-sd-lines:
85         $ref: /schemas/types.yaml#/definitions/uint32-array
86         description: list of MI2S data lines for capture
87
88     required:
89       - reg
90
91     additionalProperties: false
92
93 required:
94   - compatible
95   - reg
96   - reg-names
97   - clocks
98   - clock-names
99   - interrupts
100   - interrupt-names
101   - '#sound-dai-cells'
102
103 additionalProperties: false
104
105 allOf:
106   - if:
107       properties:
108         compatible:
109           contains:
110             const: qcom,lpass-cpu
111
112     then:
113       properties:
114         clock-names:
115           items:
116             - const: ahbix-clk
117             - const: mi2s-osr-clk
118             - const: mi2s-bit-clk
119
120   - if:
121       properties:
122         compatible:
123           contains:
124             const: qcom,apq8016-lpass-cpu
125
126     then:
127       properties:
128         clock-names:
129           items:
130             - const: ahbix-clk
131             - const: mi2s-bit-clk0
132             - const: mi2s-bit-clk1
133             - const: mi2s-bit-clk2
134             - const: mi2s-bit-clk3
135             - const: pcnoc-mport-clk
136             - const: pcnoc-sway-clk
137
138   - if:
139       properties:
140         compatible:
141           contains:
142             const: qcom,sc7180-lpass-cpu
143
144     then:
145       properties:
146         clock-names:
147           oneOf:
148             - items:   #for I2S
149                 - const: pcnoc-sway-clk
150                 - const: audio-core
151                 - const: mclk0
152                 - const: pcnoc-mport-clk
153                 - const: mi2s-bit-clk0
154                 - const: mi2s-bit-clk1
155             - items:   #for HDMI
156                 - const: pcnoc-sway-clk
157                 - const: audio-core
158                 - const: pcnoc-mport-clk
159         reg-names:
160           anyOf:
161             - items:   #for I2S
162                 - const: lpass-lpaif
163             - items:   #for I2S and HDMI
164                 - const: lpass-hdmiif
165                 - const: lpass-lpaif
166         interrupt-names:
167           anyOf:
168             - items:   #for I2S
169                 - const: lpass-irq-lpaif
170             - items:   #for I2S and HDMI
171                 - const: lpass-irq-lpaif
172                 - const: lpass-irq-hdmi
173       required:
174         - iommus
175         - power-domains
176
177 examples:
178   - |
179     #include <dt-bindings/sound/sc7180-lpass.h>
180
181     soc {
182         #address-cells = <2>;
183         #size-cells = <2>;
184         lpass@62d80000 {
185             compatible = "qcom,sc7180-lpass-cpu";
186
187             reg = <0 0x62d87000 0 0x68000>,
188                   <0 0x62f00000 0 0x29000>;
189             reg-names = "lpass-hdmiif",
190                         "lpass-lpaif";
191             iommus = <&apps_smmu 0x1020 0>,
192                      <&apps_smmu 0x1032 0>;
193             power-domains = <&lpass_hm 0>;
194
195             clocks = <&gcc 131>,
196                  <&lpasscorecc 6>,
197                  <&lpasscorecc 7>,
198                  <&lpasscorecc 10>,
199                  <&lpasscorecc 8>,
200                  <&lpasscorecc 9>;
201
202             clock-names = "pcnoc-sway-clk", "audio-core",
203                           "mclk0", "pcnoc-mport-clk",
204                           "mi2s-bit-clk0", "mi2s-bit-clk1";
205
206             interrupts = <0 160 1>,
207                          <0 268 1>;
208             interrupt-names = "lpass-irq-lpaif",
209                               "lpass-irq-hdmi";
210             #sound-dai-cells = <1>;
211
212             #address-cells = <1>;
213             #size-cells = <0>;
214             /* Optional to set different MI2S SD lines */
215             dai-link@0 {
216                 reg = <MI2S_PRIMARY>;
217                 qcom,playback-sd-lines = <1>;
218                 qcom,capture-sd-lines = <0>;
219             };
220         };
221     };
222
223 ...