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