ar71xx: add userspace support for D-Link DIR-869 A1, generate images
[openwrt/openwrt.git] / target / linux / ar71xx / image / generic.mk
index 6e5ef2b68b75b19fb5c48c389823ea8997f7b1d0..c2a25779fa9f4cc2686586dc23a5b7c60080747f 100644 (file)
@@ -106,7 +106,7 @@ define Device/wndr3700
   MTDPARTS = spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,7680k(firmware),64k(art)ro
   IMAGES := sysupgrade.bin factory.img factory-NA.img
   KERNEL := kernel-bin | patch-cmdline | lzma -d20 | netgear-uImage lzma
-  IMAGE/default = append-kernel $$$$(BLOCKSIZE) | netgear-squashfs | append-rootfs | pad-rootfs
+  IMAGE/default = append-kernel | pad-to $$$$(BLOCKSIZE) | netgear-squashfs | append-rootfs | pad-rootfs
   IMAGE/sysupgrade.bin = $$(IMAGE/default) | check-size $$$$(IMAGE_SIZE)
   IMAGE/factory.img = $$(IMAGE/default) | netgear-dni | check-size $$$$(IMAGE_SIZE)
   IMAGE/factory-NA.img = $$(IMAGE/default) | netgear-dni NA | check-size $$$$(IMAGE_SIZE)
@@ -156,7 +156,7 @@ define Device/cap324
   BOARDNAME := CAP324
   DEVICE_PROFILE := CAP324
   IMAGE_SIZE = 15296k
-  MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,15296k(firmware),640k(certs),64k(nvram),64k(art)
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,15296k(firmware),640k(certs),64k(nvram),64k(art)ro
 endef
 
 TARGET_DEVICES += cap324
@@ -167,7 +167,7 @@ define Device/cap324-nocloud
   BOARDNAME := CAP324
   DEVICE_PROFILE := CAP324
   IMAGE_SIZE = 16000k
-  MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,16000k(firmware),64k(art)
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
 endef
 
 TARGET_DEVICES += cap324-nocloud
@@ -178,7 +178,7 @@ define Device/cr3000
   BOARDNAME := CR3000
   DEVICE_PROFILE := CR3000
   IMAGE_SIZE = 7104k
-  MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)ro
 endef
 
 TARGET_DEVICES += cr3000
@@ -189,7 +189,7 @@ define Device/cr3000-nocloud
   BOARDNAME := CR3000
   DEVICE_PROFILE := CR3000
   IMAGE_SIZE = 7808k
-  MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7808k(firmware),64k(art)
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
 endef
 
 TARGET_DEVICES += cr3000-nocloud
@@ -200,7 +200,7 @@ define Device/cr5000
   BOARDNAME := CR5000
   DEVICE_PROFILE := CR5000
   IMAGE_SIZE = 7104k
-  MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)ro
 endef
 
 TARGET_DEVICES += cr5000
@@ -211,7 +211,7 @@ define Device/cr5000-nocloud
   BOARDNAME := CR5000
   DEVICE_PROFILE := CR5000
   IMAGE_SIZE = 7808k
-  MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7808k(firmware),64k(art)
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
 endef
 
 TARGET_DEVICES += cr5000-nocloud
@@ -410,7 +410,7 @@ define Device/NBG6616
   CMDLINE += mem=128M
   IMAGES := sysupgrade.bin
   KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 boot/vmlinux.lzma.uImage
-  IMAGE/sysupgrade.bin = append-kernel $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+  IMAGE/sysupgrade.bin = append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
   # We cannot currently build a factory image. It is the sysupgrade image
   # prefixed with a header (which is actually written into the MTD device).
   # The header is 2kiB and is filled with 0xff. The format seems to be:
@@ -443,7 +443,7 @@ define Device/c-55
   KERNEL_SIZE = 2048k
   IMAGE_SIZE = 15872k
   MTDPARTS = spi0.0:256k(u-boot)ro,128k(u-boot-env)ro,2048k(kernel),13824k(rootfs),13824k(opt)ro,2624k(failsafe)ro,64k(art)ro,15872k@0x60000(firmware)
-  IMAGE/sysupgrade.bin = append-kernel $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+  IMAGE/sysupgrade.bin = append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
 endef
 
 TARGET_DEVICES += c-55
@@ -472,55 +472,53 @@ endef
 TARGET_DEVICES += hiwifi-hc6361
 
 
-# The pre-filled 64 bytes consist of
-# - 28 bytes seama_header
-# - 36 bytes of META data (4-bytes aligned)
-define Build/seama-factory
-       ( dd if=/dev/zero bs=64 count=1; cat $(word 1,$^) ) >$@.loader.tmp
-       ( dd if=$@.loader.tmp bs=64k conv=sync; dd if=$(word 2,$^) ) >$@.tmp.0
-       tail -c +65 $@.tmp.0 >$@.tmp.1
-       $(STAGING_DIR_HOST)/bin/seama \
-               -i $@.tmp.1 \
-               -m "dev=/dev/mtdblock/1" -m "type=firmware"
-       $(STAGING_DIR_HOST)/bin/seama \
-               -s $@ \
-               -m "signature=$(1)" \
-               -i $@.tmp.1.seama
-       rm -f $@.loader.tmp $@.tmp.*
-endef
-
-define Build/seama-sysupgrade
-       $(STAGING_DIR_HOST)/bin/seama \
-               -i $(word 1,$^) \
-               -m "dev=/dev/mtdblock/1" -m "type=firmware"
-       ( dd if=$(word 1,$^).seama bs=64k conv=sync; dd if=$(word 2,$^) ) >$@
-       rm -f $(word 1,$^).seama
-endef
-
-define Build/seama-initramfs
-       $(STAGING_DIR_HOST)/bin/seama \
-               -i $@ \
-               -m "dev=/dev/mtdblock/1" -m "type=firmware"
+define Build/seama
+       $(STAGING_DIR_HOST)/bin/seama -i $@ $(if $(1),$(1),-m "dev=/dev/mtdblock/1" -m "type=firmware")
        mv $@.seama $@
 endef
 
-define Build/seama-pad-rootfs
-       $(STAGING_DIR_HOST)/bin/padjffs2 $(word 2,$^) -c 64 >>$@
+define Build/seama-seal
+       $(call Build/seama,-s $@.seama $(1))
 endef
 
 define Device/seama
   CONSOLE := ttyS0,115200
   LOADER_TYPE := bin
-  KERNEL := kernel-bin | lzma | loader-kernel-cmdline | lzma
-  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | seama-initramfs
+  BLOCKSIZE := 64k
+  KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma
+  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | seama
   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX).seama
   IMAGES := sysupgrade.bin factory.bin
-  IMAGE/sysupgrade.bin := seama-sysupgrade $$$$(SEAMA_SIGNATURE) | seama-pad-rootfs | check-size $$$$(IMAGE_SIZE)
-  IMAGE/factory.bin := seama-factory $$$$(SEAMA_SIGNATURE) | seama-pad-rootfs | check-size $$$$(IMAGE_SIZE)
+
+  # 64 bytes offset:
+  # - 28 bytes seama_header
+  # - 36 bytes of META data (4-bytes aligned)
+  IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
+  IMAGE/sysupgrade.bin := \
+       $$(IMAGE/default) | seama | pad-rootfs | \
+       check-size $$$$(IMAGE_SIZE)
+  IMAGE/factory.bin := \
+       $$(IMAGE/default) | seama | pad-rootfs | \
+       seama-seal -m "signature=$$$$(SEAMA_SIGNATURE)" | \
+       check-size $$$$(IMAGE_SIZE)
   SEAMA_SIGNATURE :=
   DEVICE_VARS += SEAMA_SIGNATURE
 endef
 
+define Device/dir-869-a1
+$(Device/seama)
+  DEVICE_TITLE := D-Link DIR-869 rev. A1
+  DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca988x
+  BOARDNAME = DIR-869-A1
+  IMAGE_SIZE = 15872k
+  MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
+  SEAMA_SIGNATURE := wrgac54_dlink.2015_dir869
+  IMAGE/factory.bin := \
+       $$(IMAGE/default) | pad-rootfs -x 64 | \
+       seama | seama-seal -m "signature=$$$$(SEAMA_SIGNATURE)" | \
+       check-size $$$$(IMAGE_SIZE)
+endef
+
 define Device/mynet-n600
 $(Device/seama)
   DEVICE_TITLE := Western Digital My Net N600
@@ -551,4 +549,4 @@ $(Device/seama)
   SEAMA_SIGNATURE := wrgac26_qihoo360_360rg
 endef
 
-TARGET_DEVICES += mynet-n600 mynet-n750 qihoo-c301
+TARGET_DEVICES += dir-869-a1 mynet-n600 mynet-n750 qihoo-c301