armbian-firmware: new package
authorSergey Matyukevich <geomatsi@gmail.com>
Mon, 6 Nov 2017 10:16:50 +0000 (13:16 +0300)
committerPeter Korsgaard <peter@korsgaard.com>
Tue, 7 Nov 2017 09:03:06 +0000 (10:03 +0100)
This package enables access to firmware blobs from Armbian firmware
repository: https://github.com/armbian/firmware

That repository contains multiple firmware blobs grouped by vendor.
For the sake of convenience each group can be independently selected
using Kconfig options. This commit enables the following options:
- firmware blobs for XR819 SDIO WiFi chip
- firmware blobs for AP6212 WiFi/BT combo

Armbian firmware repository does not include any specific licenses.
Most part of those firmware blobs belongs to various Android/Linux
SDK packages provided by board vendors. As a result, this package
makes use of the following conservative approach for all the
selected firmware binaries:
  FIRMWARE_LICENSE = PROPRIETARY
  FIRMWARE_REDISTRIBUTE = NO

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
DEVELOPERS
package/Config.in
package/armbian-firmware/Config.in [new file with mode: 0644]
package/armbian-firmware/armbian-firmware.hash [new file with mode: 0644]
package/armbian-firmware/armbian-firmware.mk [new file with mode: 0644]

index c651bf26fa2e70ebf4c1903ecfb64966369d2f20..d27d55f73da8fd3a20e4bfa49352af72c7eff7bf 100644 (file)
@@ -1432,6 +1432,7 @@ F:        package/mpir/
 
 N:     Sergey Matyukevich <geomatsi@gmail.com>
 F:     package/xr819-xradio/
+F:     package/armbian-firmware/
 
 N:     Sergio Prado <sergio.prado@e-labworks.com>
 F:     package/libgdiplus/
index fe5ccc434eab5fb9f9c02e52247e170ef450296b..23526b4124b5cbbe63f1ff0352ba6bba7b3ea60c 100644 (file)
@@ -369,6 +369,7 @@ menu "Firmware"
        source "package/wilc1000-firmware/Config.in"
        source "package/wilink-bt-firmware/Config.in"
        source "package/zd1211-firmware/Config.in"
+       source "package/armbian-firmware/Config.in"
 endmenu
        source "package/a10disp/Config.in"
        source "package/acpica/Config.in"
diff --git a/package/armbian-firmware/Config.in b/package/armbian-firmware/Config.in
new file mode 100644 (file)
index 0000000..761c316
--- /dev/null
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_ARMBIAN_FIRMWARE
+       bool "armbian-firmware"
+       help
+         This package enables access to various firmware
+         blobs from the Armbian firmware repository.
+
+         https://github.com/armbian/firmware
+
+if BR2_PACKAGE_ARMBIAN_FIRMWARE
+
+config BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819
+       bool "XR819 WiFi"
+       help
+         Firmware files for XR819 WiFi SDIO chip.
+
+config BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212
+       bool "AP6212 WiFi/BT"
+       help
+         Firmware files for AP6212 WiFi/BT combo chip.
+
+endif
diff --git a/package/armbian-firmware/armbian-firmware.hash b/package/armbian-firmware/armbian-firmware.hash
new file mode 100644 (file)
index 0000000..0f3858d
--- /dev/null
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256 876958ce6ba8a4a01a424f2b4455208b7a989eaba96015649c774340553f0c35 armbian-firmware-455d6b6701178dafe7fd0168eb4a4ef78a8d24a3.tar.gz
diff --git a/package/armbian-firmware/armbian-firmware.mk b/package/armbian-firmware/armbian-firmware.mk
new file mode 100644 (file)
index 0000000..e77d516
--- /dev/null
@@ -0,0 +1,53 @@
+################################################################################
+#
+# armbian-firmware
+#
+################################################################################
+
+ARMBIAN_FIRMWARE_VERSION = 455d6b6701178dafe7fd0168eb4a4ef78a8d24a3
+ARMBIAN_FIRMWARE_SITE = https://github.com/armbian/firmware
+ARMBIAN_FIRMWARE_SITE_METHOD = git
+
+# XR819 WiFi firmware
+ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819),y)
+ARMBIAN_FIRMWARE_FILES += \
+       xr819/boot_xr819.bin  \
+       xr819/fw_xr819.bin  \
+       xr819/sdd_xr819.bin
+endif
+
+# AP6212 WiFi/BT combo firmware
+ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212),y)
+ARMBIAN_FIRMWARE_DIRS += ap6212
+endif
+
+ifneq ($(ARMBIAN_FIRMWARE_FILES),)
+define ARMBIAN_FIRMWARE_INSTALL_FILES
+       cd $(@D) ; \
+       $(TAR) c $(sort $(ARMBIAN_FIRMWARE_FILES)) | \
+               $(TAR) x -C $(TARGET_DIR)/lib/firmware
+endef
+endif
+
+ifneq ($(ARMBIAN_FIRMWARE_DIRS),)
+# We need to rm -rf the destination directory to avoid copying
+# into it in itself, should we re-install the package.
+define ARMBIAN_FIRMWARE_INSTALL_DIRS
+       $(foreach d,$(ARMBIAN_FIRMWARE_DIRS), \
+               rm -rf $(TARGET_DIR)/lib/firmware/$(d); \
+               cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep))
+endef
+endif
+
+ifneq ($(ARMBIAN_FIRMWARE_FILES)$(ARMBIAN_FIRMWARE_DIRS),)
+ARMBIAN_FIRMWARE_LICENSE = PROPRIETARY
+ARMBIAN_FIRMWARE_REDISTRIBUTE = NO
+endif
+
+define ARMBIAN_FIRMWARE_INSTALL_TARGET_CMDS
+       mkdir -p $(TARGET_DIR)/lib/firmware
+       $(ARMBIAN_FIRMWARE_INSTALL_FILES)
+       $(ARMBIAN_FIRMWARE_INSTALL_DIRS)
+endef
+
+$(eval $(generic-package))