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