Makefile 12 KB

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