18c2ecf20Sopenharmony_ciQualcomm WCNSS Peripheral Image Loader
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThis document defines the binding for a component that loads and boots firmware
48c2ecf20Sopenharmony_cion the Qualcomm WCNSS core.
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci- compatible:
78c2ecf20Sopenharmony_ci	Usage: required
88c2ecf20Sopenharmony_ci	Value type: <string>
98c2ecf20Sopenharmony_ci	Definition: must be one of:
108c2ecf20Sopenharmony_ci		    "qcom,riva-pil",
118c2ecf20Sopenharmony_ci		    "qcom,pronto-v1-pil",
128c2ecf20Sopenharmony_ci		    "qcom,pronto-v2-pil"
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci- reg:
158c2ecf20Sopenharmony_ci	Usage: required
168c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
178c2ecf20Sopenharmony_ci	Definition: must specify the base address and size of the CCU, DXE and
188c2ecf20Sopenharmony_ci		    PMU register blocks
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci- reg-names:
218c2ecf20Sopenharmony_ci	Usage: required
228c2ecf20Sopenharmony_ci	Value type: <stringlist>
238c2ecf20Sopenharmony_ci	Definition: must be "ccu", "dxe", "pmu"
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci- interrupts-extended:
268c2ecf20Sopenharmony_ci	Usage: required
278c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
288c2ecf20Sopenharmony_ci	Definition: must list the watchdog and fatal IRQs and may specify the
298c2ecf20Sopenharmony_ci		    ready, handover and stop-ack IRQs
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci- interrupt-names:
328c2ecf20Sopenharmony_ci	Usage: required
338c2ecf20Sopenharmony_ci	Value type: <stringlist>
348c2ecf20Sopenharmony_ci	Definition: should be "wdog", "fatal", optionally followed by "ready",
358c2ecf20Sopenharmony_ci		    "handover", "stop-ack"
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci- vddmx-supply:
388c2ecf20Sopenharmony_ci- vddcx-supply:
398c2ecf20Sopenharmony_ci- vddpx-supply:
408c2ecf20Sopenharmony_ci	Usage: required
418c2ecf20Sopenharmony_ci	Value type: <phandle>
428c2ecf20Sopenharmony_ci	Definition: reference to the regulators to be held on behalf of the
438c2ecf20Sopenharmony_ci		    booting of the WCNSS core
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci- qcom,smem-states:
468c2ecf20Sopenharmony_ci	Usage: optional
478c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
488c2ecf20Sopenharmony_ci	Definition: reference to the SMEM state used to indicate to WCNSS that
498c2ecf20Sopenharmony_ci		    it should shut down
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci- qcom,smem-state-names:
528c2ecf20Sopenharmony_ci	Usage: optional
538c2ecf20Sopenharmony_ci	Value type: <stringlist>
548c2ecf20Sopenharmony_ci	Definition: should be "stop"
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci- memory-region:
578c2ecf20Sopenharmony_ci	Usage: required
588c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
598c2ecf20Sopenharmony_ci	Definition: reference to reserved-memory node for the remote processor
608c2ecf20Sopenharmony_ci		    see ../reserved-memory/reserved-memory.txt
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci= SUBNODES
638c2ecf20Sopenharmony_ciA required subnode of the WCNSS PIL is used to describe the attached rf module
648c2ecf20Sopenharmony_ciand its resource dependencies. It is described by the following properties:
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci- compatible:
678c2ecf20Sopenharmony_ci	Usage: required
688c2ecf20Sopenharmony_ci	Value type: <string>
698c2ecf20Sopenharmony_ci	Definition: must be one of:
708c2ecf20Sopenharmony_ci		    "qcom,wcn3620",
718c2ecf20Sopenharmony_ci		    "qcom,wcn3660",
728c2ecf20Sopenharmony_ci		    "qcom,wcn3680"
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci- clocks:
758c2ecf20Sopenharmony_ci	Usage: required
768c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
778c2ecf20Sopenharmony_ci	Definition: should specify the xo clock and optionally the rf clock
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci- clock-names:
808c2ecf20Sopenharmony_ci	Usage: required
818c2ecf20Sopenharmony_ci	Value type: <stringlist>
828c2ecf20Sopenharmony_ci	Definition: should be "xo", optionally followed by "rf"
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci- vddxo-supply:
858c2ecf20Sopenharmony_ci- vddrfa-supply:
868c2ecf20Sopenharmony_ci- vddpa-supply:
878c2ecf20Sopenharmony_ci- vdddig-supply:
888c2ecf20Sopenharmony_ci	Usage: required
898c2ecf20Sopenharmony_ci	Value type: <phandle>
908c2ecf20Sopenharmony_ci	Definition: reference to the regulators to be held on behalf of the
918c2ecf20Sopenharmony_ci		    booting of the WCNSS core
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ciThe wcnss node can also have an subnode named "smd-edge" that describes the SMD
958c2ecf20Sopenharmony_ciedge, channels and devices related to the WCNSS.
968c2ecf20Sopenharmony_ciSee ../soc/qcom/qcom,smd.txt for details on how to describe the SMD edge.
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci= EXAMPLE
998c2ecf20Sopenharmony_ciThe following example describes the resources needed to boot control the WCNSS,
1008c2ecf20Sopenharmony_ciwith attached WCN3680, as it is commonly found on MSM8974 boards.
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_cipronto@fb204000 {
1038c2ecf20Sopenharmony_ci	compatible = "qcom,pronto-v2-pil";
1048c2ecf20Sopenharmony_ci	reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>;
1058c2ecf20Sopenharmony_ci	reg-names = "ccu", "dxe", "pmu";
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci	interrupts-extended = <&intc 0 149 1>,
1088c2ecf20Sopenharmony_ci			      <&wcnss_smp2p_slave 0 0>,
1098c2ecf20Sopenharmony_ci			      <&wcnss_smp2p_slave 1 0>,
1108c2ecf20Sopenharmony_ci			      <&wcnss_smp2p_slave 2 0>,
1118c2ecf20Sopenharmony_ci			      <&wcnss_smp2p_slave 3 0>;
1128c2ecf20Sopenharmony_ci	interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci	vddmx-supply = <&pm8841_s1>;
1158c2ecf20Sopenharmony_ci	vddcx-supply = <&pm8841_s2>;
1168c2ecf20Sopenharmony_ci	vddpx-supply = <&pm8941_s3>;
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci	qcom,smem-states = <&wcnss_smp2p_out 0>;
1198c2ecf20Sopenharmony_ci	qcom,smem-state-names = "stop";
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci	memory-region = <&wcnss_region>;
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci	pinctrl-names = "default";
1248c2ecf20Sopenharmony_ci	pinctrl-0 = <&wcnss_pin_a>;
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ci	iris {
1278c2ecf20Sopenharmony_ci		compatible = "qcom,wcn3680";
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ci		clocks = <&rpmcc RPM_CXO_CLK_SRC>, <&rpmcc RPM_CXO_A2>;
1308c2ecf20Sopenharmony_ci		clock-names = "xo", "rf";
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci		vddxo-supply = <&pm8941_l6>;
1338c2ecf20Sopenharmony_ci		vddrfa-supply = <&pm8941_l11>;
1348c2ecf20Sopenharmony_ci		vddpa-supply = <&pm8941_l19>;
1358c2ecf20Sopenharmony_ci		vdddig-supply = <&pm8941_s3>;
1368c2ecf20Sopenharmony_ci	};
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ci	smd-edge {
1398c2ecf20Sopenharmony_ci		interrupts = <0 142 1>;
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci		qcom,ipc = <&apcs 8 17>;
1428c2ecf20Sopenharmony_ci		qcom,smd-edge = <6>;
1438c2ecf20Sopenharmony_ci		qcom,remote-pid = <4>;
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ci		label = "pronto";
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci		wcnss {
1488c2ecf20Sopenharmony_ci			compatible = "qcom,wcnss";
1498c2ecf20Sopenharmony_ci			qcom,smd-channels = "WCNSS_CTRL";
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci			qcom,mmio = <&pronto>;
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ci			bt {
1548c2ecf20Sopenharmony_ci				compatible = "qcom,wcnss-bt";
1558c2ecf20Sopenharmony_ci			};
1568c2ecf20Sopenharmony_ci		};
1578c2ecf20Sopenharmony_ci	};
1588c2ecf20Sopenharmony_ci};
159