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