ath79: fix first reboot issue on Netgear WNDR4300 v2 and WNDR4500 v3
[openwrt/staging/neocturne.git] / target / linux / ath79 / image / nand.mk
1 define Build/dongwon-header
2 head -c 4 $@ > $@.tmp
3 head -c 8 /dev/zero >> $@.tmp
4 tail -c +9 $@ >> $@.tmp
5 ( \
6 header_crc="$$(head -c 68 $@.tmp | gzip -c | \
7 tail -c 8 | od -An -N4 -tx4 --endian little | tr -d ' \n')"; \
8 printf "$$(echo $$header_crc | sed 's/../\\x&/g')" | \
9 dd of=$@.tmp bs=4 count=1 seek=1 conv=notrunc \
10 )
11 mv $@.tmp $@
12 endef
13
14 define Build/meraki-header
15 -$(STAGING_DIR_HOST)/bin/mkmerakifw \
16 -B $(1) -s \
17 -i $@ \
18 -o $@.new
19 @mv $@.new $@
20 endef
21
22 # attention: only zlib compression is allowed for the boot fs
23 define Build/zyxel-buildkerneljffs
24 mkdir -p $@.tmp/boot
25 cp $@ $@.tmp/boot/vmlinux.lzma.uImage
26 $(STAGING_DIR_HOST)/bin/mkfs.jffs2 \
27 --big-endian --squash-uids -v -e 128KiB -q -f -n -x lzma -x rtime \
28 -o $@ \
29 -d $@.tmp
30 rm -rf $@.tmp
31 endef
32
33 define Build/zyxel-factory
34 let \
35 maxsize="$(subst k,* 1024,$(RAS_ROOTFS_SIZE))"; \
36 let size="$$(stat -c%s $@)"; \
37 if [ $$size -lt $$maxsize ]; then \
38 $(STAGING_DIR_HOST)/bin/mkrasimage \
39 -b $(RAS_BOARD) \
40 -v $(RAS_VERSION) \
41 -r $@ \
42 -s $$maxsize \
43 -o $@.new \
44 -l 131072 \
45 && mv $@.new $@ ; \
46 fi
47 endef
48
49 define Device/8dev_rambutan
50 SOC := qca9557
51 DEVICE_VENDOR := 8devices
52 DEVICE_MODEL := Rambutan
53 DEVICE_PACKAGES := kmod-usb2
54 BLOCKSIZE := 128k
55 PAGESIZE := 2048
56 KERNEL_SIZE := 4096k
57 KERNEL_IN_UBI := 1
58 IMAGES := factory.bin sysupgrade.tar
59 IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
60 IMAGE/factory.bin := append-ubi
61 endef
62 TARGET_DEVICES += 8dev_rambutan
63
64 define Device/aerohive_hiveap-121
65 SOC := ar9344
66 DEVICE_VENDOR := Aerohive
67 DEVICE_MODEL := HiveAP 121
68 DEVICE_PACKAGES := kmod-usb2
69 BLOCKSIZE := 128k
70 PAGESIZE := 2048
71 IMAGE_SIZE := 116m
72 KERNEL_SIZE := 5120k
73 UBINIZE_OPTS := -E 5
74 SUPPORTED_DEVICES += hiveap-121
75 IMAGES += factory.bin
76 IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
77 check-size
78 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
79 endef
80 TARGET_DEVICES += aerohive_hiveap-121
81
82 define Device/domywifi_dw33d
83 SOC := qca9558
84 DEVICE_VENDOR := DomyWifi
85 DEVICE_MODEL := DW33D
86 DEVICE_PACKAGES := kmod-usb2 kmod-usb-storage kmod-usb-ledtrig-usbport \
87 kmod-ath10k-ct ath10k-firmware-qca988x-ct
88 KERNEL_SIZE := 5120k
89 IMAGE_SIZE := 98304k
90 BLOCKSIZE := 128k
91 PAGESIZE := 2048
92 UBINIZE_OPTS := -E 5
93 IMAGES += factory.bin
94 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
95 IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
96 check-size
97 endef
98 TARGET_DEVICES += domywifi_dw33d
99
100 define Device/dongwon_dw02-412h
101 SOC := qca9557
102 DEVICE_VENDOR := Dongwon T&I
103 DEVICE_MODEL := DW02-412H
104 DEVICE_ALT0_VENDOR := KT
105 DEVICE_ALT0_MODEL := GiGA WiFi home
106 DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct
107 KERNEL_SIZE := 8192k
108 BLOCKSIZE := 128k
109 PAGESIZE := 2048
110 KERNEL := $$(KERNEL) | dongwon-header
111 KERNEL_INITRAMFS := $$(KERNEL)
112 UBINIZE_OPTS := -E 5
113 IMAGES += factory.img
114 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
115 check-size
116 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
117 endef
118
119 define Device/dongwon_dw02-412h-64m
120 $(Device/dongwon_dw02-412h)
121 DEVICE_VARIANT := (64M)
122 DEVICE_ALT0_VARIANT := (64M)
123 IMAGE_SIZE := 49152k
124 endef
125 TARGET_DEVICES += dongwon_dw02-412h-64m
126
127 define Device/dongwon_dw02-412h-128m
128 $(Device/dongwon_dw02-412h)
129 DEVICE_VARIANT := (128M)
130 DEVICE_ALT0_VARIANT := (128M)
131 IMAGE_SIZE := 114688k
132 endef
133 TARGET_DEVICES += dongwon_dw02-412h-128m
134
135 define Device/glinet_gl-ar300m-common-nand
136 SOC := qca9531
137 DEVICE_VENDOR := GL.iNet
138 DEVICE_MODEL := GL-AR300M
139 DEVICE_PACKAGES := kmod-usb2
140 KERNEL_SIZE := 4096k
141 IMAGE_SIZE := 16000k
142 PAGESIZE := 2048
143 VID_HDR_OFFSET := 2048
144 endef
145
146 define Device/glinet_gl-ar300m-nand
147 $(Device/glinet_gl-ar300m-common-nand)
148 DEVICE_VARIANT := NAND
149 BLOCKSIZE := 128k
150 IMAGES += factory.img
151 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
152 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
153 SUPPORTED_DEVICES += glinet,gl-ar300m-nor
154 endef
155 TARGET_DEVICES += glinet_gl-ar300m-nand
156
157 define Device/glinet_gl-ar300m-nor
158 $(Device/glinet_gl-ar300m-common-nand)
159 DEVICE_VARIANT := NOR
160 SUPPORTED_DEVICES += glinet,gl-ar300m-nand gl-ar300m
161 endef
162 TARGET_DEVICES += glinet_gl-ar300m-nor
163
164 define Device/glinet_gl-ar750s-common
165 SOC := qca9563
166 DEVICE_VENDOR := GL.iNet
167 DEVICE_MODEL := GL-AR750S
168 DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct kmod-usb2 \
169 kmod-usb-storage block-mount
170 IMAGE_SIZE := 16000k
171 endef
172
173 define Device/glinet_gl-ar750s-nor-nand
174 $(Device/glinet_gl-ar750s-common)
175 DEVICE_VARIANT := NOR/NAND
176 KERNEL_SIZE := 4096k
177 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
178 SUPPORTED_DEVICES += glinet,gl-ar750s-nor
179 endef
180 TARGET_DEVICES += glinet_gl-ar750s-nor-nand
181
182 define Device/glinet_gl-ar750s-nor
183 $(Device/glinet_gl-ar750s-common)
184 DEVICE_VARIANT := NOR
185 SUPPORTED_DEVICES += gl-ar750s glinet,gl-ar750s glinet,gl-ar750s-nor-nand
186 endef
187 TARGET_DEVICES += glinet_gl-ar750s-nor
188
189 define Device/glinet_gl-e750
190 SOC := qca9531
191 DEVICE_VENDOR := GL.iNet
192 DEVICE_MODEL := GL-E750
193 DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct kmod-usb2
194 SUPPORTED_DEVICES += gl-e750
195 KERNEL_SIZE := 4096k
196 IMAGE_SIZE := 131072k
197 PAGESIZE := 2048
198 VID_HDR_OFFSET := 2048
199 BLOCKSIZE := 128k
200 IMAGES += factory.img
201 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
202 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
203 endef
204 TARGET_DEVICES += glinet_gl-e750
205
206 define Device/glinet_gl-xe300
207 SOC := qca9531
208 DEVICE_VENDOR := GL.iNet
209 DEVICE_MODEL := GL-XE300
210 DEVICE_PACKAGES := kmod-usb2 block-mount kmod-usb-serial-ch341 \
211 kmod-usb-net-qmi-wwan uqmi
212 KERNEL_SIZE := 4096k
213 IMAGE_SIZE := 131072k
214 PAGESIZE := 2048
215 VID_HDR_OFFSET := 2048
216 BLOCKSIZE := 128k
217 IMAGES += factory.img
218 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
219 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
220 endef
221 TARGET_DEVICES += glinet_gl-xe300
222
223 define Device/glinet_gl-x1200-common
224 SOC := qca9563
225 DEVICE_VENDOR := GL.iNet
226 DEVICE_MODEL := GL-X1200
227 DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct-htt kmod-usb2 \
228 kmod-usb-storage block-mount kmod-usb-net-qmi-wwan uqmi
229 IMAGE_SIZE := 16000k
230 endef
231
232 define Device/glinet_gl-x1200-nor-nand
233 $(Device/glinet_gl-x1200-common)
234 DEVICE_VARIANT := NOR/NAND
235 KERNEL_SIZE := 4096k
236 IMAGE_SIZE := 131072k
237 PAGESIZE := 2048
238 VID_HDR_OFFSET := 2048
239 BLOCKSIZE := 128k
240 IMAGES += factory.img
241 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
242 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
243 endef
244 TARGET_DEVICES += glinet_gl-x1200-nor-nand
245
246 define Device/glinet_gl-x1200-nor
247 $(Device/glinet_gl-x1200-common)
248 DEVICE_VARIANT := NOR
249 endef
250 TARGET_DEVICES += glinet_gl-x1200-nor
251
252 define Device/linksys_ea4500-v3
253 SOC := qca9558
254 DEVICE_VENDOR := Linksys
255 DEVICE_MODEL := EA4500
256 DEVICE_VARIANT := v3
257 DEVICE_PACKAGES := kmod-usb2
258 BLOCKSIZE := 128k
259 PAGESIZE := 2048
260 KERNEL_SIZE := 4096k
261 IMAGE_SIZE := 81920k
262 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
263 LINKSYS_HWNAME := EA4500V3
264 IMAGES += factory.img
265 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | \
266 append-ubi | check-size | linksys-image type=$$$$(LINKSYS_HWNAME)
267 UBINIZE_OPTS := -E 5
268 endef
269 TARGET_DEVICES += linksys_ea4500-v3
270
271 define Device/meraki_mr18
272 SOC := qca9557
273 DEVICE_VENDOR := Meraki
274 DEVICE_MODEL := MR18
275 DEVICE_PACKAGES := kmod-leds-uleds kmod-spi-gpio nu801
276 KERNEL_SIZE := 8m
277 BLOCKSIZE := 128k
278 PAGESIZE := 2048
279 LOADER_TYPE := bin
280 KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | meraki-header MR18
281 # Initramfs-build fails due to size issues
282 # KERNEL_INITRAMFS := $$(KERNEL)
283 KERNEL_INITRAMFS :=
284 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
285 endef
286 TARGET_DEVICES += meraki_mr18
287
288 # fake rootfs is mandatory, pad-offset 129 equals (2 * uimage_header + '\0')
289 define Device/netgear_ath79_nand
290 DEVICE_VENDOR := NETGEAR
291 DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport
292 KERNEL_SIZE := 4096k
293 BLOCKSIZE := 128k
294 PAGESIZE := 2048
295 IMAGE_SIZE := 25600k
296 KERNEL := kernel-bin | append-dtb | lzma | \
297 pad-offset $$(BLOCKSIZE) 129 | uImage lzma | pad-extra 1 | \
298 append-uImage-fakehdr filesystem $$(UIMAGE_MAGIC)
299 IMAGES := sysupgrade.bin factory.img
300 IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | \
301 append-ubi | check-size | netgear-dni
302 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
303 UBINIZE_OPTS := -E 5
304 endef
305
306 define Device/netgear_pgzng1
307 SOC := ar9344
308 DEVICE_MODEL := PGZNG1
309 DEVICE_VENDOR := NETGEAR
310 DEVICE_ALT0_MODEL := Pulse Gateway
311 DEVICE_ALT0_VENDOR := ADT
312 DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-i2c-gpio \
313 kmod-leds-pca955x kmod-rtc-isl1208 kmod-spi-dev
314 KERNEL_SIZE := 5120k
315 IMAGE_SIZE := 83968k
316 PAGESIZE := 2048
317 BLOCKSIZE := 128k
318 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
319 endef
320 TARGET_DEVICES += netgear_pgzng1
321
322 define Device/netgear_r6100
323 SOC := ar9344
324 DEVICE_MODEL := R6100
325 UIMAGE_MAGIC := 0x36303030
326 NETGEAR_BOARD_ID := R6100
327 NETGEAR_HW_ID := 29764434+0+128+128+2x2+2x2
328 $(Device/netgear_ath79_nand)
329 DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
330 endef
331 TARGET_DEVICES += netgear_r6100
332
333 define Device/netgear_wndr3700-v4
334 SOC := ar9344
335 DEVICE_MODEL := WNDR3700
336 DEVICE_VARIANT := v4
337 UIMAGE_MAGIC := 0x33373033
338 NETGEAR_BOARD_ID := WNDR3700v4
339 NETGEAR_HW_ID := 29763948+128+128
340 $(Device/netgear_ath79_nand)
341 endef
342 TARGET_DEVICES += netgear_wndr3700-v4
343
344 define Device/netgear_wndr4300
345 SOC := ar9344
346 DEVICE_MODEL := WNDR4300
347 UIMAGE_MAGIC := 0x33373033
348 NETGEAR_BOARD_ID := WNDR4300
349 NETGEAR_HW_ID := 29763948+0+128+128+2x2+3x3
350 $(Device/netgear_ath79_nand)
351 endef
352 TARGET_DEVICES += netgear_wndr4300
353
354 define Device/netgear_wndr4300sw
355 SOC := ar9344
356 DEVICE_MODEL := WNDR4300SW
357 UIMAGE_MAGIC := 0x33373033
358 NETGEAR_BOARD_ID := WNDR4300SW
359 NETGEAR_HW_ID := 29763948+0+128+128+2x2+3x3
360 $(Device/netgear_ath79_nand)
361 endef
362 TARGET_DEVICES += netgear_wndr4300sw
363
364 define Device/netgear_wndr4300tn
365 SOC := ar9344
366 DEVICE_MODEL := WNDR4300TN
367 UIMAGE_MAGIC := 0x33373033
368 NETGEAR_BOARD_ID := WNDR4300TN
369 NETGEAR_HW_ID := 29763948+0+128+128+2x2+3x3
370 $(Device/netgear_ath79_nand)
371 endef
372 TARGET_DEVICES += netgear_wndr4300tn
373
374 define Device/netgear_wndr4300-v2
375 SOC := qca9563
376 DEVICE_COMPAT_VERSION := 1.1
377 DEVICE_COMPAT_MESSAGE := Partition table has been changed to fix the \
378 first reboot issue. Please reflash factory image with nmrp or tftp.
379 DEVICE_MODEL := WNDR4300
380 DEVICE_VARIANT := v2
381 UIMAGE_MAGIC := 0x27051956
382 NETGEAR_BOARD_ID := WNDR4500series
383 NETGEAR_HW_ID := 29764821+2+128+128+3x3+3x3+5508012175
384 $(Device/netgear_ath79_nand)
385 endef
386 TARGET_DEVICES += netgear_wndr4300-v2
387
388 define Device/netgear_wndr4500-v3
389 SOC := qca9563
390 DEVICE_COMPAT_VERSION := 1.1
391 DEVICE_COMPAT_MESSAGE := Partition table has been changed to fix the \
392 first reboot issue. Please reflash factory image with nmrp or tftp.
393 DEVICE_MODEL := WNDR4500
394 DEVICE_VARIANT := v3
395 UIMAGE_MAGIC := 0x27051956
396 NETGEAR_BOARD_ID := WNDR4500series
397 NETGEAR_HW_ID := 29764821+2+128+128+3x3+3x3+5508012173
398 $(Device/netgear_ath79_nand)
399 endef
400 TARGET_DEVICES += netgear_wndr4500-v3
401
402 define Device/zte_mf28x_common
403 SOC := qca9563
404 DEVICE_VENDOR := ZTE
405 DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct
406 BLOCKSIZE := 128k
407 PAGESIZE := 2048
408 KERNEL_SIZE := 4096k
409 IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
410 endef
411
412 define Device/zte_mf281
413 $(Device/zte_mf28x_common)
414 DEVICE_MODEL := MF281
415 KERNEL_SIZE := 6144k
416 IMAGE_SIZE := 29696k
417 IMAGES += factory.bin
418 IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
419 check-size
420 DEVICE_PACKAGES += ath10k-firmware-qca9888-ct kmod-usb-net-rndis \
421 kmod-usb-acm comgt-ncm
422 endef
423 TARGET_DEVICES += zte_mf281
424
425 define Device/zte_mf282
426 $(Device/zte_mf28x_common)
427 DEVICE_MODEL := MF282
428 DEVICE_PACKAGES += ath10k-firmware-qca988x-ct kmod-usb-net-qmi-wwan \
429 kmod-usb-serial-option uqmi
430 endef
431 TARGET_DEVICES += zte_mf282
432
433 define Device/zte_mf286
434 $(Device/zte_mf28x_common)
435 DEVICE_MODEL := MF286
436 DEVICE_PACKAGES += ath10k-firmware-qca988x-ct ath10k-firmware-qca9888-ct \
437 kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi
438 endef
439 TARGET_DEVICES += zte_mf286
440
441 define Device/zte_mf286a
442 $(Device/zte_mf28x_common)
443 DEVICE_MODEL := MF286A
444 DEVICE_PACKAGES += ath10k-firmware-qca9888-ct kmod-usb-net-qmi-wwan \
445 kmod-usb-serial-option uqmi
446 endef
447 TARGET_DEVICES += zte_mf286a
448
449 define Device/zte_mf286r
450 $(Device/zte_mf28x_common)
451 DEVICE_MODEL := MF286R
452 DEVICE_PACKAGES += ath10k-firmware-qca9888-ct kmod-usb-net-rndis kmod-usb-acm \
453 comgt-ncm
454 endef
455 TARGET_DEVICES += zte_mf286r
456
457 define Device/zyxel_nbg6716
458 SOC := qca9558
459 DEVICE_VENDOR := ZyXEL
460 DEVICE_MODEL := NBG6716
461 DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct \
462 ath10k-firmware-qca988x-ct
463 RAS_BOARD := NBG6716
464 RAS_ROOTFS_SIZE := 29696k
465 RAS_VERSION := "OpenWrt Linux-$(LINUX_VERSION)"
466 KERNEL_SIZE := 4096k
467 BLOCKSIZE := 128k
468 PAGESIZE := 2048
469 LOADER_TYPE := bin
470 KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | uImage none | \
471 zyxel-buildkerneljffs | check-size 4096k
472 IMAGES := sysupgrade.tar sysupgrade-4M-Kernel.bin factory.bin
473 IMAGE/sysupgrade.tar/squashfs := append-rootfs | pad-to $$$$(BLOCKSIZE) | \
474 sysupgrade-tar rootfs=$$$$@ | append-metadata
475 IMAGE/sysupgrade-4M-Kernel.bin/squashfs := append-kernel | \
476 pad-to $$$$(KERNEL_SIZE) | append-ubi | pad-to 263192576 | gzip
477 IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
478 zyxel-factory
479 UBINIZE_OPTS := -E 5
480 endef
481 TARGET_DEVICES += zyxel_nbg6716
482
483 define Device/zyxel_emg2926_q10a
484 $(Device/zyxel_nbg6716)
485 DEVICE_MODEL := EMG2926-Q10A
486 RAS_BOARD := AAVK-EMG2926Q10A
487 endef
488 TARGET_DEVICES += zyxel_emg2926_q10a