firmware-utils: mkdlinkfw: add kernel image offset
[openwrt/openwrt.git] / target / linux / ramips / image / Makefile
1 #
2 # Copyright (C) 2008-2011 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7 include $(TOPDIR)/rules.mk
8 include $(INCLUDE_DIR)/image.mk
9
10 DEVICE_VARS += DTS IMAGE_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID
11 DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
12 DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
13
14 loadaddr-y := 0x80000000
15 loadaddr-$(CONFIG_TARGET_ramips_rt288x) := 0x88000000
16 loadaddr-$(CONFIG_TARGET_ramips_mt7621) := 0x80001000
17
18 KERNEL_LOADADDR := $(loadaddr-y)
19
20 KERNEL_DTB = kernel-bin | patch-dtb | lzma
21 define Device/Default
22 PROFILES = Default $$(DTS)
23 KERNEL_DEPENDS = $$(wildcard ../dts/$$(DTS).dts)
24 KERNEL := $(KERNEL_DTB) | uImage lzma
25 DEVICE_DTS_DIR := ../dts
26 IMAGES := sysupgrade.bin
27 IMAGE_SIZE := $(ralink_default_fw_size_8M)
28 SUPPORTED_DEVICES := $(subst _,$(comma),$(1))
29 sysupgrade_bin := append-kernel | append-rootfs | pad-rootfs
30 IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
31 endef
32
33 define Device/seama
34 SEAMA_MTDBLOCK := 2
35 IMAGES += factory.bin
36
37 # 64 bytes offset:
38 # - 28 bytes seama_header
39 # - 36 bytes of META data (4-bytes aligned)
40 IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
41 IMAGE/sysupgrade.bin := \
42 $$(IMAGE/default) | seama | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
43 IMAGE/factory.bin := \
44 $$(IMAGE/default) | pad-rootfs -x 64 | seama | seama-seal | check-size $$$$(IMAGE_SIZE)
45 SEAMA_SIGNATURE :=
46 endef
47
48 define Build/patch-dtb
49 $(call Image/BuildDTB,../dts/$(DTS).dts,$@.dtb)
50 $(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.dtb
51 endef
52
53 define Build/trx
54 $(STAGING_DIR_HOST)/bin/trx $(1) \
55 -o $@ \
56 -m $(IMAGE_SIZE) \
57 -f $(IMAGE_KERNEL) \
58 -a 4 -f $(IMAGE_ROOTFS)
59 endef
60
61 define Build/loader-common
62 rm -rf $@.src
63 $(MAKE) -C lzma-loader \
64 PKG_BUILD_DIR="$@.src" \
65 TARGET_DIR="$(dir $@)" LOADER_NAME="$(notdir $@)" \
66 BOARD="$(BOARDNAME)" PLATFORM="$(PLATFORM)" \
67 LZMA_TEXT_START=0x82000000 LOADADDR=$(KERNEL_LOADADDR) \
68 $(1) compile loader.$(LOADER_TYPE)
69 mv "$@.$(LOADER_TYPE)" "$@"
70 rm -rf $@.src
71 endef
72
73 define Build/loader-kernel
74 $(call Build/loader-common,LOADER_DATA="$@")
75 endef
76
77 define Build/relocate-kernel
78 rm -rf $@.relocate
79 $(CP) ../../generic/image/relocate $@.relocate
80 $(MAKE) -C $@.relocate KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
81 ( \
82 dd if=$@.relocate/loader.bin bs=32 conv=sync && \
83 perl -e '@s = stat("$@"); print pack("V", @s[7])' && \
84 cat $@ \
85 ) > $@.new
86 mv $@.new $@
87 rm -rf $@.relocate
88 endef
89
90 define Build/umedia-header
91 fix-u-media-header -T 0x46 -B $(1) -i $@ -o $@.new && mv $@.new $@
92 endef
93
94 define Build/edimax-header
95 $(STAGING_DIR_HOST)/bin/mkedimaximg -i $@ -o $@.new $(1)
96 @mv $@.new $@
97 endef
98
99 define Build/poray-header
100 $(STAGING_DIR_HOST)/bin/mkporayfw $(1) -f $@ -o $@.new
101 mv $@.new $@
102 endef
103
104 define Build/wrg-header
105 mkwrgimg -i $@ -d "/dev/mtdblock/2" -s $(1) -o $@.new
106 mv $@.new $@
107 endef
108
109 # combine kernel and rootfs into one image
110 # mkdlinkfw <type> <optional extra arguments to mkdlinkfw binary>
111
112 define Build/mkdlinkfw
113 -$(STAGING_DIR_HOST)/bin/mkdlinkfw \
114 -k $(IMAGE_KERNEL) \
115 -r $(IMAGE_ROOTFS) \
116 -o $@ \
117 $(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
118 -s $(DLINK_FIRMWARE_SIZE)
119 endef
120
121 define Build/mkdlinkfw-factory
122 -$(STAGING_DIR_HOST)/bin/mkdlinkfw \
123 -m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \
124 -F $@ \
125 -o $@.new \
126 $(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
127 -s $(DLINK_FIRMWARE_SIZE)
128 mv $@.new $@
129 endef
130
131 define Build/zyimage
132 $(STAGING_DIR_HOST)/bin/zyimage $(1) $@
133 endef
134
135 ralink_default_fw_size_4M=3866624
136 ralink_default_fw_size_8M=8060928
137 ralink_default_fw_size_16M=16121856
138 ralink_default_fw_size_32M=33226752
139
140 ifeq ($(SUBTARGET),rt288x)
141 include rt288x.mk
142 endif
143
144 ifeq ($(SUBTARGET),rt305x)
145 include rt305x.mk
146 endif
147
148 ifeq ($(SUBTARGET),rt3883)
149 include rt3883.mk
150 endif
151
152 ifeq ($(SUBTARGET),mt7620)
153 include mt7620.mk
154 endif
155
156 ifeq ($(SUBTARGET),mt7621)
157 include mt7621.mk
158 endif
159
160 ifeq ($(SUBTARGET),mt76x8)
161 include mt76x8.mk
162 endif
163
164 $(eval $(call BuildImage))