1*4882a593Smuzhiyun* Qualcomm Atheros ath10k wireless devices 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunRequired properties: 4*4882a593Smuzhiyun- compatible: Should be one of the following: 5*4882a593Smuzhiyun * "qcom,ath10k" 6*4882a593Smuzhiyun * "qcom,ipq4019-wifi" 7*4882a593Smuzhiyun * "qcom,wcn3990-wifi" 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunPCI based devices uses compatible string "qcom,ath10k" and takes calibration 10*4882a593Smuzhiyundata along with board specific data via "qcom,ath10k-calibration-data". 11*4882a593SmuzhiyunRest of the properties are not applicable for PCI based devices. 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunAHB based devices (i.e. ipq4019) uses compatible string "qcom,ipq4019-wifi" 14*4882a593Smuzhiyunand also uses most of the properties defined in this doc (except 15*4882a593Smuzhiyun"qcom,ath10k-calibration-data"). It uses "qcom,ath10k-pre-calibration-data" 16*4882a593Smuzhiyunto carry pre calibration data. 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunIn general, entry "qcom,ath10k-pre-calibration-data" and 19*4882a593Smuzhiyun"qcom,ath10k-calibration-data" conflict with each other and only one 20*4882a593Smuzhiyuncan be provided per device. 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunSNOC based devices (i.e. wcn3990) uses compatible string "qcom,wcn3990-wifi". 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun- reg: Address and length of the register set for the device. 25*4882a593Smuzhiyun- reg-names: Must include the list of following reg names, 26*4882a593Smuzhiyun "membase" 27*4882a593Smuzhiyun- interrupts: reference to the list of 17 interrupt numbers for "qcom,ipq4019-wifi" 28*4882a593Smuzhiyun compatible target. 29*4882a593Smuzhiyun reference to the list of 12 interrupt numbers for "qcom,wcn3990-wifi" 30*4882a593Smuzhiyun compatible target. 31*4882a593Smuzhiyun Must contain interrupt-names property per entry for 32*4882a593Smuzhiyun "qcom,ath10k", "qcom,ipq4019-wifi" compatible targets. 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun- interrupt-names: Must include the entries for MSI interrupt 35*4882a593Smuzhiyun names ("msi0" to "msi15") and legacy interrupt 36*4882a593Smuzhiyun name ("legacy") for "qcom,ath10k", "qcom,ipq4019-wifi" 37*4882a593Smuzhiyun compatible targets. 38*4882a593Smuzhiyun 39*4882a593SmuzhiyunOptional properties: 40*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names. 41*4882a593Smuzhiyun See ../reset/reseti.txt for details. 42*4882a593Smuzhiyun- reset-names: Must include the list of following reset names, 43*4882a593Smuzhiyun "wifi_cpu_init" 44*4882a593Smuzhiyun "wifi_radio_srif" 45*4882a593Smuzhiyun "wifi_radio_warm" 46*4882a593Smuzhiyun "wifi_radio_cold" 47*4882a593Smuzhiyun "wifi_core_warm" 48*4882a593Smuzhiyun "wifi_core_cold" 49*4882a593Smuzhiyun- clocks: List of clock specifiers, must contain an entry for each required 50*4882a593Smuzhiyun entry in clock-names. 51*4882a593Smuzhiyun- clock-names: Should contain the clock names "wifi_wcss_cmd", "wifi_wcss_ref", 52*4882a593Smuzhiyun "wifi_wcss_rtc" for "qcom,ipq4019-wifi" compatible target and 53*4882a593Smuzhiyun "cxo_ref_clk_pin" and optionally "qdss" for "qcom,wcn3990-wifi" 54*4882a593Smuzhiyun compatible target. 55*4882a593Smuzhiyun- qcom,msi_addr: MSI interrupt address. 56*4882a593Smuzhiyun- qcom,msi_base: Base value to add before writing MSI data into 57*4882a593Smuzhiyun MSI address register. 58*4882a593Smuzhiyun- qcom,ath10k-calibration-variant: string to search for in the board-2.bin 59*4882a593Smuzhiyun variant list with the same bus and device 60*4882a593Smuzhiyun specific ids 61*4882a593Smuzhiyun- qcom,ath10k-calibration-data : calibration data + board specific data 62*4882a593Smuzhiyun as an array, the length can vary between 63*4882a593Smuzhiyun hw versions. 64*4882a593Smuzhiyun- qcom,ath10k-pre-calibration-data : pre calibration data as an array, 65*4882a593Smuzhiyun the length can vary between hw versions. 66*4882a593Smuzhiyun- <supply-name>-supply: handle to the regulator device tree node 67*4882a593Smuzhiyun optional "supply-name" are "vdd-0.8-cx-mx", 68*4882a593Smuzhiyun "vdd-1.8-xo", "vdd-1.3-rfa", "vdd-3.3-ch0", 69*4882a593Smuzhiyun and "vdd-3.3-ch1". 70*4882a593Smuzhiyun- memory-region: 71*4882a593Smuzhiyun Usage: optional 72*4882a593Smuzhiyun Value type: <phandle> 73*4882a593Smuzhiyun Definition: reference to the reserved-memory for the msa region 74*4882a593Smuzhiyun used by the wifi firmware running in Q6. 75*4882a593Smuzhiyun- iommus: 76*4882a593Smuzhiyun Usage: optional 77*4882a593Smuzhiyun Value type: <prop-encoded-array> 78*4882a593Smuzhiyun Definition: A list of phandle and IOMMU specifier pairs. 79*4882a593Smuzhiyun- ext-fem-name: 80*4882a593Smuzhiyun Usage: Optional 81*4882a593Smuzhiyun Value type: string 82*4882a593Smuzhiyun Definition: Name of external front end module used. Some valid FEM names 83*4882a593Smuzhiyun for example: "microsemi-lx5586", "sky85703-11" 84*4882a593Smuzhiyun and "sky85803" etc. 85*4882a593Smuzhiyun- qcom,snoc-host-cap-8bit-quirk: 86*4882a593Smuzhiyun Usage: Optional 87*4882a593Smuzhiyun Value type: <empty> 88*4882a593Smuzhiyun Definition: Quirk specifying that the firmware expects the 8bit version 89*4882a593Smuzhiyun of the host capability QMI request 90*4882a593Smuzhiyun- qcom,xo-cal-data: xo cal offset to be configured in xo trim register. 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun- qcom,msa-fixed-perm: Boolean context flag to disable SCM call for statically 93*4882a593Smuzhiyun mapped msa region. 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun- qcom,coexist-support : should contain eithr "0" or "1" to indicate coex 96*4882a593Smuzhiyun support by the hardware. 97*4882a593Smuzhiyun- qcom,coexist-gpio-pin : gpio pin number information to support coex 98*4882a593Smuzhiyun which will be used by wifi firmware. 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun* Subnodes 101*4882a593SmuzhiyunThe ath10k wifi node can contain one optional firmware subnode. 102*4882a593SmuzhiyunFirmware subnode is needed when the platform does not have TustZone. 103*4882a593SmuzhiyunThe firmware subnode must have: 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun- iommus: 106*4882a593Smuzhiyun Usage: required 107*4882a593Smuzhiyun Value type: <prop-encoded-array> 108*4882a593Smuzhiyun Definition: A list of phandle and IOMMU specifier pairs. 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun 111*4882a593SmuzhiyunExample (to supply PCI based wifi block details): 112*4882a593Smuzhiyun 113*4882a593SmuzhiyunIn this example, the node is defined as child node of the PCI controller. 114*4882a593Smuzhiyun 115*4882a593Smuzhiyunpci { 116*4882a593Smuzhiyun pcie@0 { 117*4882a593Smuzhiyun reg = <0 0 0 0 0>; 118*4882a593Smuzhiyun #interrupt-cells = <1>; 119*4882a593Smuzhiyun #size-cells = <2>; 120*4882a593Smuzhiyun #address-cells = <3>; 121*4882a593Smuzhiyun device_type = "pci"; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun wifi@0,0 { 124*4882a593Smuzhiyun reg = <0 0 0 0 0>; 125*4882a593Smuzhiyun qcom,ath10k-calibration-data = [ 01 02 03 ... ]; 126*4882a593Smuzhiyun ext-fem-name = "microsemi-lx5586"; 127*4882a593Smuzhiyun }; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun}; 130*4882a593Smuzhiyun 131*4882a593SmuzhiyunExample (to supply ipq4019 SoC wifi block details): 132*4882a593Smuzhiyun 133*4882a593Smuzhiyunwifi0: wifi@a000000 { 134*4882a593Smuzhiyun compatible = "qcom,ipq4019-wifi"; 135*4882a593Smuzhiyun reg = <0xa000000 0x200000>; 136*4882a593Smuzhiyun resets = <&gcc WIFI0_CPU_INIT_RESET>, 137*4882a593Smuzhiyun <&gcc WIFI0_RADIO_SRIF_RESET>, 138*4882a593Smuzhiyun <&gcc WIFI0_RADIO_WARM_RESET>, 139*4882a593Smuzhiyun <&gcc WIFI0_RADIO_COLD_RESET>, 140*4882a593Smuzhiyun <&gcc WIFI0_CORE_WARM_RESET>, 141*4882a593Smuzhiyun <&gcc WIFI0_CORE_COLD_RESET>; 142*4882a593Smuzhiyun reset-names = "wifi_cpu_init", 143*4882a593Smuzhiyun "wifi_radio_srif", 144*4882a593Smuzhiyun "wifi_radio_warm", 145*4882a593Smuzhiyun "wifi_radio_cold", 146*4882a593Smuzhiyun "wifi_core_warm", 147*4882a593Smuzhiyun "wifi_core_cold"; 148*4882a593Smuzhiyun clocks = <&gcc GCC_WCSS2G_CLK>, 149*4882a593Smuzhiyun <&gcc GCC_WCSS2G_REF_CLK>, 150*4882a593Smuzhiyun <&gcc GCC_WCSS2G_RTC_CLK>; 151*4882a593Smuzhiyun clock-names = "wifi_wcss_cmd", 152*4882a593Smuzhiyun "wifi_wcss_ref", 153*4882a593Smuzhiyun "wifi_wcss_rtc"; 154*4882a593Smuzhiyun interrupts = <0 0x20 0x1>, 155*4882a593Smuzhiyun <0 0x21 0x1>, 156*4882a593Smuzhiyun <0 0x22 0x1>, 157*4882a593Smuzhiyun <0 0x23 0x1>, 158*4882a593Smuzhiyun <0 0x24 0x1>, 159*4882a593Smuzhiyun <0 0x25 0x1>, 160*4882a593Smuzhiyun <0 0x26 0x1>, 161*4882a593Smuzhiyun <0 0x27 0x1>, 162*4882a593Smuzhiyun <0 0x28 0x1>, 163*4882a593Smuzhiyun <0 0x29 0x1>, 164*4882a593Smuzhiyun <0 0x2a 0x1>, 165*4882a593Smuzhiyun <0 0x2b 0x1>, 166*4882a593Smuzhiyun <0 0x2c 0x1>, 167*4882a593Smuzhiyun <0 0x2d 0x1>, 168*4882a593Smuzhiyun <0 0x2e 0x1>, 169*4882a593Smuzhiyun <0 0x2f 0x1>, 170*4882a593Smuzhiyun <0 0xa8 0x0>; 171*4882a593Smuzhiyun interrupt-names = "msi0", "msi1", "msi2", "msi3", 172*4882a593Smuzhiyun "msi4", "msi5", "msi6", "msi7", 173*4882a593Smuzhiyun "msi8", "msi9", "msi10", "msi11", 174*4882a593Smuzhiyun "msi12", "msi13", "msi14", "msi15", 175*4882a593Smuzhiyun "legacy"; 176*4882a593Smuzhiyun qcom,msi_addr = <0x0b006040>; 177*4882a593Smuzhiyun qcom,msi_base = <0x40>; 178*4882a593Smuzhiyun qcom,ath10k-pre-calibration-data = [ 01 02 03 ... ]; 179*4882a593Smuzhiyun qcom,coexist-support = <1>; 180*4882a593Smuzhiyun qcom,coexist-gpio-pin = <0x33>; 181*4882a593Smuzhiyun}; 182*4882a593Smuzhiyun 183*4882a593SmuzhiyunExample (to supply wcn3990 SoC wifi block details): 184*4882a593Smuzhiyun 185*4882a593Smuzhiyunwifi@18000000 { 186*4882a593Smuzhiyun compatible = "qcom,wcn3990-wifi"; 187*4882a593Smuzhiyun reg = <0x18800000 0x800000>; 188*4882a593Smuzhiyun reg-names = "membase"; 189*4882a593Smuzhiyun clocks = <&clock_gcc clk_rf_clk2_pin>; 190*4882a593Smuzhiyun clock-names = "cxo_ref_clk_pin"; 191*4882a593Smuzhiyun interrupts = 192*4882a593Smuzhiyun <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>, 193*4882a593Smuzhiyun <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>, 194*4882a593Smuzhiyun <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>, 195*4882a593Smuzhiyun <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>, 196*4882a593Smuzhiyun <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>, 197*4882a593Smuzhiyun <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>, 198*4882a593Smuzhiyun <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>, 199*4882a593Smuzhiyun <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>, 200*4882a593Smuzhiyun <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>, 201*4882a593Smuzhiyun <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>, 202*4882a593Smuzhiyun <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>, 203*4882a593Smuzhiyun <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>; 204*4882a593Smuzhiyun vdd-0.8-cx-mx-supply = <&pm8998_l5>; 205*4882a593Smuzhiyun vdd-1.8-xo-supply = <&vreg_l7a_1p8>; 206*4882a593Smuzhiyun vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; 207*4882a593Smuzhiyun vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; 208*4882a593Smuzhiyun vdd-3.3-ch1-supply = <&vreg_l26a_3p3>; 209*4882a593Smuzhiyun memory-region = <&wifi_msa_mem>; 210*4882a593Smuzhiyun iommus = <&apps_smmu 0x0040 0x1>; 211*4882a593Smuzhiyun qcom,msa-fixed-perm; 212*4882a593Smuzhiyun wifi-firmware { 213*4882a593Smuzhiyun iommus = <&apps_iommu 0xc22 0x1>; 214*4882a593Smuzhiyun }; 215*4882a593Smuzhiyun}; 216