xref: /freebsd-src/sys/contrib/device-tree/Bindings/remoteproc/qcom,wcnss-pil.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1cb7aa33aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2cb7aa33aSEmmanuel Vadot%YAML 1.2
3cb7aa33aSEmmanuel Vadot---
4cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/remoteproc/qcom,wcnss-pil.yaml#
5cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6cb7aa33aSEmmanuel Vadot
7cb7aa33aSEmmanuel Vadottitle: Qualcomm WCNSS Peripheral Image Loader
8cb7aa33aSEmmanuel Vadot
9cb7aa33aSEmmanuel Vadotmaintainers:
10cb7aa33aSEmmanuel Vadot  - Bjorn Andersson <andersson@kernel.org>
11cb7aa33aSEmmanuel Vadot
12cb7aa33aSEmmanuel Vadotdescription:
13cb7aa33aSEmmanuel Vadot  This document defines the binding for a component that loads and boots
14cb7aa33aSEmmanuel Vadot  firmware on the Qualcomm WCNSS core.
15cb7aa33aSEmmanuel Vadot
16cb7aa33aSEmmanuel Vadotproperties:
17cb7aa33aSEmmanuel Vadot  compatible:
18cb7aa33aSEmmanuel Vadot    description:
19cb7aa33aSEmmanuel Vadot      Append "qcom,pronto" if the device is actually pronto, and not riva
20cb7aa33aSEmmanuel Vadot    oneOf:
21cb7aa33aSEmmanuel Vadot      - items:
22cb7aa33aSEmmanuel Vadot          - enum:
23cb7aa33aSEmmanuel Vadot              - qcom,pronto-v1-pil
24cb7aa33aSEmmanuel Vadot              - qcom,pronto-v2-pil
25cb7aa33aSEmmanuel Vadot              - qcom,pronto-v3-pil
26cb7aa33aSEmmanuel Vadot          - const: qcom,pronto
27cb7aa33aSEmmanuel Vadot      - const: qcom,riva-pil
28cb7aa33aSEmmanuel Vadot
29cb7aa33aSEmmanuel Vadot  reg:
30cb7aa33aSEmmanuel Vadot    maxItems: 3
31cb7aa33aSEmmanuel Vadot    description:
32cb7aa33aSEmmanuel Vadot      The base address and size of the CCU, DXE and PMU register blocks
33cb7aa33aSEmmanuel Vadot
34cb7aa33aSEmmanuel Vadot  reg-names:
35cb7aa33aSEmmanuel Vadot    items:
36cb7aa33aSEmmanuel Vadot      - const: ccu
37cb7aa33aSEmmanuel Vadot      - const: dxe
38cb7aa33aSEmmanuel Vadot      - const: pmu
39cb7aa33aSEmmanuel Vadot
40cb7aa33aSEmmanuel Vadot  interrupts:
41cb7aa33aSEmmanuel Vadot    minItems: 2
42cb7aa33aSEmmanuel Vadot    maxItems: 5
43cb7aa33aSEmmanuel Vadot
44cb7aa33aSEmmanuel Vadot  interrupt-names:
45cb7aa33aSEmmanuel Vadot    minItems: 2
46cb7aa33aSEmmanuel Vadot    items:
47cb7aa33aSEmmanuel Vadot      - const: wdog
48cb7aa33aSEmmanuel Vadot      - const: fatal
49cb7aa33aSEmmanuel Vadot      - const: ready
50cb7aa33aSEmmanuel Vadot      - const: handover
51cb7aa33aSEmmanuel Vadot      - const: stop-ack
52cb7aa33aSEmmanuel Vadot
53cb7aa33aSEmmanuel Vadot  firmware-name:
54*01950c46SEmmanuel Vadot    maxItems: 1
55cb7aa33aSEmmanuel Vadot    description:
56cb7aa33aSEmmanuel Vadot      Relative firmware image path for the WCNSS core. Defaults to
57cb7aa33aSEmmanuel Vadot      "wcnss.mdt".
58cb7aa33aSEmmanuel Vadot
59cb7aa33aSEmmanuel Vadot  vddpx-supply:
60cb7aa33aSEmmanuel Vadot    description:
61cb7aa33aSEmmanuel Vadot      PX regulator to be held on behalf of the booting of the WCNSS core
62cb7aa33aSEmmanuel Vadot
63cb7aa33aSEmmanuel Vadot  vddmx-supply:
64cb7aa33aSEmmanuel Vadot    description:
65cb7aa33aSEmmanuel Vadot      MX regulator to be held on behalf of the booting of the WCNSS core.
66cb7aa33aSEmmanuel Vadot
67cb7aa33aSEmmanuel Vadot  vddcx-supply:
68cb7aa33aSEmmanuel Vadot    description:
69cb7aa33aSEmmanuel Vadot      CX regulator to be held on behalf of the booting of the WCNSS core.
70cb7aa33aSEmmanuel Vadot
71cb7aa33aSEmmanuel Vadot  power-domains:
72cb7aa33aSEmmanuel Vadot    maxItems: 2
73cb7aa33aSEmmanuel Vadot
74cb7aa33aSEmmanuel Vadot  power-domain-names:
75cb7aa33aSEmmanuel Vadot    items:
76cb7aa33aSEmmanuel Vadot      - const: cx
77cb7aa33aSEmmanuel Vadot      - const: mx
78cb7aa33aSEmmanuel Vadot
79cb7aa33aSEmmanuel Vadot  qcom,smem-states:
80cb7aa33aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
81cb7aa33aSEmmanuel Vadot    description:
82cb7aa33aSEmmanuel Vadot      States used by the AP to signal the WCNSS core that it should shutdown
83cb7aa33aSEmmanuel Vadot    items:
84cb7aa33aSEmmanuel Vadot      - description: Stop the modem
85cb7aa33aSEmmanuel Vadot
86cb7aa33aSEmmanuel Vadot  qcom,smem-state-names:
87cb7aa33aSEmmanuel Vadot    description: The names of the state bits used for SMP2P output
88cb7aa33aSEmmanuel Vadot    items:
89cb7aa33aSEmmanuel Vadot      - const: stop
90cb7aa33aSEmmanuel Vadot
91cb7aa33aSEmmanuel Vadot  memory-region:
92cb7aa33aSEmmanuel Vadot    maxItems: 1
93cb7aa33aSEmmanuel Vadot    description: reserved-memory for the WCNSS core
94cb7aa33aSEmmanuel Vadot
95cb7aa33aSEmmanuel Vadot  smd-edge:
96cb7aa33aSEmmanuel Vadot    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
97cb7aa33aSEmmanuel Vadot    description:
98cb7aa33aSEmmanuel Vadot      Qualcomm Shared Memory subnode which represents communication edge,
99cb7aa33aSEmmanuel Vadot      channels and devices related to the ADSP.
100cb7aa33aSEmmanuel Vadot
101cb7aa33aSEmmanuel Vadot  iris:
102cb7aa33aSEmmanuel Vadot    type: object
103cb7aa33aSEmmanuel Vadot    description:
104cb7aa33aSEmmanuel Vadot      The iris subnode of the WCNSS PIL is used to describe the attached RF module
105cb7aa33aSEmmanuel Vadot      and its resource dependencies.
106cb7aa33aSEmmanuel Vadot
107cb7aa33aSEmmanuel Vadot    properties:
108cb7aa33aSEmmanuel Vadot      compatible:
109cb7aa33aSEmmanuel Vadot        enum:
110cb7aa33aSEmmanuel Vadot          - qcom,wcn3620
111cb7aa33aSEmmanuel Vadot          - qcom,wcn3660
112cb7aa33aSEmmanuel Vadot          - qcom,wcn3660b
113cb7aa33aSEmmanuel Vadot          - qcom,wcn3680
114cb7aa33aSEmmanuel Vadot
115cb7aa33aSEmmanuel Vadot      clocks:
116cb7aa33aSEmmanuel Vadot        minItems: 1
117cb7aa33aSEmmanuel Vadot        items:
118cb7aa33aSEmmanuel Vadot          - description: XO clock
119cb7aa33aSEmmanuel Vadot          - description: RF clock
120cb7aa33aSEmmanuel Vadot
121cb7aa33aSEmmanuel Vadot      clock-names:
122cb7aa33aSEmmanuel Vadot        minItems: 1
123cb7aa33aSEmmanuel Vadot        items:
124cb7aa33aSEmmanuel Vadot          - const: xo
125cb7aa33aSEmmanuel Vadot          - const: rf
126cb7aa33aSEmmanuel Vadot
127cb7aa33aSEmmanuel Vadot      vddxo-supply:
128cb7aa33aSEmmanuel Vadot        description:
129cb7aa33aSEmmanuel Vadot          Reference to the regulator to be held on behalf of the booting WCNSS
130cb7aa33aSEmmanuel Vadot          core
131cb7aa33aSEmmanuel Vadot
132cb7aa33aSEmmanuel Vadot      vddrfa-supply:
133cb7aa33aSEmmanuel Vadot        description:
134cb7aa33aSEmmanuel Vadot          Reference to the regulator to be held on behalf of the booting WCNSS
135cb7aa33aSEmmanuel Vadot          core
136cb7aa33aSEmmanuel Vadot
137cb7aa33aSEmmanuel Vadot      vddpa-supply:
138cb7aa33aSEmmanuel Vadot        description:
139cb7aa33aSEmmanuel Vadot          Reference to the regulator to be held on behalf of the booting WCNSS
140cb7aa33aSEmmanuel Vadot          core
141cb7aa33aSEmmanuel Vadot
142cb7aa33aSEmmanuel Vadot      vdddig-supply:
143cb7aa33aSEmmanuel Vadot        description:
144cb7aa33aSEmmanuel Vadot          Reference to the regulator to be held on behalf of the booting WCNSS
145cb7aa33aSEmmanuel Vadot          core
146cb7aa33aSEmmanuel Vadot
147cb7aa33aSEmmanuel Vadot    required:
148cb7aa33aSEmmanuel Vadot      - compatible
149cb7aa33aSEmmanuel Vadot      - clocks
150cb7aa33aSEmmanuel Vadot      - clock-names
151cb7aa33aSEmmanuel Vadot      - vddxo-supply
152cb7aa33aSEmmanuel Vadot      - vddrfa-supply
153cb7aa33aSEmmanuel Vadot      - vddpa-supply
154cb7aa33aSEmmanuel Vadot      - vdddig-supply
155cb7aa33aSEmmanuel Vadot
156cb7aa33aSEmmanuel Vadot    additionalProperties: false
157cb7aa33aSEmmanuel Vadot
158cb7aa33aSEmmanuel Vadotrequired:
159cb7aa33aSEmmanuel Vadot  - compatible
160cb7aa33aSEmmanuel Vadot  - reg
161cb7aa33aSEmmanuel Vadot  - reg-names
162cb7aa33aSEmmanuel Vadot  - interrupts
163cb7aa33aSEmmanuel Vadot  - interrupt-names
164cb7aa33aSEmmanuel Vadot  - iris
165cb7aa33aSEmmanuel Vadot  - vddpx-supply
166cb7aa33aSEmmanuel Vadot  - memory-region
167cb7aa33aSEmmanuel Vadot  - smd-edge
168cb7aa33aSEmmanuel Vadot
169cb7aa33aSEmmanuel VadotadditionalProperties: false
170cb7aa33aSEmmanuel Vadot
171cb7aa33aSEmmanuel VadotallOf:
172cb7aa33aSEmmanuel Vadot  - if:
173cb7aa33aSEmmanuel Vadot      properties:
174cb7aa33aSEmmanuel Vadot        compatible:
175cb7aa33aSEmmanuel Vadot          contains:
176cb7aa33aSEmmanuel Vadot            const: qcom,riva-pil
177cb7aa33aSEmmanuel Vadot    then:
178cb7aa33aSEmmanuel Vadot      required:
179cb7aa33aSEmmanuel Vadot        - vddcx-supply
180cb7aa33aSEmmanuel Vadot        - vddmx-supply
181cb7aa33aSEmmanuel Vadot
182cb7aa33aSEmmanuel Vadot  - if:
183cb7aa33aSEmmanuel Vadot      properties:
184cb7aa33aSEmmanuel Vadot        compatible:
185cb7aa33aSEmmanuel Vadot          contains:
186cb7aa33aSEmmanuel Vadot            enum:
187cb7aa33aSEmmanuel Vadot              - qcom,pronto-v1-pil
188cb7aa33aSEmmanuel Vadot              - qcom,pronto-v2-pil
189cb7aa33aSEmmanuel Vadot    then:
190cb7aa33aSEmmanuel Vadot      properties:
191cb7aa33aSEmmanuel Vadot        vddmx-supply:
192cb7aa33aSEmmanuel Vadot          deprecated: true
193cb7aa33aSEmmanuel Vadot          description: Deprecated for qcom,pronto-v1/2-pil
194cb7aa33aSEmmanuel Vadot
195cb7aa33aSEmmanuel Vadot        vddcx-supply:
196cb7aa33aSEmmanuel Vadot          deprecated: true
197cb7aa33aSEmmanuel Vadot          description: Deprecated for qcom,pronto-v1/2-pil
198cb7aa33aSEmmanuel Vadot
199cb7aa33aSEmmanuel Vadot      oneOf:
200cb7aa33aSEmmanuel Vadot        - required:
201cb7aa33aSEmmanuel Vadot            - power-domains
202cb7aa33aSEmmanuel Vadot            - power-domain-names
203cb7aa33aSEmmanuel Vadot        - required:
204cb7aa33aSEmmanuel Vadot            - vddmx-supply
205cb7aa33aSEmmanuel Vadot            - vddcx-supply
206cb7aa33aSEmmanuel Vadot
207cb7aa33aSEmmanuel Vadot  - if:
208cb7aa33aSEmmanuel Vadot      properties:
209cb7aa33aSEmmanuel Vadot        compatible:
210cb7aa33aSEmmanuel Vadot          contains:
211cb7aa33aSEmmanuel Vadot            enum:
212cb7aa33aSEmmanuel Vadot              - qcom,pronto-v3-pil
213cb7aa33aSEmmanuel Vadot    then:
214cb7aa33aSEmmanuel Vadot      properties:
215cb7aa33aSEmmanuel Vadot        vddmx-supply: false
216cb7aa33aSEmmanuel Vadot        vddcx-supply: false
217cb7aa33aSEmmanuel Vadot
218cb7aa33aSEmmanuel Vadot      required:
219cb7aa33aSEmmanuel Vadot        - power-domains
220cb7aa33aSEmmanuel Vadot        - power-domain-names
221cb7aa33aSEmmanuel Vadot
222cb7aa33aSEmmanuel Vadotexamples:
223cb7aa33aSEmmanuel Vadot  - |
224cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
225cb7aa33aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmcc.h>
226cb7aa33aSEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
227cb7aa33aSEmmanuel Vadot    pronto@a21b000 {
228cb7aa33aSEmmanuel Vadot        compatible = "qcom,pronto-v2-pil", "qcom,pronto";
229cb7aa33aSEmmanuel Vadot        reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
230cb7aa33aSEmmanuel Vadot        reg-names = "ccu", "dxe", "pmu";
231cb7aa33aSEmmanuel Vadot
232cb7aa33aSEmmanuel Vadot        interrupts-extended = <&intc GIC_SPI 149 IRQ_TYPE_EDGE_RISING>,
233cb7aa33aSEmmanuel Vadot                              <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
234cb7aa33aSEmmanuel Vadot                              <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
235cb7aa33aSEmmanuel Vadot                              <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
236cb7aa33aSEmmanuel Vadot                              <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
237cb7aa33aSEmmanuel Vadot        interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
238cb7aa33aSEmmanuel Vadot
239cb7aa33aSEmmanuel Vadot        power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>;
240cb7aa33aSEmmanuel Vadot        power-domain-names = "cx", "mx";
241cb7aa33aSEmmanuel Vadot
242cb7aa33aSEmmanuel Vadot        vddpx-supply = <&pm8916_l7>;
243cb7aa33aSEmmanuel Vadot
244cb7aa33aSEmmanuel Vadot        qcom,smem-states = <&wcnss_smp2p_out 0>;
245cb7aa33aSEmmanuel Vadot        qcom,smem-state-names = "stop";
246cb7aa33aSEmmanuel Vadot
247cb7aa33aSEmmanuel Vadot        memory-region = <&wcnss_region>;
248cb7aa33aSEmmanuel Vadot
249cb7aa33aSEmmanuel Vadot        pinctrl-names = "default";
250cb7aa33aSEmmanuel Vadot        pinctrl-0 = <&wcnss_pin_a>;
251cb7aa33aSEmmanuel Vadot
252cb7aa33aSEmmanuel Vadot        iris {
253cb7aa33aSEmmanuel Vadot            compatible = "qcom,wcn3620";
254cb7aa33aSEmmanuel Vadot            vddxo-supply = <&pm8916_l7>;
255cb7aa33aSEmmanuel Vadot            vddrfa-supply = <&pm8916_s3>;
256cb7aa33aSEmmanuel Vadot            vddpa-supply = <&pm8916_l9>;
257cb7aa33aSEmmanuel Vadot            vdddig-supply = <&pm8916_l5>;
258cb7aa33aSEmmanuel Vadot
259cb7aa33aSEmmanuel Vadot            clocks = <&rpmcc RPM_SMD_RF_CLK2>;
260cb7aa33aSEmmanuel Vadot            clock-names = "xo";
261cb7aa33aSEmmanuel Vadot        };
262cb7aa33aSEmmanuel Vadot
263cb7aa33aSEmmanuel Vadot        smd-edge {
264cb7aa33aSEmmanuel Vadot            interrupts = <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>;
265cb7aa33aSEmmanuel Vadot
266cb7aa33aSEmmanuel Vadot            qcom,ipc = <&apcs 8 17>;
267cb7aa33aSEmmanuel Vadot            qcom,smd-edge = <6>;
268cb7aa33aSEmmanuel Vadot            qcom,remote-pid = <4>;
269cb7aa33aSEmmanuel Vadot
270cb7aa33aSEmmanuel Vadot            label = "pronto";
271cb7aa33aSEmmanuel Vadot
272cb7aa33aSEmmanuel Vadot            wcnss_ctrl: wcnss {
273cb7aa33aSEmmanuel Vadot                compatible = "qcom,wcnss";
274cb7aa33aSEmmanuel Vadot                qcom,smd-channels = "WCNSS_CTRL";
275cb7aa33aSEmmanuel Vadot
276cb7aa33aSEmmanuel Vadot                qcom,mmio = <&pronto>;
277cb7aa33aSEmmanuel Vadot
278cb7aa33aSEmmanuel Vadot                bluetooth {
279cb7aa33aSEmmanuel Vadot                    compatible = "qcom,wcnss-bt";
280cb7aa33aSEmmanuel Vadot                };
281cb7aa33aSEmmanuel Vadot
282cb7aa33aSEmmanuel Vadot                wifi {
283cb7aa33aSEmmanuel Vadot                    compatible = "qcom,wcnss-wlan";
284cb7aa33aSEmmanuel Vadot
285cb7aa33aSEmmanuel Vadot                    interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
286cb7aa33aSEmmanuel Vadot                                 <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
287cb7aa33aSEmmanuel Vadot                    interrupt-names = "tx", "rx";
288cb7aa33aSEmmanuel Vadot
289cb7aa33aSEmmanuel Vadot                    qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>;
290cb7aa33aSEmmanuel Vadot                    qcom,smem-state-names = "tx-enable", "tx-rings-empty";
291cb7aa33aSEmmanuel Vadot                };
292cb7aa33aSEmmanuel Vadot            };
293cb7aa33aSEmmanuel Vadot        };
294cb7aa33aSEmmanuel Vadot    };
295