ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile
new file mode 100644
index 0000000..f256a1e
--- /dev/null
+++ b/package/firmware/linux-firmware/Makefile
@@ -0,0 +1,42 @@
+#
+# Copyright (C) 2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=linux-firmware
+PKG_VERSION:=20240513
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_HASH:=9f05edb99668135d37cedc4fdd18aac2802dc9e4566e086e6c6c2e321f3ecc4e
+
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+
+SCAN_DEPS = *.mk
+
+include $(INCLUDE_DIR)/package.mk
+
+RSTRIP:=:
+STRIP:=:
+
+define Package/firmware-default
+ SECTION:=firmware
+ CATEGORY:=Firmware
+ URL:=http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git
+ TITLE:=$(1)
+ DEPENDS:=$(2)
+ LICENSE_FILES:=$(3)
+ LICENSE:=$(4)
+endef
+
+define Build/Compile
+
+endef
+
+include $(wildcard ./*.mk)
+#$(eval $(call BuildPackage,linux-firmware))
diff --git a/package/firmware/linux-firmware/airoha.mk b/package/firmware/linux-firmware/airoha.mk
new file mode 100644
index 0000000..4d46ac5
--- /dev/null
+++ b/package/firmware/linux-firmware/airoha.mk
@@ -0,0 +1,17 @@
+Package/airoha-en8811h-firmware = $(call Package/firmware-default,Airoha EN8811H 2.5G Ethernet PHY firmware,,LICENSE.airoha)
+define Package/airoha-en8811h-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/airoha
+ $(CP) \
+ $(PKG_BUILD_DIR)/airoha/EthMD32.dm.bin \
+ $(PKG_BUILD_DIR)/airoha/EthMD32.DSP.bin \
+ $(1)/lib/firmware/airoha
+ifneq ($(CONFIG_TARGET_mediatek_filogic),)
+ $(INSTALL_DIR) $(STAGING_DIR_IMAGE)
+ cat \
+ $(PKG_BUILD_DIR)/airoha/EthMD32.dm.bin \
+ $(PKG_BUILD_DIR)/airoha/EthMD32.DSP.bin \
+ > $(STAGING_DIR_IMAGE)/EthMD32.bin
+endif
+endef
+
+$(eval $(call BuildPackage,airoha-en8811h-firmware))
diff --git a/package/firmware/linux-firmware/amd.mk b/package/firmware/linux-firmware/amd.mk
new file mode 100644
index 0000000..c1f5711
--- /dev/null
+++ b/package/firmware/linux-firmware/amd.mk
@@ -0,0 +1,29 @@
+Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode,,LICENSE.amd-ucode)
+define Package/amd64-microcode/install
+ $(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
+ $(CP) \
+ $(PKG_BUILD_DIR)/amd-ucode/*.bin \
+ $(1)/lib/firmware/amd-ucode
+endef
+
+$(eval $(call BuildPackage,amd64-microcode))
+
+Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware,,LICENSE.amdgpura)
+define Package/amdgpu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/amdgpu
+ $(CP) \
+ $(PKG_BUILD_DIR)/amdgpu/*.bin \
+ $(1)/lib/firmware/amdgpu
+endef
+
+$(eval $(call BuildPackage,amdgpu-firmware))
+
+Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware,,LICENSE.radeon)
+define Package/radeon-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/radeon
+ $(CP) \
+ $(PKG_BUILD_DIR)/radeon/*.bin \
+ $(1)/lib/firmware/radeon
+endef
+
+$(eval $(call BuildPackage,radeon-firmware))
diff --git a/package/firmware/linux-firmware/broadcom.mk b/package/firmware/linux-firmware/broadcom.mk
new file mode 100644
index 0000000..c4e5885
--- /dev/null
+++ b/package/firmware/linux-firmware/broadcom.mk
@@ -0,0 +1,208 @@
+Package/brcmfmac-firmware-4339-sdio = $(call Package/firmware-default,Broadcom 4339 FullMAC SDIO firmware,,LICENCE.cypressb)
+define Package/brcmfmac-firmware-4339-sdio/install
+ $(INSTALL_DIR) $(1)/lib/firmware/cypress
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/cypress/cyfmac4339-sdio.bin \
+ $(1)/lib/firmware/cypress/
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(LN) \
+ ../cypress/cyfmac4339-sdio.bin \
+ $(1)/lib/firmware/brcm/brcmfmac4339-sdio.bin
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-4339-sdio))
+
+Package/brcmfmac-firmware-43602a1-pcie = $(call Package/firmware-default,Broadcom 43602a1 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-firmware-43602a1-pcie/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43602-pcie.ap.bin \
+ $(1)/lib/firmware/brcm/brcmfmac43602-pcie.bin
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-43602a1-pcie))
+
+Package/brcmfmac-firmware-4366b1-pcie = $(call Package/firmware-default,Broadcom 4366b1 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-firmware-4366b1-pcie/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac4366b-pcie.bin \
+ $(1)/lib/firmware/brcm/
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-4366b1-pcie))
+
+Package/brcmfmac-firmware-4366c0-pcie = $(call Package/firmware-default,Broadcom 4366c0 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-firmware-4366c0-pcie/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac4366c-pcie.bin \
+ $(1)/lib/firmware/brcm/
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-4366c0-pcie))
+
+Package/brcmfmac-firmware-4329-sdio = $(call Package/firmware-default,Broadcom BCM4329 FullMac SDIO firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-firmware-4329-sdio/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac4329-sdio.bin \
+ $(1)/lib/firmware/brcm/brcmfmac4329-sdio.bin
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-4329-sdio))
+
+Package/brcmfmac-nvram-43430-sdio = $(call Package/firmware-default,Broadcom BCM43430 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-nvram-43430-sdio/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.friendlyarm,nanopi-r1.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.starfive,visionfive-v1.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.beagle,beaglev-starlight-jh7100-a1.txt
+ $(LN) \
+ brcmfmac43430-sdio.AP6212.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.beagle,beaglev-starlight-jh7100-r0.txt
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt \
+ $(1)/lib/firmware/brcm/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43430-sdio.MUR1DX.txt \
+ $(1)/lib/firmware/brcm/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt \
+ $(1)/lib/firmware/brcm/
+ $(LN) \
+ brcmfmac43430-sdio.raspberrypi,3-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt
+ $(LN) \
+ brcmfmac43430-sdio.raspberrypi,3-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.txt
+endef
+$(eval $(call BuildPackage,brcmfmac-nvram-43430-sdio))
+
+Package/brcmfmac-firmware-43430a0-sdio = $(call Package/firmware-default,Broadcom BCM43430a0 FullMac SDIO firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-firmware-43430a0-sdio/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43430a0-sdio.bin \
+ $(1)/lib/firmware/brcm/brcmfmac43430a0-sdio.bin
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-43430a0-sdio))
+
+Package/brcmfmac-nvram-43455-sdio = $(call Package/firmware-default,Broadcom BCM43455 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-nvram-43455-sdio/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.acepc-t8.txt \
+ $(1)/lib/firmware/brcm/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \
+ $(1)/lib/firmware/brcm/
+ $(LN) \
+ brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
+ $(1)/lib/firmware/brcm/
+ $(LN) \
+ brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt
+ $(LN) \
+ brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ 4\ Model\ B.txt
+ $(LN) \
+ brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt
+ $(LN) \
+ brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ Compute\ Module\ 4.txt
+ $(LN) \
+ brcmfmac43455-sdio.raspberrypi,4-model-b.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.Raspberry\ Pi\ Foundation-Raspberry\ Pi\ 5\ Model\ B.txt
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.MINIX-NEO\ Z83-4.txt \
+ $(1)/lib/firmware/brcm/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43455-sdio.AW-CM256SM.txt \
+ $(1)/lib/firmware/brcm/
+ $(LN) \
+ brcmfmac43455-sdio.AW-CM256SM.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.beagle,am5729-beagleboneai.txt
+ $(LN) \
+ brcmfmac43455-sdio.AW-CM256SM.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.pine64,pinebook-pro.txt
+ $(LN) \
+ brcmfmac43455-sdio.AW-CM256SM.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.pine64,pinephone-pro.txt
+ $(LN) \
+ brcmfmac43455-sdio.AW-CM256SM.txt \
+ $(1)/lib/firmware/brcm/brcmfmac43455-sdio.pine64,quartz64-b.txt
+endef
+$(eval $(call BuildPackage,brcmfmac-nvram-43455-sdio))
+
+Package/brcmfmac-nvram-4356-sdio = $(call Package/firmware-default,Broadcom BCM4356 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-nvram-4356-sdio/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac4356-sdio.AP6356S.txt \
+ $(1)/lib/firmware/brcm/
+ $(LN) \
+ brcmfmac4356-sdio.AP6356S.txt \
+ $(1)/lib/firmware/brcm/brcmfmac4356-sdio.friendlyarm,nanopc-t4.txt
+endef
+$(eval $(call BuildPackage,brcmfmac-nvram-4356-sdio))
+
+Package/brcmfmac-firmware-usb = $(call Package/firmware-default,Broadcom BCM43xx fullmac USB firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmfmac-firmware-usb/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43236b.bin \
+ $(1)/lib/firmware/brcm/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/brcm/brcmfmac43143.bin \
+ $(1)/lib/firmware/brcm/
+endef
+$(eval $(call BuildPackage,brcmfmac-firmware-usb))
+
+Package/brcmsmac-firmware = $(call Package/firmware-default,Broadcom BCM43xx softmac PCIe firmware,,LICENCE.broadcom_bcm43xx)
+define Package/brcmsmac-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/brcm
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx-0.fw \
+ $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx_hdr-0.fw \
+ $(1)/lib/firmware/brcm/
+endef
+$(eval $(call BuildPackage,brcmsmac-firmware))
+
+Package/bnx2-firmware = $(call Package/firmware-default,Broadcom BCM5706/5708/5709/5716 firmware)
+define Package/bnx2-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/bnx2
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/bnx2/* \
+ $(1)/lib/firmware/bnx2/
+endef
+$(eval $(call BuildPackage,bnx2-firmware))
+
+Package/bnx2x-firmware = $(call Package/firmware-default,=QLogic 5771x/578xx firmware)
+define Package/bnx2x-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/bnx2x
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/bnx2x/* \
+ $(1)/lib/firmware/bnx2x/
+endef
+$(eval $(call BuildPackage,bnx2x-firmware))
diff --git a/package/firmware/linux-firmware/cis.mk b/package/firmware/linux-firmware/cis.mk
new file mode 100644
index 0000000..4a59957
--- /dev/null
+++ b/package/firmware/linux-firmware/cis.mk
@@ -0,0 +1,10 @@
+Package/aircard-pcmcia-firmware = $(call Package/firmware-default,Sierra Wireless Aircard 555/7xx/8x0 firmware)
+define Package/aircard-pcmcia-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/cis
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/cis/SW_555_SER.cis \
+ $(PKG_BUILD_DIR)/cis/SW_7xx_SER.cis \
+ $(PKG_BUILD_DIR)/cis/SW_8xx_SER.cis \
+ $(1)/lib/firmware/cis
+endef
+$(eval $(call BuildPackage,aircard-pcmcia-firmware))
diff --git a/package/firmware/linux-firmware/edgeport.mk b/package/firmware/linux-firmware/edgeport.mk
new file mode 100644
index 0000000..d68c75a
--- /dev/null
+++ b/package/firmware/linux-firmware/edgeport.mk
@@ -0,0 +1,12 @@
+Package/edgeport-firmware = $(call Package/firmware-default,USB Inside Out Edgeport Serial Driver firmware)
+define Package/edgeport-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/edgeport
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/edgeport/boot.fw \
+ $(PKG_BUILD_DIR)/edgeport/boot2.fw \
+ $(PKG_BUILD_DIR)/edgeport/down.fw \
+ $(PKG_BUILD_DIR)/edgeport/down2.fw \
+ $(1)/lib/firmware/edgeport
+endef
+
+$(eval $(call BuildPackage,edgeport-firmware))
diff --git a/package/firmware/linux-firmware/intel.mk b/package/firmware/linux-firmware/intel.mk
new file mode 100644
index 0000000..8238776
--- /dev/null
+++ b/package/firmware/linux-firmware/intel.mk
@@ -0,0 +1,272 @@
+Package/ibt-firmware = $(call Package/firmware-default,Intel bluetooth firmware)
+define Package/ibt-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/intel
+ $(CP) \
+ $(PKG_BUILD_DIR)/intel/*.bseq \
+ $(PKG_BUILD_DIR)/intel/ibt*.sfi \
+ $(PKG_BUILD_DIR)/intel/ibt*.ddc \
+ $(1)/lib/firmware/intel
+endef
+$(eval $(call BuildPackage,ibt-firmware))
+
+Package/iwl3945-firmware = $(call Package/firmware-default,Intel IWL3945 firmware)
+define Package/iwl3945-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-3945-2.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwl3945-firmware))
+
+Package/iwl4965-firmware = $(call Package/firmware-default,Intel IWL4965 firmware)
+define Package/iwl4965-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-4965-2.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwl4965-firmware))
+
+Package/iwlwifi-firmware-iwl100 = $(call Package/firmware-default,Intel Centrino Wireless-N 100 firmware)
+define Package/iwlwifi-firmware-iwl100/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-100-5.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl100))
+
+Package/iwlwifi-firmware-iwl1000 = $(call Package/firmware-default,Intel Centrino Wireless-N 1000 firmware)
+define Package/iwlwifi-firmware-iwl1000/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-1000-5.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl1000))
+
+Package/iwlwifi-firmware-iwl105 = $(call Package/firmware-default,Intel Centrino Wireless-N 105 firmware)
+define Package/iwlwifi-firmware-iwl105/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-105-6.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl105))
+
+Package/iwlwifi-firmware-iwl135 = $(call Package/firmware-default,Intel Centrino Wireless-N 135 firmware)
+define Package/iwlwifi-firmware-iwl135/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-135-6.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl135))
+
+Package/iwlwifi-firmware-iwl2000 = $(call Package/firmware-default,Intel Centrino Wireless-N 2200 firmware)
+define Package/iwlwifi-firmware-iwl2000/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-2000-6.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl2000))
+
+Package/iwlwifi-firmware-iwl2030 = $(call Package/firmware-default,Intel Centrino Wireless-N 2230 firmware)
+define Package/iwlwifi-firmware-iwl2030/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-2030-6.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl2030))
+
+Package/iwlwifi-firmware-iwl3160 = $(call Package/firmware-default,Intel Wireless 3160 firmware)
+define Package/iwlwifi-firmware-iwl3160/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-3160-17.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl3160))
+
+Package/iwlwifi-firmware-iwl3168 = $(call Package/firmware-default,Intel Wireless 3168 firmware)
+define Package/iwlwifi-firmware-iwl3168/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-3168-29.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl3168))
+
+Package/iwlwifi-firmware-iwl5000 = $(call Package/firmware-default,Intel Wireless 5100AGN 5300AGN and 5350AGN firmware)
+define Package/iwlwifi-firmware-iwl5000/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-5000-5.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl5000))
+
+Package/iwlwifi-firmware-iwl5150 = $(call Package/firmware-default,Intel Wireless Wi-Fi 5150AGN firmware)
+define Package/iwlwifi-firmware-iwl5150/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-5150-2.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl5150))
+
+Package/iwlwifi-firmware-iwl6000g2 = $(call Package/firmware-default,Intel Centrino 6300 and 6200 firmware)
+define Package/iwlwifi-firmware-iwl6000g2/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-6000-4.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl6000g2))
+
+Package/iwlwifi-firmware-iwl6000g2a = $(call Package/firmware-default,Intel Centrino 6205 firmware)
+define Package/iwlwifi-firmware-iwl6000g2a/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-6000g2a-6.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl6000g2a))
+
+Package/iwlwifi-firmware-iwl6000g2b = $(call Package/firmware-default,Intel Centrino 6230 1030 130 and 6235 firmware)
+define Package/iwlwifi-firmware-iwl6000g2b/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-6000g2b-6.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl6000g2b))
+
+Package/iwlwifi-firmware-iwl6050 = $(call Package/firmware-default,Intel Centrino 6150 and 6250 firmware)
+define Package/iwlwifi-firmware-iwl6050/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-6050-5.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl6050))
+
+Package/iwlwifi-firmware-iwl7260 = $(call Package/firmware-default,Intel Wireless 7260 firmware)
+define Package/iwlwifi-firmware-iwl7260/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-7260-17.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl7260))
+
+Package/iwlwifi-firmware-iwl7265 = $(call Package/firmware-default,Intel Wireless 7265 firmware)
+define Package/iwlwifi-firmware-iwl7265/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-7265-17.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl7265))
+
+Package/iwlwifi-firmware-iwl7265d = $(call Package/firmware-default,Intel Wireless 7265D and 3165 firmware)
+define Package/iwlwifi-firmware-iwl7265d/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-7265D-29.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl7265d))
+
+Package/iwlwifi-firmware-iwl8260c = $(call Package/firmware-default,Intel Wireless 8260 and 4165 firmware)
+define Package/iwlwifi-firmware-iwl8260c/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-8000C-36.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl8260c))
+
+Package/iwlwifi-firmware-iwl8265 = $(call Package/firmware-default,Intel Wireless 8265 firmware)
+define Package/iwlwifi-firmware-iwl8265/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-8265-36.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl8265))
+
+Package/iwlwifi-firmware-iwl9000 = $(call Package/firmware-default,Intel Wireless 9000 firmware)
+define Package/iwlwifi-firmware-iwl9000/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-9000-pu-b0-jf-b0-46.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl9000))
+
+Package/iwlwifi-firmware-iwl9260 = $(call Package/firmware-default,Intel Wireless 9260 firmware)
+define Package/iwlwifi-firmware-iwl9260/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-9260-th-b0-jf-b0-46.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-iwl9260))
+
+Package/iwlwifi-firmware-ax101 = $(call Package/firmware-default,Intel AX101 firmware)
+define Package/iwlwifi-firmware-ax101/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-so-a0-hr-b0-83.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-ax101))
+
+Package/iwlwifi-firmware-ax200 = $(call Package/firmware-default,Intel AX200 firmware)
+define Package/iwlwifi-firmware-ax200/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-cc-a0-77.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-ax200))
+
+Package/iwlwifi-firmware-ax201 = $(call Package/firmware-default,Intel AX201 firmware)
+define Package/iwlwifi-firmware-ax201/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-QuZ-a0-hr-b0-77.ucode $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-ax201))
+
+Package/iwlwifi-firmware-ax210 = $(call Package/firmware-default,Intel AX210 firmware)
+define Package/iwlwifi-firmware-ax210/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-ty-a0-gf-a0-83.ucode $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-ty-a0-gf-a0.pnvm $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-ax210))
+
+Package/iwlwifi-firmware-ax411 = $(call Package/firmware-default,Intel AX411 firmware)
+define Package/iwlwifi-firmware-ax411/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-so-a0-gf4-a0-89.ucode $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-so-a0-gf4-a0.pnvm $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-ax411))
+
+Package/iwlwifi-firmware-be200 = $(call Package/firmware-default,Intel BE200 firmware)
+define Package/iwlwifi-firmware-be200/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-gl-c0-fm-c0-83.ucode $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-gl-c0-fm-c0.pnvm $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,iwlwifi-firmware-be200))
+
+Package/e100-firmware = $(call Package/firmware-default,Intel e100)
+define Package/e100-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/e100
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/e100/d101m_ucode.bin $(1)/lib/firmware/e100/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/e100/d101s_ucode.bin $(1)/lib/firmware/e100/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/e100/d102e_ucode.bin $(1)/lib/firmware/e100/
+endef
+$(eval $(call BuildPackage,e100-firmware))
+
+i915_deps:=+i915-firmware-dmc +i915-firmware-guc +i915-firmware-huc +i915-firmware-gsc
+Package/i915-firmware = $(call Package/firmware-default,Intel I915 firmware \(meta package\),$(i915_deps),LICENSE.i915)
+define Package/i915-firmware/install
+ true
+endef
+$(eval $(call BuildPackage,i915-firmware))
+
+Package/i915-firmware-dmc = $(call Package/firmware-default,Intel I915 DMC firmware,,LICENSE.i915)
+define Package/i915-firmware-dmc/install
+ $(INSTALL_DIR) $(1)/lib/firmware/i915
+ for f in $(PKG_BUILD_DIR)/i915/*_dmc*.bin; do \
+ t=`echo $$$${f##*/} | cut -d_ -f2 | cut -d. -f1`; \
+ if [ "$$$$t" = dmc ]; then $(CP) $$$$f $(1)/lib/firmware/i915/; fi \
+ done
+endef
+$(eval $(call BuildPackage,i915-firmware-dmc))
+
+Package/i915-firmware-guc = $(call Package/firmware-default,Intel I915 GUC firmware,,LICENSE.i915)
+define Package/i915-firmware-guc/install
+ $(INSTALL_DIR) $(1)/lib/firmware/i915
+ for f in $(PKG_BUILD_DIR)/i915/*_guc*.bin; do \
+ t=`echo $$$${f##*/} | cut -d_ -f2 | cut -d. -f1`; \
+ if [ "$$$$t" = guc ]; then $(CP) $$$$f $(1)/lib/firmware/i915/; fi \
+ done
+endef
+$(eval $(call BuildPackage,i915-firmware-guc))
+
+Package/i915-firmware-huc = $(call Package/firmware-default,Intel I915 HUC firmware,,LICENSE.i915)
+define Package/i915-firmware-huc/install
+ $(INSTALL_DIR) $(1)/lib/firmware/i915
+ for f in $(PKG_BUILD_DIR)/i915/*_huc*.bin; do \
+ t=`echo $$$${f##*/} | cut -d_ -f2 | cut -d. -f1`; \
+ if [ "$$$$t" = huc ]; then $(CP) $$$$f $(1)/lib/firmware/i915/; fi \
+ done
+endef
+$(eval $(call BuildPackage,i915-firmware-huc))
+
+Package/i915-firmware-gsc = $(call Package/firmware-default,Intel I915 GSC firmware,,LICENSE.i915)
+define Package/i915-firmware-gsc/install
+ $(INSTALL_DIR) $(1)/lib/firmware/i915
+ for f in $(PKG_BUILD_DIR)/i915/*_gsc*.bin; do \
+ t=`echo $$$${f##*/} | cut -d_ -f2 | cut -d. -f1`; \
+ if [ "$$$$t" = gsc ]; then $(CP) $$$$f $(1)/lib/firmware/i915/; fi \
+ done
+endef
+$(eval $(call BuildPackage,i915-firmware-gsc))
diff --git a/package/firmware/linux-firmware/marvell.mk b/package/firmware/linux-firmware/marvell.mk
new file mode 100644
index 0000000..17d85a3
--- /dev/null
+++ b/package/firmware/linux-firmware/marvell.mk
@@ -0,0 +1,72 @@
+Package/mwl8k-firmware = $(call Package/firmware-default,Marvell 8366/8687 firmware,,LICENCE.Marvell)
+define Package/mwl8k-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mwl8k
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mwl8k/fmimage_8366_ap-3.fw \
+ $(PKG_BUILD_DIR)/mwl8k/fmimage_8366.fw \
+ $(PKG_BUILD_DIR)/mwl8k/helper_8366.fw \
+ $(PKG_BUILD_DIR)/mwl8k/fmimage_8687.fw \
+ $(PKG_BUILD_DIR)/mwl8k/helper_8687.fw \
+ $(1)/lib/firmware/mwl8k/
+endef
+$(eval $(call BuildPackage,mwl8k-firmware))
+
+Package/mwifiex-pcie-firmware = $(call Package/firmware-default,Marvell 8897 firmware,,LICENCE.Marvell)
+define Package/mwifiex-pcie-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mrvl
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mrvl/pcie8897_uapsta.bin \
+ $(1)/lib/firmware/mrvl/
+endef
+$(eval $(call BuildPackage,mwifiex-pcie-firmware))
+
+Package/mwifiex-sdio-firmware = $(call Package/firmware-default,Marvell 8887/8997 firmware,,LICENCE.Marvell)
+define Package/mwifiex-sdio-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mrvl
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mrvl/sd8887_uapsta.bin \
+ $(PKG_BUILD_DIR)/mrvl/sdsd8997_combo_v4.bin \
+ $(1)/lib/firmware/mrvl/
+ ln -s ../mrvl/sdsd8997_combo_v4.bin $(1)/lib/firmware/mrvl/sd8997_uapsta.bin
+endef
+$(eval $(call BuildPackage,mwifiex-sdio-firmware))
+
+Package/libertas-usb-firmware = $(call Package/firmware-default,Marvell 8388/8682 USB firmware,,LICENCE.Marvell)
+define Package/libertas-usb-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/libertas
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/libertas/usb8388_v9.bin \
+ $(PKG_BUILD_DIR)/libertas/usb8682.bin \
+ $(1)/lib/firmware/libertas/
+endef
+$(eval $(call BuildPackage,libertas-usb-firmware))
+
+Package/libertas-sdio-firmware = $(call Package/firmware-default,Marvell 8385/8686/8688 SDIO firmware,,LICENCE.Marvell)
+define Package/libertas-sdio-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/libertas
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/libertas/sd8385_helper.bin \
+ $(PKG_BUILD_DIR)/libertas/sd8385.bin \
+ $(PKG_BUILD_DIR)/libertas/sd8686_v9_helper.bin \
+ $(PKG_BUILD_DIR)/libertas/sd8686_v9.bin \
+ $(1)/lib/firmware/libertas
+ $(INSTALL_DIR) $(1)/lib/firmware/mrvl
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mrvl/sd8688_helper.bin \
+ $(PKG_BUILD_DIR)/mrvl/sd8688.bin \
+ $(1)/lib/firmware/mrvl
+ ln -s ../mrvl/sd8688_helper.bin $(1)/lib/firmware/libertas/sd8688_helper.bin
+ ln -s ../mrvl/sd8688.bin $(1)/lib/firmware/libertas/sd8688.bin
+endef
+$(eval $(call BuildPackage,libertas-sdio-firmware))
+
+Package/libertas-spi-firmware = $(call Package/firmware-default,Marvell 8686 SPI firmware,,LICENCE.Marvell)
+define Package/libertas-spi-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/libertas
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/libertas/gspi8686_v9_helper.bin \
+ $(PKG_BUILD_DIR)/libertas/gspi8686_v9.bin \
+ $(1)/lib/firmware/libertas
+endef
+$(eval $(call BuildPackage,libertas-spi-firmware))
+
diff --git a/package/firmware/linux-firmware/mediatek.mk b/package/firmware/linux-firmware/mediatek.mk
new file mode 100644
index 0000000..5c448e1
--- /dev/null
+++ b/package/firmware/linux-firmware/mediatek.mk
@@ -0,0 +1,98 @@
+Package/mt7601u-firmware = $(call Package/firmware-default,MediaTek MT7601U firmware,,LICENCE.mediatek)
+define Package/mt7601u-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/mt7601u.bin \
+ $(1)/lib/firmware/mediatek
+endef
+$(eval $(call BuildPackage,mt7601u-firmware))
+
+Package/rt2800-pci-firmware = $(call Package/firmware-default,Ralink RT28xx/3xxx PCI/SoC firmware)
+define Package/rt2800-pci-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/rt2860.bin \
+ $(PKG_BUILD_DIR)/rt3290.bin \
+ $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,rt2800-pci-firmware))
+
+Package/rt2800-usb-firmware = $(call Package/firmware-default,Ralink RT28xx/3xxx USB firmware)
+define Package/rt2800-usb-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2870.bin $(1)/lib/firmware/
+endef
+$(eval $(call BuildPackage,rt2800-usb-firmware))
+
+Package/rt61-pci-firmware = $(call Package/firmware-default,Ralink RT2561 firmware)
+define Package/rt61-pci-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/rt2561.bin \
+ $(PKG_BUILD_DIR)/rt2561s.bin \
+ $(PKG_BUILD_DIR)/rt2661.bin \
+ $(1)/lib/firmware/
+endef
+$(eval $(call BuildPackage,rt61-pci-firmware))
+
+Package/rt73-usb-firmware = $(call Package/firmware-default,Ralink RT2573 firmware)
+define Package/rt73-usb-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt73.bin $(1)/lib/firmware/
+endef
+$(eval $(call BuildPackage,rt73-usb-firmware))
+
+Package/mt7622bt-firmware = $(call Package/firmware-default,mt7622bt firmware,,LICENCE.mediatek)
+define Package/mt7622bt-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/mt7622pr2h.bin \
+ $(1)/lib/firmware/mediatek
+endef
+$(eval $(call BuildPackage,mt7622bt-firmware))
+
+Package/mt7921bt-firmware = $(call Package/firmware-default,mt7921bt firmware,,LICENCE.mediatek)
+define Package/mt7921bt-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin \
+ $(1)/lib/firmware/mediatek
+endef
+$(eval $(call BuildPackage,mt7921bt-firmware))
+
+Package/mt7922bt-firmware = $(call Package/firmware-default,mt7922bt firmware,,LICENCE.mediatek)
+define Package/mt7922bt-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin \
+ $(1)/lib/firmware/mediatek
+endef
+$(eval $(call BuildPackage,mt7922bt-firmware))
+
+Package/mt7981-wo-firmware = $(call Package/firmware-default,MT7981 offload firmware,,LICENCE.mediatek)
+define Package/mt7981-wo-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/mt7981_wo.bin \
+ $(1)/lib/firmware/mediatek
+endef
+$(eval $(call BuildPackage,mt7981-wo-firmware))
+
+Package/mt7986-wo-firmware = $(call Package/firmware-default,MT7986 offload firmware,,LICENCE.mediatek)
+define Package/mt7986-wo-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/mt7986_wo_0.bin \
+ $(PKG_BUILD_DIR)/mediatek/mt7986_wo_1.bin \
+ $(1)/lib/firmware/mediatek
+endef
+$(eval $(call BuildPackage,mt7986-wo-firmware))
+
+Package/mt7988-2p5g-phy-firmware = $(call Package/firmware-default,MT7988 built-in 2.5G Ethernet PHY firmware,,LICENCE.mediatek)
+define Package/mt7988-2p5g-phy-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mediatek/mt7988
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/mediatek/mt7988/i2p5ge-phy-pmb.bin \
+ $(1)/lib/firmware/mediatek/mt7988
+endef
+$(eval $(call BuildPackage,mt7988-2p5g-phy-firmware))
diff --git a/package/firmware/linux-firmware/mellanox.mk b/package/firmware/linux-firmware/mellanox.mk
new file mode 100644
index 0000000..949085f
--- /dev/null
+++ b/package/firmware/linux-firmware/mellanox.mk
@@ -0,0 +1,39 @@
+Package/mlxsw_spectrum-firmware = $(call Package/firmware-default,Mellanox Spectrum firmware)
+define Package/mlxsw_spectrum-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mellanox
+ $(CP) \
+ $(PKG_BUILD_DIR)/mellanox/mlxsw_spectrum-*.mfa2 \
+ $(1)/lib/firmware/mellanox
+endef
+
+$(eval $(call BuildPackage,mlxsw_spectrum-firmware))
+
+Package/mlxsw_spectrum2-firmware = $(call Package/firmware-default,Mellanox Spectrum-2 firmware)
+define Package/mlxsw_spectrum2-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mellanox
+ $(CP) \
+ $(PKG_BUILD_DIR)/mellanox/mlxsw_spectrum2-*.mfa2 \
+ $(1)/lib/firmware/mellanox
+endef
+
+$(eval $(call BuildPackage,mlxsw_spectrum2-firmware))
+
+Package/mlxsw_spectrum3-firmware = $(call Package/firmware-default,Mellanox Spectrum-3 firmware)
+define Package/mlxsw_spectrum3-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mellanox
+ $(CP) \
+ $(PKG_BUILD_DIR)/mellanox/mlxsw_spectrum3-*.mfa2 \
+ $(1)/lib/firmware/mellanox
+endef
+
+$(eval $(call BuildPackage,mlxsw_spectrum3-firmware))
+
+Package/mlxsw_spectrum4-firmware = $(call Package/firmware-default,Mellanox Spectrum-4 firmware)
+define Package/mlxsw_spectrum4-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/mellanox
+ $(CP) \
+ $(PKG_BUILD_DIR)/mellanox/mlxsw_spectrum4-*.mfa2 \
+ $(1)/lib/firmware/mellanox
+endef
+
+$(eval $(call BuildPackage,mlxsw_spectrum4-firmware))
diff --git a/package/firmware/linux-firmware/misc.mk b/package/firmware/linux-firmware/misc.mk
new file mode 100644
index 0000000..d0956f7
--- /dev/null
+++ b/package/firmware/linux-firmware/misc.mk
@@ -0,0 +1,9 @@
+Package/eip197-mini-firmware = $(call Package/firmware-default,Inside Secure EIP197 mini firmware)
+define Package/eip197-mini-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/inside-secure/eip197_minifw
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/inside-secure/eip197_minifw/ifpp.bin \
+ $(PKG_BUILD_DIR)/inside-secure/eip197_minifw/ipue.bin \
+ $(1)/lib/firmware/inside-secure/eip197_minifw
+endef
+$(eval $(call BuildPackage,eip197-mini-firmware))
diff --git a/package/firmware/linux-firmware/qca.mk b/package/firmware/linux-firmware/qca.mk
new file mode 100644
index 0000000..5f44fe4
--- /dev/null
+++ b/package/firmware/linux-firmware/qca.mk
@@ -0,0 +1,47 @@
+Package/ar3k-firmware = $(call Package/firmware-default,ath3k firmware,,LICENSE.QualcommAtheros_ar3k)
+define Package/ar3k-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ar3k
+ $(CP) \
+ $(PKG_BUILD_DIR)/ar3k/*.dfu \
+ $(1)/lib/firmware/ar3k
+ $(INSTALL_DIR) $(1)/lib/firmware/qca
+ $(CP) \
+ $(PKG_BUILD_DIR)/qca/*.bin \
+ $(1)/lib/firmware/qca
+endef
+$(eval $(call BuildPackage,ar3k-firmware))
+
+
+Package/ath6k-firmware = $(call Package/firmware-default,AR600X firmware)
+define Package/ath6k-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath6k
+ $(CP) \
+ $(PKG_BUILD_DIR)/ath6k/* \
+ $(1)/lib/firmware/ath6k
+endef
+$(eval $(call BuildPackage,ath6k-firmware))
+
+Package/ath9k-htc-firmware = $(call Package/firmware-default,AR9271/AR7010 firmware,,LICENCE.open-ath9k-htc-firmware)
+define Package/ath9k-htc-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath9k_htc
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath9k_htc/htc_9271-1.4.0.fw \
+ $(PKG_BUILD_DIR)/ath9k_htc/htc_7010-1.4.0.fw \
+ $(1)/lib/firmware/ath9k_htc
+endef
+$(eval $(call BuildPackage,ath9k-htc-firmware))
+
+Package/carl9170-firmware = $(call Package/firmware-default,AR9170 firmware,,carl9170fw/GPL)
+define Package/carl9170-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/carl9170-1.fw $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,carl9170-firmware))
+
+Package/wil6210-firmware = $(call Package/firmware-default,wil6210 firmware)
+define Package/wil6210-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/wil6210.fw $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/wil6210.brd $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,wil6210-firmware))
diff --git a/package/firmware/linux-firmware/qca_ath10k.mk b/package/firmware/linux-firmware/qca_ath10k.mk
new file mode 100644
index 0000000..b3bfe8a
--- /dev/null
+++ b/package/firmware/linux-firmware/qca_ath10k.mk
@@ -0,0 +1,138 @@
+Package/ath10k-board-qca4019 = $(call Package/firmware-default,ath10k qca4019 board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca4019/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA4019/hw1.0/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA4019/hw1.0/
+endef
+$(eval $(call BuildPackage,ath10k-board-qca4019))
+Package/ath10k-firmware-qca4019 = $(call Package/firmware-default,ath10k qca4019 firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca4019/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA4019/hw1.0/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA4019/hw1.0/firmware-5.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca4019))
+
+Package/ath10k-board-qca9377 = $(call Package/firmware-default,ath10k qca9377 board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca9377/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9377/hw1.0/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA9377/hw1.0/
+endef
+$(eval $(call BuildPackage,ath10k-board-qca9377))
+Package/ath10k-firmware-qca9377 = $(call Package/firmware-default,ath10k qca9377 firmware,+ath10k-board-qca9377,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca9377/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9377/hw1.0/firmware-6.bin \
+ $(1)/lib/firmware/ath10k/QCA9377/hw1.0/firmware-6.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca9377))
+
+Package/ath10k-board-qca9887 = $(call Package/firmware-default,ath10k qca9887 board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca9887/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9887/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9887/hw1.0/board.bin \
+ $(1)/lib/firmware/ath10k/QCA9887/hw1.0/board.bin
+endef
+$(eval $(call BuildPackage,ath10k-board-qca9887))
+Package/ath10k-firmware-qca9887 = $(call Package/firmware-default,ath10k qca9887 firmware,+ath10k-board-qca9887,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca9887/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9887/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9887/hw1.0/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA9887/hw1.0/firmware-5.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca9887))
+
+Package/ath10k-board-qca9888 = $(call Package/firmware-default,ath10k qca9888 board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca9888/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9888/hw2.0/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
+endef
+$(eval $(call BuildPackage,ath10k-board-qca9888))
+Package/ath10k-firmware-qca9888 = $(call Package/firmware-default,ath10k qca9888 firmware,+ath10k-board-qca9888,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca9888/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9888/hw2.0/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca9888))
+
+Package/ath10k-board-qca988x = $(call Package/firmware-default,ath10k qca988x board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca988x/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA988X/hw2.0/board.bin \
+ $(1)/lib/firmware/ath10k/QCA988X/hw2.0/
+endef
+$(eval $(call BuildPackage,ath10k-board-qca988x))
+Package/ath10k-firmware-qca988x = $(call Package/firmware-default,ath10k qca988x firmware,+ath10k-board-qca988x,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca988x/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA988X/hw2.0/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca988x))
+
+Package/ath10k-firmware-qca6174 = $(call Package/firmware-default,ath10k qca6174 firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca6174/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA6174/hw2.1
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA6174/hw2.1/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA6174/hw2.1/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA6174/hw2.1/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA6174/hw2.1/firmware-5.bin
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA6174/hw3.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA6174/hw3.0/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA6174/hw3.0/
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA6174/hw3.0/firmware-6.bin \
+ $(1)/lib/firmware/ath10k/QCA6174/hw3.0/firmware-6.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca6174))
+
+Package/ath10k-board-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca99x0/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA99X0/hw2.0/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA99X0/hw2.0/board-2.bin
+endef
+$(eval $(call BuildPackage,ath10k-board-qca99x0))
+
+Package/ath10k-firmware-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 firmware,+ath10k-board-qca99x0,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca99x0/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA99X0/hw2.0/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA99X0/hw2.0/firmware-5.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca99x0))
+
+Package/ath10k-board-qca9984 = $(call Package/firmware-default,ath10k qca9984 board firmware,,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-board-qca9984/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9984/hw1.0/board-2.bin \
+ $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
+endef
+$(eval $(call BuildPackage,ath10k-board-qca9984))
+Package/ath10k-firmware-qca9984 = $(call Package/firmware-default,ath10k qca9984 firmware,+ath10k-board-qca9984,LICENSE.QualcommAtheros_ath10k)
+define Package/ath10k-firmware-qca9984/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath10k/QCA9984/hw1.0/firmware-5.bin \
+ $(1)/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
+endef
+$(eval $(call BuildPackage,ath10k-firmware-qca9984))
diff --git a/package/firmware/linux-firmware/qca_ath11k.mk b/package/firmware/linux-firmware/qca_ath11k.mk
new file mode 100644
index 0000000..3571198
--- /dev/null
+++ b/package/firmware/linux-firmware/qca_ath11k.mk
@@ -0,0 +1,24 @@
+Package/ath11k-firmware-qca6390 = $(call Package/firmware-default,QCA6390 ath11k firmware,,LICENCE.atheros_firmware)
+define Package/ath11k-firmware-qca6390/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCA6390/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath11k/QCA6390/hw2.0/* $(1)/lib/firmware/ath11k/QCA6390/hw2.0/
+endef
+$(eval $(call BuildPackage,ath11k-firmware-qca6390))
+
+Package/ath11k-firmware-wcn6750 = $(call Package/firmware-default,WCN6750 ath11k firmware,,LICENCE.atheros_firmware)
+define Package/ath11k-firmware-wcn6750/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/WCN6750/hw1.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath11k/WCN6750/hw1.0/* $(1)/lib/firmware/ath11k/WCN6750/hw1.0/
+endef
+$(eval $(call BuildPackage,ath11k-firmware-wcn6750))
+
+Package/ath11k-firmware-wcn6855 = $(call Package/firmware-default,WCN6855 ath11k firmware,,LICENCE.atheros_firmware)
+define Package/ath11k-firmware-wcn6855/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/WCN6855/hw2.0
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ath11k/WCN6855/hw2.0/* $(1)/lib/firmware/ath11k/WCN6855/hw2.0/
+ $(LN) ./hw2.0 $(1)/lib/firmware/ath11k/WCN6855/hw2.1
+endef
+$(eval $(call BuildPackage,ath11k-firmware-wcn6855))
diff --git a/package/firmware/linux-firmware/realtek.mk b/package/firmware/linux-firmware/realtek.mk
new file mode 100644
index 0000000..5ba679d
--- /dev/null
+++ b/package/firmware/linux-firmware/realtek.mk
@@ -0,0 +1,193 @@
+Package/r8152-firmware = $(call Package/firmware-default,RealTek RTL8152 firmware)
+define Package/r8152-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtl_nic
+ $(CP) \
+ $(PKG_BUILD_DIR)/rtl_nic/rtl8153* \
+ $(PKG_BUILD_DIR)/rtl_nic/rtl8156* \
+ $(1)/lib/firmware/rtl_nic
+endef
+$(eval $(call BuildPackage,r8152-firmware))
+
+Package/r8169-firmware = $(call Package/firmware-default,RealTek RTL8169 firmware)
+define Package/r8169-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtl_nic
+ $(CP) \
+ $(PKG_BUILD_DIR)/rtl_nic/rtl810* \
+ $(PKG_BUILD_DIR)/rtl_nic/rtl812* \
+ $(PKG_BUILD_DIR)/rtl_nic/rtl8168* \
+ $(PKG_BUILD_DIR)/rtl_nic/rtl84* \
+ $(1)/lib/firmware/rtl_nic
+endef
+$(eval $(call BuildPackage,r8169-firmware))
+
+Package/rtl8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8188eu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(CP) \
+ $(PKG_BUILD_DIR)/rtlwifi/rtl8188eufw.bin \
+ $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8188eu-firmware))
+
+Package/rtl8188fu-firmware = $(call Package/firmware-default,RealTek RTL8188FU firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8188fu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(CP) \
+ $(PKG_BUILD_DIR)/rtlwifi/rtl8188fufw.bin \
+ $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8188fu-firmware))
+
+Package/rtl8192ce-firmware = $(call Package/firmware-default,RealTek RTL8192CE firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8192ce-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cfw.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cfwU.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cfwU_B.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8192ce-firmware))
+
+Package/rtl8192cu-firmware = $(call Package/firmware-default,RealTek RTL8192CU firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8192cu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cufw.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cufw_A.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cufw_B.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cufw_TMSC.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8192cu-firmware))
+
+Package/rtl8192de-firmware = $(call Package/firmware-default,RealTek RTL8192DE firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8192de-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192defw.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8192de-firmware))
+
+Package/rtl8192eu-firmware = $(call Package/firmware-default,RealTek RTL8192EU firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8192eu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192eu_nic.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8192eu-firmware))
+
+Package/rtl8192se-firmware = $(call Package/firmware-default,RealTek RTL8192SE firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8192se-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192sefw.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8192se-firmware))
+
+Package/rtl8723au-firmware = $(call Package/firmware-default,RealTek RTL8723AU firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8723au-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_A.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_B.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_B_NoBT.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8723au-firmware))
+
+Package/rtl8723be-firmware = $(call Package/firmware-default,RealTek RTL8723BE firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8723be-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723befw_36.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723befw.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8723be-firmware))
+
+Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8723bu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi
+ ln -s rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi/rtl8723bs_nic.bin
+endef
+$(eval $(call BuildPackage,rtl8723bu-firmware))
+
+Package/rtl8723de-firmware = $(call Package/firmware-default,RealTek RTL8723DE firmware)
+define Package/rtl8723de-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw88
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw88/rtw8723d_fw.bin $(1)/lib/firmware/rtw88
+endef
+$(eval $(call BuildPackage,rtl8723de-firmware))
+
+Package/rtl8761a-firmware = $(call Package/firmware-default,RealTek RTL8761A firmware)
+define Package/rtl8761a-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtl_bt
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtl_bt/rtl8761a_fw.bin $(1)/lib/firmware/rtl_bt
+endef
+$(eval $(call BuildPackage,rtl8761a-firmware))
+
+Package/rtl8761b-firmware = $(call Package/firmware-default,RealTek RTL8761B firmware)
+define Package/rtl8761b-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtl_bt
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtl_bt/rtl8761b_config.bin $(1)/lib/firmware/rtl_bt
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtl_bt/rtl8761b_fw.bin $(1)/lib/firmware/rtl_bt
+endef
+$(eval $(call BuildPackage,rtl8761b-firmware))
+
+Package/rtl8761bu-firmware = $(call Package/firmware-default,RealTek RTL8761BU firmware)
+define Package/rtl8761bu-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtl_bt
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtl_bt/rtl8761bu_config.bin $(1)/lib/firmware/rtl_bt
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtl_bt/rtl8761bu_fw.bin $(1)/lib/firmware/rtl_bt
+endef
+$(eval $(call BuildPackage,rtl8761bu-firmware))
+
+Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware,,LICENCE.rtlwifi_firmware.txt)
+define Package/rtl8821ae-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8821aefw_29.bin $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8821aefw_wowlan.bin $(1)/lib/firmware/rtlwifi
+endef
+$(eval $(call BuildPackage,rtl8821ae-firmware))
+
+Package/rtl8821ce-firmware = $(call Package/firmware-default,RealTek RTL8821CE firmware)
+define Package/rtl8821ce-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw88
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw88/rtw8821c_fw.bin $(1)/lib/firmware/rtw88
+endef
+$(eval $(call BuildPackage,rtl8821ce-firmware))
+
+Package/rtl8822be-firmware = $(call Package/firmware-default,RealTek RTL8822BE firmware)
+define Package/rtl8822be-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw88
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw88/rtw8822b_fw.bin $(1)/lib/firmware/rtw88
+endef
+$(eval $(call BuildPackage,rtl8822be-firmware))
+
+Package/rtl8822ce-firmware = $(call Package/firmware-default,RealTek RTL8822CE firmware)
+define Package/rtl8822ce-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw88
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw88/rtw8822c_fw.bin $(1)/lib/firmware/rtw88
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw88/rtw8822c_wow_fw.bin $(1)/lib/firmware/rtw88
+endef
+$(eval $(call BuildPackage,rtl8822ce-firmware))
+
+Package/rtl8851be-firmware = $(call Package/firmware-default,RealTek RTL8851BE firmware)
+define Package/rtl8851be-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw89
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw89/rtw8851b_fw.bin $(1)/lib/firmware/rtw89
+endef
+$(eval $(call BuildPackage,rtl8851be-firmware))
+
+Package/rtl8852ae-firmware = $(call Package/firmware-default,RealTek RTL8852AE firmware)
+define Package/rtl8852ae-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw89
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw89/rtw8852a_fw.bin $(1)/lib/firmware/rtw89
+endef
+$(eval $(call BuildPackage,rtl8852ae-firmware))
+
+Package/rtl8852be-firmware = $(call Package/firmware-default,RealTek RTL8852BE firmware)
+define Package/rtl8852be-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw89
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw89/rtw8852b_fw.bin $(1)/lib/firmware/rtw89
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw89/rtw8852b_fw-1.bin $(1)/lib/firmware/rtw89
+endef
+$(eval $(call BuildPackage,rtl8852be-firmware))
+
+Package/rtl8852ce-firmware = $(call Package/firmware-default,RealTek RTL8852CE firmware)
+define Package/rtl8852ce-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtw89
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rtw89/rtw8852c_fw.bin $(1)/lib/firmware/rtw89
+endef
+$(eval $(call BuildPackage,rtl8852ce-firmware))
diff --git a/package/firmware/linux-firmware/rsi.mk b/package/firmware/linux-firmware/rsi.mk
new file mode 100644
index 0000000..6d960a2
--- /dev/null
+++ b/package/firmware/linux-firmware/rsi.mk
@@ -0,0 +1,6 @@
+Package/rs9113-firmware = $(call Package/firmware-default,RedPine Signals rs9113 firmware)
+define Package/rs9113-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rsi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/rsi/rs9113_wlan_qspi.rps $(1)/lib/firmware/rsi
+endef
+$(eval $(call BuildPackage,rs9113-firmware))
diff --git a/package/firmware/linux-firmware/ti.mk b/package/firmware/linux-firmware/ti.mk
new file mode 100644
index 0000000..a4f28ef
--- /dev/null
+++ b/package/firmware/linux-firmware/ti.mk
@@ -0,0 +1,39 @@
+Package/wl12xx-firmware = $(call Package/firmware-default,TI WL12xx firmware,,LICENCE.ti-connectivity)
+define Package/wl12xx-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl127x-fw-5-mr.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl127x-fw-5-plt.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl127x-fw-5-sr.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl127x-nvs.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl128x-fw-5-mr.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl128x-fw-5-plt.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl128x-fw-5-sr.bin \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl128x-nvs.bin \
+ $(1)/lib/firmware/ti-connectivity
+ ln -s wl127x-nvs.bin $(1)/lib/firmware/ti-connectivity/wl1271-nvs.bin
+endef
+$(eval $(call BuildPackage,wl12xx-firmware))
+
+Package/wl18xx-firmware = $(call Package/firmware-default,TI WL18xx firmware,,LICENCE.ti-connectivity)
+define Package/wl18xx-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/ti-connectivity/wl18xx-fw-4.bin \
+ $(1)/lib/firmware/ti-connectivity
+endef
+$(eval $(call BuildPackage,wl18xx-firmware))
+
+Package/ti-3410-firmware = $(call Package/firmware-default,TI 3410 firmware)
+define Package/ti-3410-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/ti_3410.fw $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,ti-3410-firmware))
+
+Package/ti-5052-firmware = $(call Package/firmware-default,TI 5052 firmware)
+define Package/ti-5052-firmware/install
+ $(INSTALL_DIR) $(1)/lib/firmware
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/ti_5052.fw $(1)/lib/firmware
+endef
+$(eval $(call BuildPackage,ti-5052-firmware))