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