firmware-utils: kernel image generator for TP-Link RE450
[openwrt/openwrt.git] / target / linux / ar71xx / image / tp-link.mk
index 145fa0f0cdd524a3e46cc4d5f5a5a93abbd86860..c6508839cc87f89b672374fd6deb0162a73dc4be 100644 (file)
@@ -12,7 +12,7 @@ define Build/mktplinkfw
        -$(STAGING_DIR_HOST)/bin/mktplinkfw \
                -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) \
                -m $(TPLINK_HEADER_VERSION) \
-               -k $(word 1,$^) \
+               -k $(IMAGE_KERNEL) \
                -r $@ \
                -o $@.new \
                -j -X 0x40000 \
@@ -21,10 +21,10 @@ define Build/mktplinkfw
                $(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
 endef
 
-# mktplinkfw-initramfs <optional extra arguments to mktplinkfw binary>
+# mktplinkfw-combined
 #
 # -c combined image
-define Build/mktplinkfw-initramfs
+define Build/mktplinkfw-combined
        $(STAGING_DIR_HOST)/bin/mktplinkfw \
                -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) $(1) \
                -m $(TPLINK_HEADER_VERSION) \
@@ -35,12 +35,22 @@ define Build/mktplinkfw-initramfs
        @mv $@.new $@
 endef
 
+# add RE450 and similar header to the kernel image
+define Build/mktplinkfw-kernel
+       $(STAGING_DIR_HOST)/bin/mktplinkfw-kernel \
+               -H $(TPLINK_HWID) -N OpenWrt -V $(REVISION) \
+               -L $(KERNEL_LOADADDR) -E $(KERNEL_LOADADDR) \
+               -k $@ \
+               -o $@.new
+       @mv $@.new $@
+endef
+
 define Device/tplink
   TPLINK_HWREV := 0x1
   TPLINK_HEADER_VERSION := 1
   LOADER_TYPE := gz
   KERNEL := kernel-bin | patch-cmdline | lzma
-  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | mktplinkfw-initramfs
+  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | mktplinkfw-combined
   IMAGES := sysupgrade.bin factory.bin
   IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade
   IMAGE/factory.bin := append-rootfs | mktplinkfw factory
@@ -52,7 +62,7 @@ $(Device/tplink)
   COMPILE := loader-$(1).gz
   COMPILE/loader-$(1).gz := loader-okli-compile
   KERNEL := copy-file $(KDIR)/vmlinux.bin.lzma | uImage lzma -M 0x4f4b4c49 | loader-okli $(1)
-  KERNEL_INITRAMFS := copy-file $(KDIR)/vmlinux-initramfs.bin.lzma | loader-kernel-cmdline | mktplinkfw-initramfs
+  KERNEL_INITRAMFS := copy-file $(KDIR)/vmlinux-initramfs.bin.lzma | loader-kernel-cmdline | mktplinkfw-combined
 endef
 
 define Device/tplink-4m
@@ -85,10 +95,12 @@ $(Device/tplink)
   IMAGE_SIZE := 15872k
 endef
 
-define Device/cpe210-220
+define Device/cpe510-520
+  DEVICE_TITLE := TP-LINK CPE510/520
+  DEVICE_PACKAGES := rssileds
   MTDPARTS := spi0.0:128k(u-boot)ro,64k(pation-table)ro,64k(product-info)ro,1536k(kernel),6144k(rootfs),192k(config)ro,64k(ART)ro,7680k@0x40000(firmware)
   IMAGE_SIZE := 7680k
-  BOARDNAME := CPE210
+  BOARDNAME := CPE510
   TPLINK_BOARD_NAME := CPE510
   DEVICE_PROFILE := CPE510
   LOADER_TYPE := elf
@@ -98,50 +110,90 @@ define Device/cpe210-220
   IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
 endef
 
-define Device/cpe510-520
-$(Device/cpe210-220)
-  BOARDNAME := CPE510
+define Device/cpe210-220
+$(Device/cpe510-520)
+  DEVICE_TITLE := TP-LINK CPE210/220
+  DEVICE_PACKAGES := rssileds
+  BOARDNAME := CPE210
+  TPLINK_BOARD_NAME := CPE210
 endef
 TARGET_DEVICES += cpe210-220 cpe510-520
 
+define Device/eap120
+  DEVICE_TITLE := TP-LINK EAP120
+  MTDPARTS := spi0.0:128k(u-boot)ro,64k(pation-table)ro,64k(product-info)ro,1536k(kernel),14336k(rootfs),192k(config)ro,64k(ART)ro,15872k@0x40000(firmware)
+  IMAGE_SIZE := 15872k
+  BOARDNAME := EAP120
+  TPLINK_BOARD_NAME := EAP120
+  DEVICE_PROFILE := EAP120
+  LOADER_TYPE := elf
+  KERNEL := kernel-bin | patch-cmdline | lzma | loader-kernel
+  IMAGES := sysupgrade.bin factory.bin
+  IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade
+  IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
+endef
+TARGET_DEVICES += eap120
+
 define Device/tl-wdr4300-v1
 $(Device/tplink-8mlzma)
-  BOARDNAME = TL-WDR4300
-  DEVICE_PROFILE = TLWDR4300
+  DEVICE_TITLE := TP-LINK TL-WDR4300 v1
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+  BOARDNAME := TL-WDR4300
+  DEVICE_PROFILE := TLWDR4300
   TPLINK_HWID := 0x43000001
+  IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C US
 endef
 
 define Device/tl-wdr3500-v1
-$(Device/tl-wdr4300-v1)
-  BOARDNAME = TL-WDR3500
+$(Device/tplink-8mlzma)
+  DEVICE_TITLE := TP-LINK TL-WDR3500 v1
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+  BOARDNAME := TL-WDR3500
+  DEVICE_PROFILE := TLWDR4300
   TPLINK_HWID := 0x35000001
 endef
 
 define Device/tl-wdr3600-v1
-$(Device/tl-wdr4300-v1)
+$(Device/tplink-8mlzma)
+  DEVICE_TITLE := TP-LINK TL-WDR3600 v1
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+  BOARDNAME := TL-WDR4300
+  DEVICE_PROFILE := TLWDR4300
   TPLINK_HWID := 0x36000001
+  IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C US
 endef
 
 define Device/tl-wdr4300-v1-il
-$(Device/tl-wdr4300-v1)
+$(Device/tplink-8mlzma)
+  DEVICE_TITLE := TP-LINK TL-WDR4300 v1 IL
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+  BOARDNAME := TL-WDR4300
+  DEVICE_PROFILE := TLWDR4300
   TPLINK_HWID := 0x43008001
 endef
 
 define Device/tl-wdr4310-v1
-$(Device/tl-wdr4300-v1)
+$(Device/tplink-8mlzma)
+  DEVICE_TITLE := TP-LINK TL-WDR4310 v1
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+  BOARDNAME := TL-WDR4300
+  DEVICE_PROFILE = TLWDR4300
   TPLINK_HWID := 0x43100001
 endef
 
 define Device/mw4530r-v1
 $(Device/tl-wdr4300-v1)
+  DEVICE_TITLE := Mercury MW4530R v1
   TPLINK_HWID := 0x45300001
 endef
 TARGET_DEVICES += tl-wdr3500-v1 tl-wdr3600-v1 tl-wdr4300-v1 tl-wdr4300-v1-il tl-wdr4310-v1 mw4530r-v1
 
 define Device/tl-wdr6500-v2
 $(Device/tplink-8mlzma)
+  DEVICE_TITLE := TP-LINK TL-WDR6500v2
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
   KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
-  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma | mktplinkfw-initramfs
+  KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma | mktplinkfw-combined
   BOARDNAME = TL-WDR6500-v2
   DEVICE_PROFILE = TLWDR6500V2
   TPLINK_HWID := 0x65000002
@@ -151,6 +203,8 @@ TARGET_DEVICES += tl-wdr6500-v2
 
 define Device/tl-wdr3320-v2
 $(Device/tplink-4mlzma)
+  DEVICE_TITLE := TP-LINK TL-WDR3320v2
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
   BOARDNAME = TL-WDR3320-v2
   DEVICE_PROFILE = TLWDR3320V2
   TPLINK_HWID := 0x33200002
@@ -160,6 +214,8 @@ TARGET_DEVICES += tl-wdr3320-v2
 
 define Device/archer-c5-v1
     $(Device/tplink-16mlzma)
+    DEVICE_TITLE := TP-LINK Archer C5
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
     BOARDNAME := ARCHER-C5
     DEVICE_PROFILE := ARCHERC7
     TPLINK_HWID := 0xc5000001
@@ -167,6 +223,8 @@ endef
 
 define Device/archer-c7-v1
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK Archer C7 v1
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
     BOARDNAME := ARCHER-C7
     DEVICE_PROFILE := ARCHERC7
     TPLINK_HWID := 0x75000001
@@ -174,22 +232,40 @@ endef
 
 define Device/archer-c7-v2
     $(Device/tplink-16mlzma)
+    DEVICE_TITLE := TP-LINK Archer C7 v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
     BOARDNAME := ARCHER-C7-V2
     DEVICE_PROFILE := ARCHERC7
     TPLINK_HWID := 0xc7000002
-    IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C US
+    IMAGES := sysupgrade.bin factory.bin factory-us.bin factory-eu.bin
+    IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
+    IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
+endef
+
+define Device/archer-c7-v2-il
+    $(Device/tplink-16mlzma)
+    DEVICE_TITLE := TP-LINK Archer C7 v2 IL
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
+    BOARDNAME := ARCHER-C7-V2
+    DEVICE_PROFILE := ARCHERC7
+    TPLINK_HWID := 0xc7000002
+    TPLINK_HWREV := 0x494c0001
 endef
 
 define Device/tl-wdr7500-v3
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK Archer C7 v3
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
     BOARDNAME := ARCHER-C7
     DEVICE_PROFILE := ARCHERC7
     TPLINK_HWID := 0x75000003
 endef
-TARGET_DEVICES += archer-c5-v1 archer-c7-v1 archer-c7-v2 tl-wdr7500-v3
+TARGET_DEVICES += archer-c5-v1 archer-c7-v1 archer-c7-v2 archer-c7-v2-il tl-wdr7500-v3
 
 define Device/tl-mr10u-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR10U
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
     BOARDNAME := TL-MR10U
     DEVICE_PROFILE := TLMR10U
     TPLINK_HWID := 0x00100101
@@ -198,6 +274,8 @@ endef
 
 define Device/tl-mr11u-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR11U
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR11U
     DEVICE_PROFILE := TLMR11U
     TPLINK_HWID := 0x00110101
@@ -206,6 +284,8 @@ endef
 
 define Device/tl-mr11u-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR11U v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR11U
     DEVICE_PROFILE := TLMR11U
     TPLINK_HWID := 0x00110102
@@ -214,6 +294,8 @@ endef
 
 define Device/tl-mr12u-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR12U
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR13U
     DEVICE_PROFILE := TLMR12U
     TPLINK_HWID := 0x00120101
@@ -222,6 +304,8 @@ endef
 
 define Device/tl-mr13u-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR13U
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR13U
     DEVICE_PROFILE := TLMR13U
     TPLINK_HWID := 0x00130101
@@ -231,6 +315,8 @@ TARGET_DEVICES += tl-mr10u-v1 tl-mr11u-v1 tl-mr11u-v2 tl-mr12u-v1 tl-mr13u-v1
 
 define Device/tl-mr3020-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR3020
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3020
     DEVICE_PROFILE := TLMR3020
     TPLINK_HWID := 0x30200001
@@ -239,6 +325,8 @@ endef
 
 define Device/tl-mr3040-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR3040
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3040
     DEVICE_PROFILE := TLMR3040
     TPLINK_HWID := 0x30400001
@@ -247,6 +335,8 @@ endef
 
 define Device/tl-mr3040-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR3040
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3040-v2
     DEVICE_PROFILE := TLMR3040
     TPLINK_HWID := 0x30400002
@@ -255,6 +345,8 @@ endef
 
 define Device/tl-mr3220-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-MR3220
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3220
     DEVICE_PROFILE := TLMR3220
     TPLINK_HWID := 0x32200001
@@ -262,6 +354,8 @@ endef
 
 define Device/tl-mr3220-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR3220 v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3220-v2
     DEVICE_PROFILE := TLMR3220
     TPLINK_HWID := 0x32200002
@@ -270,6 +364,8 @@ endef
 
 define Device/tl-mr3420-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-MR3420
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3420
     DEVICE_PROFILE := TLMR3420
     TPLINK_HWID := 0x34200001
@@ -277,14 +373,28 @@ endef
 
 define Device/tl-mr3420-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-MR3420 v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3420-v2
     DEVICE_PROFILE := TLMR3420
     TPLINK_HWID := 0x34200002
 endef
 TARGET_DEVICES += tl-mr3020-v1 tl-mr3040-v1 tl-mr3040-v2 tl-mr3220-v1 tl-mr3220-v2 tl-mr3420-v1 tl-mr3420-v2
 
+define Device/tl-wpa8630
+    $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WPA8630
+    DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca988x
+    BOARDNAME := TL-WPA8630
+    DEVICE_PROFILE := TL-WPA8630
+    TPLINK_HWID := 0x86300001
+endef
+TARGET_DEVICES += tl-wpa8630
+
 define Device/tl-wr703n-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR703N
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
     BOARDNAME := TL-WR703N
     DEVICE_PROFILE := TLWR703
     TPLINK_HWID := 0x07030101
@@ -293,6 +403,8 @@ endef
 
 define Device/tl-wr710n-v1
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR710N
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
     BOARDNAME := TL-WR710N
     DEVICE_PROFILE := TLWR710
     TPLINK_HWID := 0x07100001
@@ -301,7 +413,9 @@ endef
 
 define Device/tl-wr710n-v2
     $(Device/tplink-4mlzma)
-    BOARDNAME := TL-WR710N
+    DEVICE_TITLE := TP-LINK TL-WR710N v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
+    BOARDNAME := TL-WR710N v2
     DEVICE_PROFILE := TLWR710
     TPLINK_HWID := 0x07100002
     CONSOLE := ttyATH0,115200
@@ -309,7 +423,9 @@ endef
 
 define Device/tl-wr710n-v2.1
     $(Device/tplink-8mlzma)
-    BOARDNAME := TL-WR710N
+    DEVICE_TITLE := TP-LINK TL-WR710N v2.1
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
+    BOARDNAME := TL-WR710N v2.1
     DEVICE_PROFILE := TLWR710
     TPLINK_HWID := 0x07100002
     TPLINK_HWREV := 0x00000002
@@ -318,6 +434,8 @@ endef
 
 define Device/tl-wr720n-v3
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR720N v3
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
     BOARDNAME := TL-WR720N-v3
     DEVICE_PROFILE := TLWR720
     TPLINK_HWID := 0x07200103
@@ -326,6 +444,8 @@ endef
 
 define Device/tl-wr720n-v4
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR720N v4
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
     BOARDNAME := TL-WR720N-v3
     DEVICE_PROFILE := TLWR720
     TPLINK_HWID := 0x07200104
@@ -335,6 +455,7 @@ TARGET_DEVICES += tl-wr703n-v1 tl-wr710n-v1 tl-wr710n-v2 tl-wr710n-v2.1 tl-wr720
 
 define Device/tl-wr740n-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR740N/ND v1
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR740
     TPLINK_HWID := 0x07400001
@@ -342,6 +463,7 @@ endef
 
 define Device/tl-wr740n-v3
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR740N/ND v3
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR740
     TPLINK_HWID := 0x07400003
@@ -349,6 +471,7 @@ endef
 
 define Device/tl-wr740n-v4
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR740N/ND v4
     BOARDNAME := TL-WR741ND-v4
     DEVICE_PROFILE := TLWR740
     TPLINK_HWID := 0x07400004
@@ -357,6 +480,7 @@ endef
 
 define Device/tl-wr740n-v5
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR740N/ND v5
     BOARDNAME := TL-WR741ND-v4
     DEVICE_PROFILE := TLWR740
     TPLINK_HWID := 0x07400005
@@ -365,6 +489,7 @@ endef
 
 define Device/tl-wr740n-v6
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR740N/ND v6
     BOARDNAME := TL-WR841N-v9
     DEVICE_PROFILE := TLWR740
     TPLINK_HWID := 0x07400006
@@ -372,6 +497,7 @@ endef
 
 define Device/tl-wr741nd-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR741N/ND v1
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR741
     TPLINK_HWID := 0x07410001
@@ -379,6 +505,7 @@ endef
 
 define Device/tl-wr741nd-v2
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR741N/ND v2
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR741
     TPLINK_HWID := 0x07410001
@@ -386,6 +513,7 @@ endef
 
 define Device/tl-wr741nd-v4
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR741N/ND v4
     BOARDNAME := TL-WR741ND-v4
     DEVICE_PROFILE := TLWR741
     TPLINK_HWID := 0x07410004
@@ -394,6 +522,7 @@ endef
 
 define Device/tl-wr741nd-v5
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR741N/ND v5
     BOARDNAME := TL-WR741ND-v4
     DEVICE_PROFILE := TLWR741
     TPLINK_HWID := 0x07400005
@@ -402,6 +531,8 @@ endef
 
 define Device/tl-wr810n
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-Link TL-WR810N
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2
     BOARDNAME := TL-WR810N
     DEVICE_PROFILE := TLWR810
     TPLINK_HWID := 0x08100001
@@ -410,6 +541,7 @@ TARGET_DEVICES += tl-wr810n
 
 define Device/tl-wr743nd-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR743N/ND v1
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR743
     TPLINK_HWID := 0x07430001
@@ -417,6 +549,7 @@ endef
 
 define Device/tl-wr743nd-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR743N/ND v2
     BOARDNAME := TL-WR741ND-v4
     DEVICE_PROFILE := TLWR743
     TPLINK_HWID := 0x07430002
@@ -424,8 +557,19 @@ define Device/tl-wr743nd-v2
 endef
 TARGET_DEVICES += tl-wr740n-v1 tl-wr740n-v3 tl-wr740n-v4 tl-wr740n-v5 tl-wr740n-v6 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr741nd-v5 tl-wr743nd-v1 tl-wr743nd-v2
 
+define Device/tl-wr802n-v1
+    $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR802N v1
+       BOARDNAME := TL-WR802N-v1
+    DEVICE_PROFILE := TLWR802
+    TPLINK_HWID := 0x08020001
+    TPLINK_HWREV := 1
+endef
+TARGET_DEVICES += tl-wr802n-v1
+
 define Device/tl-wr841-v1.5
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v1.5
     BOARDNAME := TL-WR841N-v1.5
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410002
@@ -434,6 +578,7 @@ endef
 
 define Device/tl-wr841-v3
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v3
     BOARDNAME := TL-WR941ND
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410003
@@ -442,6 +587,7 @@ endef
 
 define Device/tl-wr841-v5
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v5
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410005
@@ -449,6 +595,7 @@ endef
 
 define Device/tl-wr841-v7
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v7
     BOARDNAME := TL-WR841N-v7
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410007
@@ -456,6 +603,7 @@ endef
 
 define Device/tl-wr841-v8
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v8
     BOARDNAME := TL-WR841N-v8
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410008
@@ -463,6 +611,7 @@ endef
 
 define Device/tl-wr841-v9
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v9
     BOARDNAME := TL-WR841N-v9
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410009
@@ -470,6 +619,7 @@ endef
 
 define Device/tl-wr841-v10
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR841N/ND v10
     BOARDNAME := TL-WR841N-v9
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08410010
@@ -477,13 +627,19 @@ endef
 
 define Device/tl-wr841-v11
    $(Device/tplink-4mlzma)
-   BOARDNAME := TL-WR841N-v9
+   DEVICE_TITLE := TP-LINK TL-WR841N/ND v11
+   BOARDNAME := TL-WR841N-v11
    DEVICE_PROFILE := TLWR841
    TPLINK_HWID := 0x08410011
+   IMAGES += factory-us.bin factory-eu.bin
+   IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
+   IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
 endef
 
 define Device/tl-wr842n-v1
     $(Device/tplink-8m)
+    DEVICE_TITLE := TP-LINK TL-WR842N/ND v1
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-MR3420
     DEVICE_PROFILE := TLWR842
     TPLINK_HWID := 0x08420001
@@ -491,6 +647,8 @@ endef
 
 define Device/tl-wr842n-v2
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR842N/ND v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WR842N-v2
     DEVICE_PROFILE := TLWR842
     TPLINK_HWID := 0x8420002
@@ -498,6 +656,8 @@ endef
 
 define Device/tl-wr842n-v3
     $(Device/tplink-16mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR842N/ND v3
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WR842N-v3
     DEVICE_PROFILE := TLWR842
     TPLINK_HWID := 0x08420003
@@ -505,6 +665,7 @@ endef
 
 define Device/tl-wr843nd-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR843N/ND
     BOARDNAME := TL-WR841N-v8
     DEVICE_PROFILE := TLWR843
     TPLINK_HWID := 0x08430001
@@ -512,6 +673,7 @@ endef
 
 define Device/tl-wr847n-v8
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR847N/ND v8
     BOARDNAME := TL-WR841N-v8
     DEVICE_PROFILE := TLWR841
     TPLINK_HWID := 0x08470008
@@ -520,6 +682,7 @@ TARGET_DEVICES += tl-wr841-v1.5 tl-wr841-v3 tl-wr841-v5 tl-wr841-v7 tl-wr841-v8
 
 define Device/tl-wr941nd-v2
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR941N/ND v2
     BOARDNAME := TL-WR941ND
     DEVICE_PROFILE := TLWR941
     TPLINK_HWID := 0x09410002
@@ -528,6 +691,7 @@ endef
 
 define Device/tl-wr941nd-v3
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR941N/ND v3
     BOARDNAME := TL-WR941ND
     DEVICE_PROFILE := TLWR941
     TPLINK_HWID := 0x09410002
@@ -536,6 +700,7 @@ endef
 
 define Device/tl-wr941nd-v4
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WR941N/ND v4
     BOARDNAME := TL-WR741ND
     DEVICE_PROFILE := TLWR941
     TPLINK_HWID := 0x09410004
@@ -543,6 +708,7 @@ endef
 
 define Device/tl-wr941nd-v5
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR941N/ND v5
     BOARDNAME := TL-WR941ND-v5
     DEVICE_PROFILE := TLWR941
     TPLINK_HWID := 0x09410005
@@ -550,22 +716,36 @@ endef
 
 define Device/tl-wr941nd-v6
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR941N/ND v6
     BOARDNAME := TL-WR941ND-v6
     DEVICE_PROFILE := TLWR941
     TPLINK_HWID := 0x09410006
 endef
 
+define Device/tl-wr940n-v4
+    $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR940N v4
+    BOARDNAME := TL-WR940N-v4
+    DEVICE_PROFILE := TLWR941
+    TPLINK_HWID := 0x09400004
+    IMAGES += factory-us.bin factory-eu.bin
+    IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US
+    IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU
+endef
+
 # Chinese version (unlike European) is similar to the TL-WDR3500
 define Device/tl-wr941nd-v6-cn
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR941N/ND v6 (CN)
     BOARDNAME := TL-WDR3500
     DEVICE_PROFILE := TLWR941
     TPLINK_HWID := 0x09410006
 endef
-TARGET_DEVICES += tl-wr941nd-v2 tl-wr941nd-v3 tl-wr941nd-v4 tl-wr941nd-v5 tl-wr941nd-v6 tl-wr941nd-v6-cn
+TARGET_DEVICES += tl-wr941nd-v2 tl-wr941nd-v3 tl-wr941nd-v4 tl-wr941nd-v5 tl-wr941nd-v6 tl-wr941nd-v6-cn tl-wr940n-v4
 
 define Device/tl-wr1041n-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR1041N
     BOARDNAME := TL-WR1041N-v2
     DEVICE_PROFILE := TLWR1041
     TPLINK_HWID := 0x10410002
@@ -574,6 +754,8 @@ TARGET_DEVICES += tl-wr1041n-v2
 
 define Device/tl-wr1043nd-v1
     $(Device/tplink-8m)
+    DEVICE_TITLE := TP-LINK TL-WR1043N/ND v1
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WR1043ND
     DEVICE_PROFILE := TLWR1043
     TPLINK_HWID := 0x10430001
@@ -581,6 +763,8 @@ endef
 
 define Device/tl-wr1043nd-v2
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR1043N/ND v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WR1043ND-v2
     DEVICE_PROFILE := TLWR1043
     TPLINK_HWID := 0x10430002
@@ -588,14 +772,35 @@ endef
 
 define Device/tl-wr1043nd-v3
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR1043N/ND v3
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WR1043ND-v2
     DEVICE_PROFILE := TLWR1043
     TPLINK_HWID := 0x10430003
 endef
-TARGET_DEVICES += tl-wr1043nd-v1 tl-wr1043nd-v2 tl-wr1043nd-v3
+
+define Device/tl-wr1043nd-v4
+    $(Device/tplink)
+    DEVICE_TITLE := TP-LINK TL-WR1043N/ND v4
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+    BOARDNAME := TL-WR1043ND-v4
+    DEVICE_PROFILE := TLWR1043
+    TPLINK_HWID :=  0x10430004
+    TPLINK_FLASHLAYOUT := 16Msafeloader
+    MTDPARTS := spi0.0:128k(u-boot)ro,1536k(kernel),14016k(rootfs),128k(product-info)ro,320k(config)ro,64k(partition-table)ro,128k(logs)ro,64k(ART)ro,15552k@0x20000(firmware)
+    IMAGE_SIZE := 15552k
+    TPLINK_BOARD_NAME := TLWR1043NDV4
+    KERNEL := kernel-bin | patch-cmdline | lzma | mktplinkfw-combined
+    IMAGES := sysupgrade.bin factory.bin
+    IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade
+    IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
+endef
+TARGET_DEVICES += tl-wr1043nd-v1 tl-wr1043nd-v2 tl-wr1043nd-v3 tl-wr1043nd-v4
 
 define Device/tl-wr2543-v1
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WR2543N/ND
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WR2543N
     DEVICE_PROFILE := TLWR2543
     TPLINK_HWID := 0x25430001
@@ -606,6 +811,8 @@ TARGET_DEVICES += tl-wr2543-v1
 
 define Device/tl-wdr4900-v2
     $(Device/tplink-8mlzma)
+    DEVICE_TITLE := TP-LINK TL-WDR4900v2
+    DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
     BOARDNAME := TL-WDR4900-v2
     DEVICE_PROFILE := TLWDR4900V2
     TPLINK_HWID := 0x49000002
@@ -614,6 +821,7 @@ TARGET_DEVICES += tl-wdr4900-v2
 
 define Device/tl-wa701nd-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA701N/ND v1
     BOARDNAME := TL-WA901ND
     DEVICE_PROFILE := TLWA701
     TPLINK_HWID := 0x07010001
@@ -621,6 +829,7 @@ endef
 
 define Device/tl-wa701nd-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA701N/ND v2
     BOARDNAME := TL-WA701ND-v2
     DEVICE_PROFILE := TLWA701
     TPLINK_HWID := 0x07010002
@@ -629,6 +838,7 @@ endef
 
 define Device/tl-wa730re-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA730RE
     BOARDNAME := TL-WA901ND
     DEVICE_PROFILE := TLWA730RE
     TPLINK_HWID := 0x07300001
@@ -636,6 +846,8 @@ endef
 
 define Device/tl-wa750re-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA750RE
+    DEVICE_PACKAGES := rssileds
     BOARDNAME := TL-WA750RE
     DEVICE_PROFILE := TLWA750
     TPLINK_HWID := 0x07500001
@@ -643,6 +855,7 @@ endef
 
 define Device/tl-wa7510n
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA7510N
     BOARDNAME := TL-WA7510N
     DEVICE_PROFILE := TLWA7510
     TPLINK_HWID := 0x75100001
@@ -651,6 +864,7 @@ TARGET_DEVICES += tl-wa701nd-v1 tl-wa701nd-v2 tl-wa730re-v1 tl-wa750re-v1 tl-wa7
 
 define Device/tl-wa801nd-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA801N/ND v1
     BOARDNAME := TL-WA901ND
     DEVICE_PROFILE := TLWA801
     TPLINK_HWID := 0x08010001
@@ -658,6 +872,7 @@ endef
 
 define Device/tl-wa801nd-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA801N/ND v2
     BOARDNAME := TL-WA801ND-v2
     DEVICE_PROFILE := TLWA801
     TPLINK_HWID := 0x08010002
@@ -665,6 +880,7 @@ endef
 
 define Device/tl-wa801nd-v3
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA801N/ND v3
     BOARDNAME := TL-WA801ND-v3
     DEVICE_PROFILE := TLWA801
     TPLINK_HWID := 0x08010003
@@ -672,6 +888,7 @@ endef
 
 define Device/tl-wa830re-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA830RE
     BOARDNAME := TL-WA901ND
     DEVICE_PROFILE := TLWA830
     TPLINK_HWID := 0x08300010
@@ -679,6 +896,7 @@ endef
 
 define Device/tl-wa830re-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA830RE
     BOARDNAME := TL-WA830RE-v2
     DEVICE_PROFILE := TLWA830
     TPLINK_HWID := 0x08300002
@@ -686,6 +904,7 @@ endef
 
 define Device/tl-wa850re-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA850RE
     BOARDNAME := TL-WA850RE
     DEVICE_PROFILE := TLWA850
     TPLINK_HWID := 0x08500001
@@ -693,6 +912,7 @@ endef
 
 define Device/tl-wa860re-v1
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA860RE
     BOARDNAME := TL-WA860RE
     DEVICE_PROFILE := TLWA860
     TPLINK_HWID := 0x08600001
@@ -701,6 +921,7 @@ TARGET_DEVICES += tl-wa801nd-v1 tl-wa801nd-v2 tl-wa801nd-v3 tl-wa830re-v1 tl-wa8
 
 define Device/tl-wa901nd-v1
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA901N/ND v1
     BOARDNAME := TL-WA901ND
     DEVICE_PROFILE := TLWA901
     TPLINK_HWID := 0x09010001
@@ -708,6 +929,7 @@ endef
 
 define Device/tl-wa901nd-v2
     $(Device/tplink-4m)
+    DEVICE_TITLE := TP-LINK TL-WA901N/ND v2
     BOARDNAME := TL-WA901ND-v2
     DEVICE_PROFILE := TLWA901
     TPLINK_HWID := 0x09010002
@@ -715,6 +937,7 @@ endef
 
 define Device/tl-wa901nd-v3
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA901N/ND v3
     BOARDNAME := TL-WA901ND-v3
     DEVICE_PROFILE := TLWA901
     TPLINK_HWID := 0x09010003
@@ -722,19 +945,22 @@ endef
 
 define Device/tl-wa901nd-v4
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA901N/ND v4
     BOARDNAME := TL-WA901ND-v4
     DEVICE_PROFILE := TLWA901
     TPLINK_HWID := 0x09010004
+    IMAGE/factory.bin := append-rootfs | mktplinkfw factory -C EU
 endef
 
 TARGET_DEVICES += tl-wa901nd-v1 tl-wa901nd-v2 tl-wa901nd-v3 tl-wa901nd-v4
 
 define Device/tl-wa7210n-v2
     $(Device/tplink-4mlzma)
+    DEVICE_TITLE := TP-LINK TL-WA7210N
+    DEVICE_PACKAGES := rssileds kmod-ledtrig-netdev
     BOARDNAME := TL-WA7210N-v2
     DEVICE_PROFILE := TLWA7210
     TPLINK_HWID := 0x72100002
     CONSOLE := ttyATH0,115200
 endef
 TARGET_DEVICES += tl-wa7210n-v2
-