+define Device/DniImage
+ KERNEL_SUFFIX := -fit-uImage.itb
+ KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
+ KERNEL_NAME := Image
+ NETGEAR_BOARD_ID :=
+ NETGEAR_HW_ID :=
+ IMAGES := factory.img sysupgrade.bin
+ IMAGE/factory.img := append-kernel | pad-offset 64k 64 | append-uImage-fakehdr filesystem | append-rootfs | pad-rootfs | netgear-dni
+ IMAGE/sysupgrade.bin := append-kernel | pad-offset 64k 64 | append-uImage-fakehdr filesystem | append-rootfs | pad-rootfs | append-metadata
+endef
+
+define Build/append-rootfshdr
+ mkimage -A $(LINUX_KARCH) \
+ -O linux -T filesystem \
+ -C lzma -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
+ -n root.squashfs -d $(IMAGE_ROOTFS) $@.new
+ dd if=$@.new bs=64 count=1 >> $(IMAGE_KERNEL)
+endef
+
+define Build/mkmylofw_32m
+ $(eval device_id=$(word 1,$(1)))
+ $(eval revision=$(word 2,$(1)))
+
+ let \
+ size="$$(stat -c%s $@)" \
+ pad="$(subst k,* 1024,$(BLOCKSIZE))" \
+ pad="(pad - (size % pad)) % pad" \
+ newsize='size + pad'; \
+ $(STAGING_DIR_HOST)/bin/mkmylofw \
+ -B WPE72 -i 0x11f6:$(device_id):0x11f6:$(device_id) -r $(revision) \
+ -s 0x2000000 -p0x180000:$$newsize:al:0x80208000:"OpenWrt":$@ \
+ $@.new
+ @mv $@.new $@
+endef
+
+define Build/qsdk-ipq-factory-nand-askey
+ $(TOPDIR)/scripts/mkits-qsdk-ipq-image.sh $@.its\
+ askey_kernel $(IMAGE_KERNEL) \
+ askey_fs $(IMAGE_ROOTFS) \
+ ubifs $@
+ PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
+ @mv $@.new $@
+endef
+
+define Build/SenaoFW
+ -$(STAGING_DIR_HOST)/bin/mksenaofw \
+ -n $(BOARD_NAME) -r $(VENDOR_ID) -p $(1) \
+ -c $(DATECODE) -w $(2) -x $(CW_VER) -t 0 \
+ -e $@ \
+ -o $@.new
+ @cp $@.new $@
+endef
+
+define Build/wrgg-image
+ mkwrggimg -i $@ \
+ -o $@.new \
+ -d "$(WRGG_DEVNAME)" \
+ -s "$(WRGG_SIGNATURE)" \
+ -v "" -m "" -B ""
+ mv $@.new $@
+endef
+
+define Device/8dev_habanero-dvk
+ $(call Device/FitImageLzma)
+ DEVICE_VENDOR := 8devices
+ DEVICE_MODEL := Habanero DVK
+ IMAGE_SIZE := 30976k
+ SOC := qcom-ipq4019
+ DEVICE_PACKAGES := ipq-wifi-8dev_habanero-dvk
+ IMAGES := sysupgrade.bin
+ IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | append-rootfs | pad-rootfs | append-metadata | check-size
+endef
+TARGET_DEVICES += 8dev_habanero-dvk
+
+define Device/8dev_jalapeno-common
+ $(call Device/FitImage)
+ $(call Device/UbiFit)
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SOC := qcom-ipq4018
+endef
+
+define Device/8dev_jalapeno
+ $(call Device/8dev_jalapeno-common)
+ DEVICE_VENDOR := 8devices
+ DEVICE_MODEL := Jalapeno
+endef
+TARGET_DEVICES += 8dev_jalapeno
+
+define Device/alfa-network_ap120c-ac
+ $(call Device/FitImage)
+ $(call Device/UbiFit)
+ DEVICE_VENDOR := ALFA Network
+ DEVICE_MODEL := AP120C-AC
+ SOC := qcom-ipq4018
+ DEVICE_PACKAGES := kmod-usb-acm \
+ kmod-tpm-i2c-atmel uboot-envtools
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ IMAGE_SIZE := 65536k
+ IMAGES := nand-factory.bin nand-sysupgrade.bin
+ IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
+endef
+TARGET_DEVICES += alfa-network_ap120c-ac
+
+define Device/aruba_ap-303
+ $(call Device/FitImageLzma)
+ DEVICE_VENDOR := Aruba
+ DEVICE_MODEL := AP-303
+ SOC := qcom-ipq4029
+ DEVICE_PACKAGES := ipq-wifi-aruba_ap-303
+ IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += aruba_ap-303
+
+define Device/aruba_ap-303h
+ $(call Device/FitImageLzma)
+ DEVICE_VENDOR := Aruba
+ DEVICE_MODEL := AP-303H
+ SOC := qcom-ipq4029
+ DEVICE_PACKAGES := ipq-wifi-aruba_ap-303
+ IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += aruba_ap-303h
+
+define Device/asus_map-ac2200
+ $(call Device/FitImageLzma)
+ DEVICE_VENDOR := ASUS
+ DEVICE_MODEL := Lyra (MAP-AC2200)
+ SOC := qcom-ipq4019
+ IMAGES := sysupgrade.bin
+ DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-ath3k
+endef
+TARGET_DEVICES += asus_map-ac2200