0dc58191a82b82f5e63c5a32e89c2865bff531f1
[openwrt/openwrt.git] / target / linux / ath79 / image / common-tp-link.mk
1 DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT TPLINK_HEADER_VERSION
2 DEVICE_VARS += TPLINK_BOARD_NAME TPLINK_BOARD_ID
3
4 define rootfs_align
5 $(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
6 endef
7
8 # combine kernel and rootfs into one image
9 # mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
10 # <type> is "sysupgrade" or "factory"
11 #
12 # -a align the rootfs start on an <align> bytes boundary
13 # -j add jffs2 end-of-filesystem markers
14 # -s strip padding from end of the image
15 # -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
16 define Build/mktplinkfw
17 -$(STAGING_DIR_HOST)/bin/mktplinkfw \
18 -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
19 -N OpenWrt -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \
20 -k $(IMAGE_KERNEL) -r $@ -o $@.new -j -X 0x40000 \
21 -a $(call rootfs_align,$(FILESYSTEM)) \
22 $(wordlist 2,$(words $(1)),$(1)) \
23 $(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
24 endef
25
26 # mktplinkfw-combined
27 #
28 # -c combined image
29 define Build/mktplinkfw-combined
30 $(STAGING_DIR_HOST)/bin/mktplinkfw \
31 -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
32 -N OpenWrt -V $(REVISION) $(1) -m $(TPLINK_HEADER_VERSION) \
33 -k $@ -o $@.new -s -S -c
34 @mv $@.new $@
35 endef
36
37 define Build/uImageArcher
38 mkimage -A $(LINUX_KARCH) \
39 -O linux -T kernel -C $(1) -a $(KERNEL_LOADADDR) \
40 -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
41 -n '$(call toupper,$(LINUX_KARCH)) OpenWrt Linux-$(LINUX_VERSION)' -d $@ $@.new
42 @mv $@.new $@
43 endef
44
45 define Device/tplink
46 DEVICE_VENDOR := TP-Link
47 TPLINK_HWREV := 0x1
48 TPLINK_HEADER_VERSION := 1
49 LOADER_TYPE := gz
50 KERNEL := kernel-bin | append-dtb | lzma
51 KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | tplink-v1-header
52 IMAGES += factory.bin
53 IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade | \
54 append-metadata
55 IMAGE/factory.bin := append-rootfs | mktplinkfw factory
56 endef
57
58 define Device/tplink-nolzma
59 $(Device/tplink)
60 LOADER_FLASH_OFFS := 0x22000
61 COMPILE := loader-$(1).gz
62 COMPILE/loader-$(1).gz := loader-okli-compile
63 KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 | \
64 loader-okli $(1) 7680
65 KERNEL_INITRAMFS := kernel-bin | append-dtb | gzip | tplink-v1-header
66 endef
67
68 define Device/tplink-4m
69 $(Device/tplink-nolzma)
70 TPLINK_FLASHLAYOUT := 4M
71 IMAGE_SIZE := 3904k
72 endef
73
74 define Device/tplink-4mlzma
75 $(Device/tplink)
76 TPLINK_FLASHLAYOUT := 4Mlzma
77 IMAGE_SIZE := 3904k
78 endef
79
80 define Device/tplink-8m
81 $(Device/tplink-nolzma)
82 TPLINK_FLASHLAYOUT := 8M
83 IMAGE_SIZE := 8000k
84 endef
85
86 define Device/tplink-8mlzma
87 $(Device/tplink)
88 TPLINK_FLASHLAYOUT := 8Mlzma
89 IMAGE_SIZE := 8000k
90 endef
91
92 define Device/tplink-16mlzma
93 $(Device/tplink)
94 TPLINK_FLASHLAYOUT := 16Mlzma
95 IMAGE_SIZE := 16192k
96 endef
97
98 define Device/tplink-safeloader
99 $(Device/tplink)
100 KERNEL := kernel-bin | append-dtb | lzma | tplink-v1-header -O
101 IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade | \
102 append-metadata | check-size $$$$(IMAGE_SIZE)
103 IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
104 endef
105
106 define Device/tplink-safeloader-uimage
107 $(Device/tplink-safeloader)
108 KERNEL := kernel-bin | append-dtb | lzma | uImageArcher lzma
109 endef
110
111 define Device/tplink-loader-okli
112 $(Device/tplink-safeloader)
113 LOADER_TYPE := elf
114 LOADER_FLASH_OFFS := 0x43000
115 COMPILE := loader-$(1).elf
116 COMPILE/loader-$(1).elf := loader-okli-compile
117 KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 | \
118 loader-okli $(1) 12288
119 endef