Makefile 12 KB

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