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