lantiq: add patch to fix the reset gpio handling in the pci driver
[openwrt/openwrt.git] / target / linux / ramips / image / common-sercomm.mk
1 DEVICE_VARS += SERCOMM_KERNEL_OFFSET SERCOMM_ROOTFS_OFFSET
2 DEVICE_VARS += SERCOMM_KERNEL2_OFFSET SERCOMM_ROOTFS2_OFFSET
3
4 define Build/sercomm-append-tail
5 printf 16 | dd seek=$$((0x90)) of=$@ bs=1 conv=notrunc 2>/dev/null
6 printf 11223344556677889900112233445566 | \
7 sed 's/../\\x&/g' | xargs -d . printf >> $@
8 endef
9
10 define Build/sercomm-crypto
11 $(TOPDIR)/scripts/sercomm-crypto.py \
12 --input-file $@ \
13 --key-file $@.key \
14 --output-file $@.ser \
15 --version $(SERCOMM_SWVER)
16 $(STAGING_DIR_HOST)/bin/openssl enc -md md5 -aes-256-cbc \
17 -in $@ \
18 -out $@.enc \
19 -K `cat $@.key` \
20 -iv 00000000000000000000000000000000
21 dd if=$@.enc >> $@.ser 2>/dev/null
22 mv $@.ser $@
23 rm -f $@.enc $@.key
24 endef
25
26 define Build/sercomm-factory-cpj
27 dd bs=$$((0x1fff00)) count=1 if=$@ of=$@.kernel conv=notrunc \
28 2>/dev/null
29 dd bs=$$((0x1fff00)) skip=1 if=$@ of=$@.rootfs1 conv=notrunc \
30 2>/dev/null
31 cp $@.rootfs1 $@.rootfs2
32 $(TOPDIR)/scripts/sercomm-kernel-header.py \
33 --kernel-image $@.kernel \
34 --kernel-offset $(SERCOMM_KERNEL_OFFSET) \
35 --rootfs-image $@.rootfs1 \
36 --rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
37 --output-header $@.header1
38 $(TOPDIR)/scripts/sercomm-kernel-header.py \
39 --kernel-image $@.kernel \
40 --kernel-offset $(SERCOMM_KERNEL2_OFFSET) \
41 --rootfs-image $@.rootfs2 \
42 --rootfs-offset $(SERCOMM_ROOTFS2_OFFSET) \
43 --output-header $@.header2
44 cat $@.header1 $@.kernel > $@.kernel1
45 cat $@.header2 $@.kernel > $@.kernel2
46 rm $@.header1 $@.header2 $@.kernel
47 $(call Build/sercomm-part-tag-common,kernel $@.kernel1)
48 $(call Build/sercomm-part-tag-common,kernel2 $@.kernel2)
49 $(call Build/sercomm-part-tag-common,rootfs $@.rootfs1)
50 $(call Build/sercomm-part-tag-common,rootfs2 $@.rootfs2)
51 cat $@.kernel2 $@.rootfs2 $@.kernel1 $@.rootfs1 > $@
52 rm $@.kernel1 $@.rootfs1 $@.kernel2 $@.rootfs2
53 endef
54
55 define Build/sercomm-factory-cqr
56 $(TOPDIR)/scripts/sercomm-pid.py \
57 --hw-version $(SERCOMM_HWVER) \
58 --hw-id $(SERCOMM_HWID) \
59 --sw-version $(SERCOMM_SWVER) \
60 --pid-file $@.fhdr \
61 --extra-padding-size 0x190
62 printf $$(stat -c%s $(IMAGE_KERNEL)) | \
63 dd seek=$$((0x70)) of=$@.fhdr bs=1 conv=notrunc 2>/dev/null
64 printf $$(($$(stat -c%s $@)-$$(stat -c%s $(IMAGE_KERNEL))-$$((0x200)))) | \
65 dd seek=$$((0x80)) of=$@.fhdr bs=1 conv=notrunc 2>/dev/null
66 dd if=$@ >> $@.fhdr 2>/dev/null
67 mv $@.fhdr $@
68 endef
69
70 define Build/sercomm-kernel
71 $(TOPDIR)/scripts/sercomm-kernel-header.py \
72 --kernel-image $@ \
73 --kernel-offset $(SERCOMM_KERNEL_OFFSET) \
74 --rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
75 --output-header $@.hdr
76 dd if=$@ >> $@.hdr 2>/dev/null
77 mv $@.hdr $@
78 endef
79
80 define Build/sercomm-kernel-factory
81 $(TOPDIR)/scripts/sercomm-kernel-header.py \
82 --kernel-image $@ \
83 --kernel-offset $(SERCOMM_KERNEL_OFFSET) \
84 --rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
85 --output-header $@.khdr1
86 $(TOPDIR)/scripts/sercomm-kernel-header.py \
87 --kernel-image $@ \
88 --kernel-offset $(SERCOMM_KERNEL2_OFFSET) \
89 --rootfs-offset $(SERCOMM_ROOTFS2_OFFSET) \
90 --output-header $@.khdr2
91 cat $@.khdr1 $@.khdr2 > $@.khdr
92 dd if=$@ >> $@.khdr 2>/dev/null
93 mv $@.khdr $@
94 endef
95
96 define Build/sercomm-mkhash
97 dd bs=$$((0x400)) skip=1 if=$@ conv=notrunc 2>/dev/null | \
98 $(MKHASH) md5 | awk '{print $$1}' | tr -d '\n' | \
99 dd seek=$$((0x1e0)) of=$@ bs=1 conv=notrunc 2>/dev/null
100 endef
101
102 define Build/sercomm-part-tag
103 $(call Build/sercomm-part-tag-common,$(word 1,$(1)) $@)
104 endef
105
106 define Build/sercomm-part-tag-common
107 $(eval file=$(word 2,$(1)))
108 $(TOPDIR)/scripts/sercomm-partition-tag.py \
109 --input-file $(file) \
110 --output-file $(file).tmp \
111 --part-name $(word 1,$(1)) \
112 --part-version $(SERCOMM_SWVER)
113 mv $(file).tmp $(file)
114 endef
115
116 define Build/sercomm-payload
117 $(TOPDIR)/scripts/sercomm-pid.py \
118 --hw-version $(SERCOMM_HWVER) \
119 --hw-id $(SERCOMM_HWID) \
120 --sw-version $(SERCOMM_SWVER) \
121 --pid-file $@.pid \
122 --extra-padding-size 0x10 \
123 --extra-padding-first-byte 0x0a
124 $(TOPDIR)/scripts/sercomm-payload.py \
125 --input-file $@ \
126 --output-file $@.tmp \
127 --pid-file $@.pid
128 mv $@.tmp $@
129 rm $@.pid
130 endef
131
132 define Build/sercomm-pid-setbit
133 printf 1 | dd seek=$$(($(1))) of=$@ bs=1 conv=notrunc 2>/dev/null
134 endef
135
136 define Build/sercomm-prepend-tagged-kernel
137 $(CP) $(IMAGE_KERNEL) $(IMAGE_KERNEL).tagged
138 $(call Build/sercomm-part-tag-common,$(word 1,$(1)) \
139 $(IMAGE_KERNEL).tagged)
140 dd if=$@ >> $(IMAGE_KERNEL).tagged 2>/dev/null
141 mv $(IMAGE_KERNEL).tagged $@
142 endef
143
144 define Build/sercomm-reset-slot1-chksum
145 printf "\xff\xff\xff\xff" | \
146 dd of=$@ seek=$$((0x118)) bs=1 conv=notrunc 2>/dev/null
147 endef
148
149 define Build/sercomm-sysupgrade-cpj
150 dd bs=$$((0x1fff00)) count=1 if=$@ of=$@.kernel conv=notrunc \
151 2>/dev/null
152 dd bs=$$((0x1fff00)) skip=1 if=$@ of=$@.rootfs conv=notrunc \
153 2>/dev/null
154 $(TOPDIR)/scripts/sercomm-kernel-header.py \
155 --kernel-image $@.kernel \
156 --kernel-offset $(SERCOMM_KERNEL_OFFSET) \
157 --rootfs-image $@.rootfs \
158 --rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
159 --output-header $@.header
160 cat $@.header $@.kernel $@.rootfs > $@
161 rm $@.header $@.kernel $@.rootfs
162 endef
163
164 define Device/sercomm
165 $(Device/nand)
166 LOADER_TYPE := bin
167 IMAGES += factory.img
168 endef
169
170 define Device/sercomm_cpj
171 SOC := mt7620a
172 DEVICE_VENDOR := Rostelecom
173 DEVICE_ALT0_VENDOR := Sercomm
174 IMAGE_SIZE := 7743k
175 SERCOMM_HWID := CPJ
176 SERCOMM_HWVER := 10000
177 SERCOMM_SWVER := 1001
178 SERCOMM_KERNEL_OFFSET := 0x70100
179 SERCOMM_ROOTFS_OFFSET := 0x270000
180 SERCOMM_KERNEL2_OFFSET := 0x800100
181 SERCOMM_ROOTFS2_OFFSET := 0xa00000
182 IMAGE/sysupgrade.bin := append-kernel | append-rootfs | \
183 sercomm-sysupgrade-cpj | pad-rootfs | check-size | \
184 append-metadata
185 ARTIFACTS := initramfs-factory.img
186 DEVICE_PACKAGES := kmod-mt76x2
187 endef
188
189 define Device/sercomm_cxx_dxx
190 $(Device/sercomm)
191 KERNEL_SIZE := 6144k
192 KERNEL_LOADADDR := 0x81001000
193 LZMA_TEXT_START := 0x82800000
194 SERCOMM_KERNEL_OFFSET := 0x400100
195 SERCOMM_ROOTFS_OFFSET := 0x1000000
196 endef
197
198 define Device/sercomm_cxx
199 $(Device/sercomm_cxx_dxx)
200 SERCOMM_KERNEL2_OFFSET := 0xa00100
201 SERCOMM_ROOTFS2_OFFSET := 0x3000000
202 KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | lzma -a0 | \
203 uImage lzma
204 IMAGE/sysupgrade.bin := append-kernel | sercomm-kernel | \
205 sysupgrade-tar kernel=$$$$@ | append-metadata
206 IMAGE/factory.img := append-kernel | sercomm-kernel-factory | \
207 append-ubi | sercomm-factory-cqr | sercomm-mkhash
208 endef
209
210 define Device/sercomm_dxx
211 $(Device/sercomm_cxx_dxx)
212 KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | lzma -a0 | \
213 uImage lzma | sercomm-kernel
214 KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | \
215 lzma -a0 | uImage lzma
216 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
217 IMAGE/factory.img := append-ubi | check-size | \
218 sercomm-part-tag rootfs | sercomm-prepend-tagged-kernel kernel | \
219 gzip | sercomm-payload | sercomm-crypto
220 endef
221
222 define Device/sercomm_s1500
223 $(Device/sercomm)
224 SERCOMM_KERNEL_OFFSET := 0x1700100
225 SERCOMM_ROOTFS_OFFSET := 0x1f00000
226 SERCOMM_KERNEL2_OFFSET := 0x1b00100
227 KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | lzma -a0 | \
228 uImage lzma
229 KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | \
230 lzma -a0 | uImage lzma
231 IMAGE/sysupgrade.bin := append-kernel | sercomm-kernel | \
232 sysupgrade-tar kernel=$$$$@ | append-metadata
233 DEVICE_PACKAGES := kmod-mt76x2 kmod-usb3
234 endef