xref: /freebsd/sys/contrib/device-tree/Bindings/net/wireless/qcom,ath10k.txt (revision 6be3386466ab79a84b48429ae66244f21526d3df)
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