1*4882a593SmuzhiyunQualcomm WCNSS Binding 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunThis binding describes the Qualcomm WCNSS hardware. It consists of control 4*4882a593Smuzhiyunblock and a BT, WiFi and FM radio block, all using SMD as command channels. 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun- compatible: 7*4882a593Smuzhiyun Usage: required 8*4882a593Smuzhiyun Value type: <string> 9*4882a593Smuzhiyun Definition: must be: "qcom,wcnss", 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun- qcom,smd-channel: 12*4882a593Smuzhiyun Usage: required 13*4882a593Smuzhiyun Value type: <string> 14*4882a593Smuzhiyun Definition: standard SMD property specifying the SMD channel used for 15*4882a593Smuzhiyun communication with the WiFi firmware. 16*4882a593Smuzhiyun Should be "WCNSS_CTRL". 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun- qcom,mmio: 19*4882a593Smuzhiyun Usage: required 20*4882a593Smuzhiyun Value type: <prop-encoded-array> 21*4882a593Smuzhiyun Definition: reference to a node specifying the wcnss "ccu" and "dxe" 22*4882a593Smuzhiyun register blocks. The node must be compatible with one of 23*4882a593Smuzhiyun the following: 24*4882a593Smuzhiyun "qcom,riva", 25*4882a593Smuzhiyun "qcom,pronto" 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun= SUBNODES 28*4882a593SmuzhiyunThe subnodes of the wcnss node are optional and describe the individual blocks in 29*4882a593Smuzhiyunthe WCNSS. 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun== Bluetooth 32*4882a593SmuzhiyunThe following properties are defined to the bluetooth node: 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun- compatible: 35*4882a593Smuzhiyun Usage: required 36*4882a593Smuzhiyun Value type: <string> 37*4882a593Smuzhiyun Definition: must be: 38*4882a593Smuzhiyun "qcom,wcnss-bt" 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun- local-bd-address: 41*4882a593Smuzhiyun Usage: optional 42*4882a593Smuzhiyun Value type: <u8 array> 43*4882a593Smuzhiyun Definition: see Documentation/devicetree/bindings/net/bluetooth.txt 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun== WiFi 46*4882a593SmuzhiyunThe following properties are defined to the WiFi node: 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun- compatible: 49*4882a593Smuzhiyun Usage: required 50*4882a593Smuzhiyun Value type: <string> 51*4882a593Smuzhiyun Definition: must be one of: 52*4882a593Smuzhiyun "qcom,wcnss-wlan", 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun- interrupts: 55*4882a593Smuzhiyun Usage: required 56*4882a593Smuzhiyun Value type: <prop-encoded-array> 57*4882a593Smuzhiyun Definition: should specify the "rx" and "tx" interrupts 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun- interrupt-names: 60*4882a593Smuzhiyun Usage: required 61*4882a593Smuzhiyun Value type: <stringlist> 62*4882a593Smuzhiyun Definition: must contain "rx" and "tx" 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun- qcom,smem-state: 65*4882a593Smuzhiyun Usage: required 66*4882a593Smuzhiyun Value type: <prop-encoded-array> 67*4882a593Smuzhiyun Definition: should reference the tx-enable and tx-rings-empty SMEM states 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun- qcom,smem-state-names: 70*4882a593Smuzhiyun Usage: required 71*4882a593Smuzhiyun Value type: <stringlist> 72*4882a593Smuzhiyun Definition: must contain "tx-enable" and "tx-rings-empty" 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun= EXAMPLE 75*4882a593SmuzhiyunThe following example represents a SMD node, with one edge representing the 76*4882a593Smuzhiyun"pronto" subsystem, with the wcnss device and its wcn3680 BT and WiFi blocks 77*4882a593Smuzhiyundescribed; as found on the 8974 platform. 78*4882a593Smuzhiyun 79*4882a593Smuzhiyunsmd { 80*4882a593Smuzhiyun compatible = "qcom,smd"; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun pronto-edge { 83*4882a593Smuzhiyun interrupts = <0 142 1>; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun qcom,ipc = <&apcs 8 17>; 86*4882a593Smuzhiyun qcom,smd-edge = <6>; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun wcnss { 89*4882a593Smuzhiyun compatible = "qcom,wcnss"; 90*4882a593Smuzhiyun qcom,smd-channels = "WCNSS_CTRL"; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #address-cells = <1>; 93*4882a593Smuzhiyun #size-cells = <1>; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun qcom,mmio = <&pronto>; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun bt { 98*4882a593Smuzhiyun compatible = "qcom,wcnss-bt"; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* BD address 00:11:22:33:44:55 */ 101*4882a593Smuzhiyun local-bd-address = [ 55 44 33 22 11 00 ]; 102*4882a593Smuzhiyun }; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun wlan { 105*4882a593Smuzhiyun compatible = "qcom,wcnss-wlan"; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun interrupts = <0 145 0>, <0 146 0>; 108*4882a593Smuzhiyun interrupt-names = "tx", "rx"; 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun qcom,smem-state = <&apps_smsm 10>, <&apps_smsm 9>; 111*4882a593Smuzhiyun qcom,smem-state-names = "tx-enable", "tx-rings-empty"; 112*4882a593Smuzhiyun }; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun}; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyunsoc { 118*4882a593Smuzhiyun pronto: pronto { 119*4882a593Smuzhiyun compatible = "qcom,pronto"; 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun reg = <0xfb204000 0x2000>, <0xfb202000 0x1000>, <0xfb21b000 0x3000>; 122*4882a593Smuzhiyun reg-names = "ccu", "dxe", "pmu"; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun}; 125