1Qualcomm WCNSS Peripheral Image Loader
2
3This document defines the binding for a component that loads and boots firmware
4on the Qualcomm WCNSS core.
5
6- compatible:
7	Usage: required
8	Value type: <string>
9	Definition: must be one of:
10		    "qcom,riva-pil",
11		    "qcom,pronto-v1-pil",
12		    "qcom,pronto-v2-pil"
13
14- reg:
15	Usage: required
16	Value type: <prop-encoded-array>
17	Definition: must specify the base address and size of the CCU, DXE and
18		    PMU register blocks
19
20- reg-names:
21	Usage: required
22	Value type: <stringlist>
23	Definition: must be "ccu", "dxe", "pmu"
24
25- interrupts-extended:
26	Usage: required
27	Value type: <prop-encoded-array>
28	Definition: must list the watchdog and fatal IRQs and may specify the
29		    ready, handover and stop-ack IRQs
30
31- interrupt-names:
32	Usage: required
33	Value type: <stringlist>
34	Definition: should be "wdog", "fatal", optionally followed by "ready",
35		    "handover", "stop-ack"
36
37- firmware-name:
38	Usage: optional
39	Value type: <string>
40	Definition: must list the relative firmware image path for the
41		    WCNSS core. Defaults to "wcnss.mdt".
42
43- vddmx-supply: (deprecated for qcom,pronto-v1/2-pil)
44- vddcx-supply: (deprecated for qcom,pronto-v1/2-pil)
45- vddpx-supply:
46	Usage: required
47	Value type: <phandle>
48	Definition: reference to the regulators to be held on behalf of the
49		    booting of the WCNSS core
50
51- power-domains:
52	Usage: required (for qcom,pronto-v1/2-pil)
53	Value type: <phandle>
54	Definition: reference to the power domains to be held on behalf of the
55		    booting of the WCNSS core
56
57- power-domain-names:
58	Usage: required (for qcom,pronto-v1/2-pil)
59	Value type: <stringlist>
60	Definition: must be "cx", "mx"
61
62- qcom,smem-states:
63	Usage: optional
64	Value type: <prop-encoded-array>
65	Definition: reference to the SMEM state used to indicate to WCNSS that
66		    it should shut down
67
68- qcom,smem-state-names:
69	Usage: optional
70	Value type: <stringlist>
71	Definition: should be "stop"
72
73- memory-region:
74	Usage: required
75	Value type: <prop-encoded-array>
76	Definition: reference to reserved-memory node for the remote processor
77		    see ../reserved-memory/reserved-memory.txt
78
79= SUBNODES
80A required subnode of the WCNSS PIL is used to describe the attached rf module
81and its resource dependencies. It is described by the following properties:
82
83- compatible:
84	Usage: required
85	Value type: <string>
86	Definition: must be one of:
87		    "qcom,wcn3620",
88		    "qcom,wcn3660",
89		    "qcom,wcn3660b",
90		    "qcom,wcn3680"
91
92- clocks:
93	Usage: required
94	Value type: <prop-encoded-array>
95	Definition: should specify the xo clock and optionally the rf clock
96
97- clock-names:
98	Usage: required
99	Value type: <stringlist>
100	Definition: should be "xo", optionally followed by "rf"
101
102- vddxo-supply:
103- vddrfa-supply:
104- vddpa-supply:
105- vdddig-supply:
106	Usage: required
107	Value type: <phandle>
108	Definition: reference to the regulators to be held on behalf of the
109		    booting of the WCNSS core
110
111
112The wcnss node can also have an subnode named "smd-edge" that describes the SMD
113edge, channels and devices related to the WCNSS.
114See ../soc/qcom/qcom,smd.yaml for details on how to describe the SMD edge.
115
116= EXAMPLE
117The following example describes the resources needed to boot control the WCNSS,
118with attached WCN3680, as it is commonly found on MSM8974 boards.
119
120pronto@fb204000 {
121	compatible = "qcom,pronto-v2-pil";
122	reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>;
123	reg-names = "ccu", "dxe", "pmu";
124
125	interrupts-extended = <&intc 0 149 1>,
126			      <&wcnss_smp2p_slave 0 0>,
127			      <&wcnss_smp2p_slave 1 0>,
128			      <&wcnss_smp2p_slave 2 0>,
129			      <&wcnss_smp2p_slave 3 0>;
130	interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
131
132	power-domains = <&rpmpd MSM8974_VDDCX>, <&rpmpd MSM8974_VDDMX>;
133	power-domain-names = "cx", "mx";
134
135	vddpx-supply = <&pm8941_s3>;
136
137	qcom,smem-states = <&wcnss_smp2p_out 0>;
138	qcom,smem-state-names = "stop";
139
140	memory-region = <&wcnss_region>;
141
142	pinctrl-names = "default";
143	pinctrl-0 = <&wcnss_pin_a>;
144
145	iris {
146		compatible = "qcom,wcn3680";
147
148		clocks = <&rpmcc RPM_CXO_CLK_SRC>, <&rpmcc RPM_CXO_A2>;
149		clock-names = "xo", "rf";
150
151		vddxo-supply = <&pm8941_l6>;
152		vddrfa-supply = <&pm8941_l11>;
153		vddpa-supply = <&pm8941_l19>;
154		vdddig-supply = <&pm8941_s3>;
155	};
156
157	smd-edge {
158		interrupts = <0 142 1>;
159
160		qcom,ipc = <&apcs 8 17>;
161		qcom,smd-edge = <6>;
162		qcom,remote-pid = <4>;
163
164		label = "pronto";
165
166		wcnss {
167			compatible = "qcom,wcnss";
168			qcom,smd-channels = "WCNSS_CTRL";
169
170			qcom,mmio = <&pronto>;
171
172			bt {
173				compatible = "qcom,wcnss-bt";
174			};
175		};
176	};
177};
178