mt76: update to the latest version
[openwrt/openwrt.git] / package / kernel / mt76 / Makefile
1 include $(TOPDIR)/rules.mk
2
3 PKG_NAME:=mt76
4 PKG_RELEASE=4
5
6 PKG_LICENSE:=GPLv2
7 PKG_LICENSE_FILES:=
8
9 PKG_SOURCE_URL:=https://github.com/openwrt/mt76
10 PKG_SOURCE_PROTO:=git
11 PKG_SOURCE_DATE:=2022-04-23
12 PKG_SOURCE_VERSION:=a666d5637bc3afd3e310be09fac048906560097b
13 PKG_MIRROR_HASH:=1a7f7a36e5e376d1b18da98c7939f980855f1981be0c3ad7024360dee702c9f8
14
15 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
16 PKG_USE_NINJA:=0
17 PKG_BUILD_PARALLEL:=1
18
19 PKG_CONFIG_DEPENDS += \
20 CONFIG_PACKAGE_kmod-mt76-usb \
21 CONFIG_PACKAGE_kmod-mt76x02-common \
22 CONFIG_PACKAGE_kmod-mt76x0-common \
23 CONFIG_PACKAGE_kmod-mt76x0u \
24 CONFIG_PACKAGE_kmod-mt76x2-common \
25 CONFIG_PACKAGE_kmod-mt76x2 \
26 CONFIG_PACKAGE_kmod-mt76x2u \
27 CONFIG_PACKAGE_kmod-mt7603 \
28 CONFIG_PACKAGE_CFG80211_TESTMODE
29
30 STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h
31
32 include $(INCLUDE_DIR)/kernel.mk
33 include $(INCLUDE_DIR)/package.mk
34 include $(INCLUDE_DIR)/cmake.mk
35
36 CMAKE_SOURCE_DIR:=$(PKG_BUILD_DIR)/tools
37 CMAKE_BINARY_DIR:=$(PKG_BUILD_DIR)/tools
38
39 define KernelPackage/mt76-default
40 SUBMENU:=Wireless Drivers
41 DEPENDS:= \
42 +kmod-mac80211 \
43 +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT
44 endef
45
46 define KernelPackage/mt76
47 SUBMENU:=Wireless Drivers
48 TITLE:=MediaTek MT76x2/MT7603 wireless driver (metapackage)
49 DEPENDS:= \
50 +kmod-mt76-core +kmod-mt76x2 +kmod-mt7603
51 endef
52
53 define KernelPackage/mt76-core
54 $(KernelPackage/mt76-default)
55 TITLE:=MediaTek MT76xx wireless driver
56 HIDDEN:=1
57 FILES:=\
58 $(PKG_BUILD_DIR)/mt76.ko
59 endef
60
61 define KernelPackage/mt76-usb
62 $(KernelPackage/mt76-default)
63 TITLE:=MediaTek MT76xx wireless driver USB support
64 DEPENDS += +kmod-usb-core +kmod-mt76-core
65 HIDDEN:=1
66 FILES:=\
67 $(PKG_BUILD_DIR)/mt76-usb.ko
68 endef
69
70 define KernelPackage/mt76x02-usb
71 $(KernelPackage/mt76-default)
72 TITLE:=MediaTek MT76x0/MT76x2 USB wireless driver common code
73 DEPENDS+=+kmod-mt76-usb +kmod-mt76x02-common
74 HIDDEN:=1
75 FILES:=$(PKG_BUILD_DIR)/mt76x02-usb.ko
76 endef
77
78 define KernelPackage/mt76x02-common
79 $(KernelPackage/mt76-default)
80 TITLE:=MediaTek MT76x0/MT76x2 wireless driver common code
81 DEPENDS+=+kmod-mt76-core
82 HIDDEN:=1
83 FILES:=$(PKG_BUILD_DIR)/mt76x02-lib.ko
84 endef
85
86 define KernelPackage/mt76x0-common
87 $(KernelPackage/mt76-default)
88 TITLE:=MediaTek MT76x0 wireless driver common code
89 DEPENDS+=+kmod-mt76x02-common
90 HIDDEN:=1
91 FILES:=$(PKG_BUILD_DIR)/mt76x0/mt76x0-common.ko
92 endef
93
94 define KernelPackage/mt76x0e
95 $(KernelPackage/mt76-default)
96 TITLE:=MediaTek MT76x0E wireless driver
97 DEPENDS+=@PCI_SUPPORT +kmod-mt76x0-common
98 FILES:=\
99 $(PKG_BUILD_DIR)/mt76x0/mt76x0e.ko
100 AUTOLOAD:=$(call AutoProbe,mt76x0e)
101 endef
102
103 define KernelPackage/mt76x0u
104 $(KernelPackage/mt76-default)
105 TITLE:=MediaTek MT76x0U wireless driver
106 DEPENDS+=+kmod-mt76x0-common +kmod-mt76x02-usb
107 FILES:=\
108 $(PKG_BUILD_DIR)/mt76x0/mt76x0u.ko
109 AUTOLOAD:=$(call AutoProbe,mt76x0u)
110 endef
111
112 define KernelPackage/mt76x2-common
113 $(KernelPackage/mt76-default)
114 TITLE:=MediaTek MT76x2 wireless driver common code
115 DEPENDS+=+kmod-mt76-core +kmod-mt76x02-common
116 HIDDEN:=1
117 FILES:=$(PKG_BUILD_DIR)/mt76x2/mt76x2-common.ko
118 endef
119
120 define KernelPackage/mt76x2u
121 $(KernelPackage/mt76-default)
122 TITLE:=MediaTek MT76x2U wireless driver
123 DEPENDS+=+kmod-mt76x2-common +kmod-mt76x02-usb
124 FILES:=\
125 $(PKG_BUILD_DIR)/mt76x2/mt76x2u.ko
126 AUTOLOAD:=$(call AutoProbe,mt76x2u)
127 endef
128
129 define KernelPackage/mt76x2
130 $(KernelPackage/mt76-default)
131 TITLE:=MediaTek MT76x2 wireless driver
132 DEPENDS+=@PCI_SUPPORT +kmod-mt76x2-common
133 FILES:=\
134 $(PKG_BUILD_DIR)/mt76x2/mt76x2e.ko
135 AUTOLOAD:=$(call AutoProbe,mt76x2e)
136 endef
137
138 define KernelPackage/mt7603
139 $(KernelPackage/mt76-default)
140 TITLE:=MediaTek MT7603 wireless driver
141 DEPENDS+=@PCI_SUPPORT +kmod-mt76-core
142 FILES:=\
143 $(PKG_BUILD_DIR)/mt7603/mt7603e.ko
144 AUTOLOAD:=$(call AutoProbe,mt7603e)
145 endef
146
147 define KernelPackage/mt76-connac
148 $(KernelPackage/mt76-default)
149 TITLE:=MediaTek MT7615/MT79xx wireless driver common code
150 HIDDEN:=1
151 DEPENDS+=+kmod-mt76-core
152 FILES:= $(PKG_BUILD_DIR)/mt76-connac-lib.ko
153 endef
154
155 define KernelPackage/mt76-sdio
156 $(KernelPackage/mt76-default)
157 TITLE:=MediaTek MT7615/MT79xx SDIO driver common code
158 HIDDEN:=1
159 DEPENDS+=+kmod-mt76-core +kmod-mmc
160 FILES:= $(PKG_BUILD_DIR)/mt76-sdio.ko
161 endef
162
163 define KernelPackage/mt7615-common
164 $(KernelPackage/mt76-default)
165 TITLE:=MediaTek MT7615 wireless driver common code
166 HIDDEN:=1
167 DEPENDS+=@PCI_SUPPORT +kmod-mt76-core +kmod-mt76-connac +kmod-hwmon-core
168 FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615-common.ko
169 endef
170
171 define KernelPackage/mt7615-firmware
172 $(KernelPackage/mt76-default)
173 TITLE:=MediaTek MT7615e firmware
174 DEFAULT:=PACKAGE_kmod-mt7615e
175 endef
176
177 define KernelPackage/mt7615e
178 $(KernelPackage/mt76-default)
179 TITLE:=MediaTek MT7615e wireless driver
180 DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common
181 FILES:= $(PKG_BUILD_DIR)/mt7615/mt7615e.ko
182 AUTOLOAD:=$(call AutoProbe,mt7615e)
183 endef
184
185 define KernelPackage/mt7663-firmware-ap
186 $(KernelPackage/mt76-default)
187 TITLE:=MediaTek MT7663e firmware (optimized for AP)
188 endef
189
190 define KernelPackage/mt7663-firmware-sta
191 $(KernelPackage/mt76-default)
192 TITLE:=MediaTek MT7663e firmware (client mode offload)
193 endef
194
195 define KernelPackage/mt7663-usb-sdio
196 $(KernelPackage/mt76-default)
197 TITLE:=MediaTek MT7663 USB/SDIO shared code
198 DEPENDS+=+kmod-mt7615-common
199 HIDDEN:=1
200 FILES:= \
201 $(PKG_BUILD_DIR)/mt7615/mt7663-usb-sdio-common.ko
202 endef
203
204 define KernelPackage/mt7663s
205 $(KernelPackage/mt76-default)
206 TITLE:=MediaTek MT7663s wireless driver
207 DEPENDS+=+kmod-mt76-sdio +kmod-mt7615-common +kmod-mt7663-usb-sdio
208 FILES:= \
209 $(PKG_BUILD_DIR)/mt7615/mt7663s.ko
210 AUTOLOAD:=$(call AutoProbe,mt7663s)
211 endef
212
213 define KernelPackage/mt7663u
214 $(KernelPackage/mt76-default)
215 TITLE:=MediaTek MT7663u wireless driver
216 DEPENDS+=+kmod-mt76-usb +kmod-mt7615-common +kmod-mt7663-usb-sdio
217 FILES:= $(PKG_BUILD_DIR)/mt7615/mt7663u.ko
218 AUTOLOAD:=$(call AutoProbe,mt7663u)
219 endef
220
221 define KernelPackage/mt7915e
222 $(KernelPackage/mt76-default)
223 TITLE:=MediaTek MT7915e wireless driver
224 DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT +@KERNEL_RELAY
225 FILES:= $(PKG_BUILD_DIR)/mt7915/mt7915e.ko
226 AUTOLOAD:=$(call AutoProbe,mt7915e)
227 endef
228
229 define KernelPackage/mt7921-common
230 $(KernelPackage/mt76-default)
231 TITLE:=MediaTek MT7615 wireless driver common code
232 HIDDEN:=1
233 DEPENDS+=+kmod-mt76-connac +@DRIVER_11AX_SUPPORT
234 FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921-common.ko
235 endef
236
237 define KernelPackage/mt7921u
238 $(KernelPackage/mt76-default)
239 TITLE:=MediaTek MT7921U wireless driver
240 DEPENDS+=+kmod-mt76-usb +kmod-mt7921-common
241 FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921u.ko
242 AUTOLOAD:=$(call AutoProbe,mt7921u)
243 endef
244
245 define KernelPackage/mt7921s
246 $(KernelPackage/mt76-default)
247 TITLE:=MediaTek MT7921S wireless driver
248 DEPENDS+=+kmod-mt76-sdio +kmod-mt7921-common
249 FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921s.ko
250 AUTOLOAD:=$(call AutoProbe,mt7921s)
251 endef
252
253 define KernelPackage/mt7921e
254 $(KernelPackage/mt76-default)
255 TITLE:=MediaTek MT7921e wireless driver
256 DEPENDS+=@PCI_SUPPORT +kmod-mt7921-common
257 FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921e.ko
258 AUTOLOAD:=$(call AutoProbe,mt7921e)
259 endef
260
261 define Package/mt76-test
262 SECTION:=devel
263 CATEGORY:=Development
264 TITLE:=mt76 testmode CLI
265 DEPENDS:=kmod-mt76-core +libnl-tiny
266 endef
267
268 TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny
269
270 NOSTDINC_FLAGS := \
271 $(KERNEL_NOSTDINC_FLAGS) \
272 -I$(PKG_BUILD_DIR) \
273 -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
274 -I$(STAGING_DIR)/usr/include/mac80211-backport \
275 -I$(STAGING_DIR)/usr/include/mac80211/uapi \
276 -I$(STAGING_DIR)/usr/include/mac80211 \
277 -include backport/autoconf.h \
278 -include backport/backport.h
279
280 ifdef CONFIG_PACKAGE_MAC80211_MESH
281 NOSTDINC_FLAGS += -DCONFIG_MAC80211_MESH
282 endif
283
284 ifdef CONFIG_PACKAGE_CFG80211_TESTMODE
285 NOSTDINC_FLAGS += -DCONFIG_NL80211_TESTMODE
286 PKG_MAKE_FLAGS += CONFIG_NL80211_TESTMODE=y
287 endif
288
289 ifdef CONFIG_PACKAGE_kmod-mt76-usb
290 PKG_MAKE_FLAGS += CONFIG_MT76_USB=m
291 endif
292 ifdef CONFIG_PACKAGE_kmod-mt76x02-common
293 PKG_MAKE_FLAGS += CONFIG_MT76x02_LIB=m
294 endif
295 ifdef CONFIG_PACKAGE_kmod-mt76x02-usb
296 PKG_MAKE_FLAGS += CONFIG_MT76x02_USB=m
297 endif
298 ifdef CONFIG_PACKAGE_kmod-mt76x0-common
299 PKG_MAKE_FLAGS += CONFIG_MT76x0_COMMON=m
300 endif
301 ifdef CONFIG_PACKAGE_kmod-mt76x0e
302 PKG_MAKE_FLAGS += CONFIG_MT76x0E=m
303 endif
304 ifdef CONFIG_PACKAGE_kmod-mt76x0u
305 PKG_MAKE_FLAGS += CONFIG_MT76x0U=m
306 endif
307 ifdef CONFIG_PACKAGE_kmod-mt76x2-common
308 PKG_MAKE_FLAGS += CONFIG_MT76x2_COMMON=m
309 endif
310 ifdef CONFIG_PACKAGE_kmod-mt76x2
311 PKG_MAKE_FLAGS += CONFIG_MT76x2E=m
312 endif
313 ifdef CONFIG_PACKAGE_kmod-mt76x2u
314 PKG_MAKE_FLAGS += CONFIG_MT76x2U=m
315 endif
316 ifdef CONFIG_PACKAGE_kmod-mt7603
317 PKG_MAKE_FLAGS += CONFIG_MT7603E=m
318 endif
319 ifdef CONFIG_PACKAGE_kmod-mt76-connac
320 PKG_MAKE_FLAGS += CONFIG_MT76_CONNAC_LIB=m
321 endif
322 ifdef CONFIG_PACKAGE_kmod-mt76-sdio
323 PKG_MAKE_FLAGS += CONFIG_MT76_SDIO=m
324 endif
325 ifdef CONFIG_PACKAGE_kmod-mt7615-common
326 PKG_MAKE_FLAGS += CONFIG_MT7615_COMMON=m
327 endif
328 ifdef CONFIG_PACKAGE_kmod-mt7615e
329 PKG_MAKE_FLAGS += CONFIG_MT7615E=m
330 ifdef CONFIG_TARGET_mediatek_mt7622
331 PKG_MAKE_FLAGS += CONFIG_MT7622_WMAC=y
332 NOSTDINC_FLAGS += -DCONFIG_MT7622_WMAC
333 endif
334 endif
335 ifdef CONFIG_PACKAGE_kmod-mt7663-usb-sdio
336 PKG_MAKE_FLAGS += CONFIG_MT7663_USB_SDIO_COMMON=m
337 endif
338 ifdef CONFIG_PACKAGE_kmod-mt7663s
339 PKG_MAKE_FLAGS += CONFIG_MT7663S=m
340 endif
341 ifdef CONFIG_PACKAGE_kmod-mt7663u
342 PKG_MAKE_FLAGS += CONFIG_MT7663U=m
343 endif
344 ifdef CONFIG_PACKAGE_kmod-mt7915e
345 PKG_MAKE_FLAGS += CONFIG_MT7915E=m
346 endif
347 ifdef CONFIG_PACKAGE_kmod-mt7921-common
348 PKG_MAKE_FLAGS += CONFIG_MT7921_COMMON=m
349 endif
350 ifdef CONFIG_PACKAGE_kmod-mt7921u
351 PKG_MAKE_FLAGS += CONFIG_MT7921U=m
352 endif
353 ifdef CONFIG_PACKAGE_kmod-mt7921s
354 PKG_MAKE_FLAGS += CONFIG_MT7921S=m
355 endif
356 ifdef CONFIG_PACKAGE_kmod-mt7921e
357 PKG_MAKE_FLAGS += CONFIG_MT7921E=m
358 endif
359
360 define Build/Compile
361 +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
362 $(KERNEL_MAKE_FLAGS) \
363 $(PKG_MAKE_FLAGS) \
364 M="$(PKG_BUILD_DIR)" \
365 NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
366 modules
367 $(MAKE) -C $(PKG_BUILD_DIR)/tools
368 endef
369
370 define Build/Install
371 :
372 endef
373
374 define Package/kmod-mt76/install
375 true
376 endef
377
378 define KernelPackage/mt76x0-common/install
379 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
380 cp \
381 $(PKG_BUILD_DIR)/firmware/mt7610e.bin \
382 $(1)/lib/firmware/mediatek
383 endef
384
385 define KernelPackage/mt76x2-common/install
386 $(INSTALL_DIR) $(1)/lib/firmware
387 cp \
388 $(PKG_BUILD_DIR)/firmware/mt7662_rom_patch.bin \
389 $(PKG_BUILD_DIR)/firmware/mt7662.bin \
390 $(1)/lib/firmware
391 endef
392
393 define KernelPackage/mt76x0u/install
394 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
395 ln -sf mt7610e.bin $(1)/lib/firmware/mediatek/mt7610u.bin
396 endef
397
398 define KernelPackage/mt76x2u/install
399 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
400 ln -sf ../mt7662.bin $(1)/lib/firmware/mediatek/mt7662u.bin
401 ln -sf ../mt7662_rom_patch.bin $(1)/lib/firmware/mediatek/mt7662u_rom_patch.bin
402 endef
403
404 define KernelPackage/mt7603/install
405 $(INSTALL_DIR) $(1)/lib/firmware
406 cp $(if $(CONFIG_TARGET_ramips_mt76x8), \
407 $(PKG_BUILD_DIR)/firmware/mt7628_e1.bin \
408 $(PKG_BUILD_DIR)/firmware/mt7628_e2.bin \
409 ,\
410 $(PKG_BUILD_DIR)/firmware/mt7603_e1.bin \
411 $(PKG_BUILD_DIR)/firmware/mt7603_e2.bin \
412 ) \
413 $(1)/lib/firmware
414 endef
415
416 define KernelPackage/mt7615-firmware/install
417 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
418 cp \
419 $(PKG_BUILD_DIR)/firmware/mt7615_cr4.bin \
420 $(PKG_BUILD_DIR)/firmware/mt7615_n9.bin \
421 $(PKG_BUILD_DIR)/firmware/mt7615_rom_patch.bin \
422 $(if $(CONFIG_TARGET_mediatek_mt7622), \
423 $(PKG_BUILD_DIR)/firmware/mt7622_n9.bin \
424 $(PKG_BUILD_DIR)/firmware/mt7622_rom_patch.bin) \
425 $(1)/lib/firmware/mediatek
426 endef
427
428 define KernelPackage/mt7663-firmware-ap/install
429 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
430 cp \
431 $(PKG_BUILD_DIR)/firmware/mt7663_n9_rebb.bin \
432 $(PKG_BUILD_DIR)/firmware/mt7663pr2h_rebb.bin \
433 $(1)/lib/firmware/mediatek
434 endef
435
436 define KernelPackage/mt7663-firmware-sta/install
437 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
438 cp \
439 $(PKG_BUILD_DIR)/firmware/mt7663_n9_v3.bin \
440 $(PKG_BUILD_DIR)/firmware/mt7663pr2h.bin \
441 $(1)/lib/firmware/mediatek
442 endef
443
444 define KernelPackage/mt7915e/install
445 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
446 cp \
447 $(PKG_BUILD_DIR)/firmware/mt7915_wa.bin \
448 $(PKG_BUILD_DIR)/firmware/mt7915_wm.bin \
449 $(PKG_BUILD_DIR)/firmware/mt7915_rom_patch.bin \
450 $(1)/lib/firmware/mediatek
451 endef
452
453 define KernelPackage/mt7921e/install
454 $(INSTALL_DIR) $(1)/lib/firmware/mediatek
455 cp \
456 $(PKG_BUILD_DIR)/firmware/WIFI_MT7961_patch_mcu_1_2_hdr.bin \
457 $(PKG_BUILD_DIR)/firmware/WIFI_RAM_CODE_MT7961_1.bin \
458 $(1)/lib/firmware/mediatek
459 endef
460
461 define Package/mt76-test/install
462 mkdir -p $(1)/usr/sbin
463 $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/mt76-test $(1)/usr/sbin
464 endef
465
466 $(eval $(call KernelPackage,mt76-core))
467 $(eval $(call KernelPackage,mt76-usb))
468 $(eval $(call KernelPackage,mt76x02-usb))
469 $(eval $(call KernelPackage,mt76x02-common))
470 $(eval $(call KernelPackage,mt76x0-common))
471 $(eval $(call KernelPackage,mt76x0e))
472 $(eval $(call KernelPackage,mt76x0u))
473 $(eval $(call KernelPackage,mt76x2-common))
474 $(eval $(call KernelPackage,mt76x2u))
475 $(eval $(call KernelPackage,mt76x2))
476 $(eval $(call KernelPackage,mt7603))
477 $(eval $(call KernelPackage,mt76-connac))
478 $(eval $(call KernelPackage,mt76-sdio))
479 $(eval $(call KernelPackage,mt7615-common))
480 $(eval $(call KernelPackage,mt7615-firmware))
481 $(eval $(call KernelPackage,mt7615e))
482 $(eval $(call KernelPackage,mt7663-firmware-ap))
483 $(eval $(call KernelPackage,mt7663-firmware-sta))
484 $(eval $(call KernelPackage,mt7663-usb-sdio))
485 $(eval $(call KernelPackage,mt7663u))
486 $(eval $(call KernelPackage,mt7663s))
487 $(eval $(call KernelPackage,mt7915e))
488 $(eval $(call KernelPackage,mt7921-common))
489 $(eval $(call KernelPackage,mt7921u))
490 $(eval $(call KernelPackage,mt7921s))
491 $(eval $(call KernelPackage,mt7921e))
492 $(eval $(call KernelPackage,mt76))
493 $(eval $(call BuildPackage,mt76-test))