OpenWrt – Blame information for rev 4

Subversion Repositories:
Rev:
Rev Author Line No. Line
4 office 1 #
2 # Copyright (C) 2011 OpenWrt.org
3 #
4  
5 . /lib/functions/system.sh
6 . /lib/ar71xx.sh
7  
8 PART_NAME=firmware
9 RAMFS_COPY_DATA=/lib/ar71xx.sh
10 RAMFS_COPY_BIN='nandwrite'
11  
12 CI_BLKSZ=65536
13 CI_LDADR=0x80060000
14  
15 PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0
16  
17 platform_find_partitions() {
18 local first dev size erasesize name
19 while read dev size erasesize name; do
20 name=${name#'"'}; name=${name%'"'}
21 case "$name" in
22 vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin|rootfs|filesystem)
23 if [ -z "$first" ]; then
24 first="$name"
25 else
26 echo "$erasesize:$first:$name"
27 break
28 fi
29 ;;
30 esac
31 done < /proc/mtd
32 }
33  
34 platform_find_kernelpart() {
35 local part
36 for part in "${1%:*}" "${1#*:}"; do
37 case "$part" in
38 vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin)
39 echo "$part"
40 break
41 ;;
42 esac
43 done
44 }
45  
46 platform_find_rootfspart() {
47 local part
48 for part in "${1%:*}" "${1#*:}"; do
49 [ "$part" != "$2" ] && echo "$part" && break
50 done
51 }
52  
53 platform_do_upgrade_combined() {
54 local partitions=$(platform_find_partitions)
55 local kernelpart=$(platform_find_kernelpart "${partitions#*:}")
56 local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}"
57 local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null)
58 local kern_blocks=$(($kern_length / $CI_BLKSZ))
59 local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ))
60  
61 if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \
62 [ ${kern_blocks:-0} -gt 0 ] && \
63 [ ${root_blocks:-0} -gt 0 ] && \
64 [ ${erase_size:-0} -gt 0 ];
65 then
66 local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart")
67 local append=""
68 [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
69  
70 if [ "$PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD" -ne 1 ]; then
71 ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \
72 dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \
73 mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions
74 elif [ -n "$rootfspart" ]; then
75 dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null | \
76 mtd write - $kernelpart
77 dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null | \
78 mtd -r $append write - $rootfspart
79 fi
80 fi
81 PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0
82 }
83  
84 tplink_get_image_hwid() {
85 get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
86 }
87  
88 tplink_get_image_mid() {
89 get_image "$@" | dd bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
90 }
91  
92 tplink_get_image_boot_size() {
93 get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
94 }
95  
96 tplink_pharos_check_support_list() {
97 local image="$1"
98 local offset="$2"
99 local model="$3"
100 local trargs="$4"
101  
102 # Here $image is given to dd directly instead of using get_image;
103 # otherwise the skip will take almost a second (as dd can't seek)
104 dd if="$image" bs=1 skip=$offset count=1024 2>/dev/null | tr -d "$trargs" | (
105 while IFS= read -r line; do
106 [ "$line" = "$model" ] && exit 0
107 done
108  
109 exit 1
110 )
111 }
112  
113 tplink_pharos_check_image() {
114 local image_magic="$(get_magic_long "$1")"
115 local board_magic="$2"
116 [ "$image_magic" != "$board_magic" ] && {
117 echo "Invalid image magic '$image_magic'. Expected '$board_magic'."
118 return 1
119 }
120  
121 local model_string="$3"
122 local trargs="$4"
123  
124 # New images have the support list at 7802888, old ones at 1511432
125 tplink_pharos_check_support_list "$1" 7802888 "$model_string" "$trargs" || \
126 tplink_pharos_check_support_list "$1" 1511432 "$model_string" "$trargs" || {
127 echo "Unsupported image (model not in support-list)"
128 return 1
129 }
130  
131 return 0
132 }
133  
134 seama_get_type_magic() {
135 get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
136 }
137  
138 wrgg_get_image_magic() {
139 get_image "$@" | dd bs=4 count=1 skip=8 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
140 }
141  
142 cybertan_get_image_magic() {
143 get_image "$@" | dd bs=8 count=1 skip=0 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"'
144 }
145  
146 cybertan_check_image() {
147 local magic="$(cybertan_get_image_magic "$1")"
148 local fw_magic="$(cybertan_get_hw_magic)"
149  
150 [ "$fw_magic" != "$magic" ] && {
151 echo "Invalid image, ID mismatch, got:$magic, but need:$fw_magic"
152 return 1
153 }
154  
155 return 0
156 }
157  
158 platform_do_upgrade_compex() {
159 local fw_file=$1
160 local fw_part=$PART_NAME
161 local fw_mtd=$(find_mtd_part $fw_part)
162 local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null)
163 local fw_blocks=$(($fw_length / 65536))
164  
165 if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then
166 local append=""
167 [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR"
168  
169 sync
170 dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \
171 mtd $append write - "$fw_part"
172 fi
173 }
174  
175 alfa_check_image() {
176 local magic_long="$(get_magic_long "$1")"
177 local fw_part_size=$(mtd_get_part_size firmware)
178  
179 case "$magic_long" in
180 "27051956")
181 [ "$fw_part_size" != "16318464" ] && {
182 echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes"
183 return 1
184 }
185 ;;
186 "68737173")
187 [ "$fw_part_size" != "7929856" ] && {
188 echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes"
189 return 1
190 }
191 ;;
192 esac
193  
194 return 0
195 }
196  
197 gl_board_is_nand() {
198 local size="$(mtd_get_part_size 'ubi')"
199 case "$size" in
200 132120576)
201 return 0
202 ;;
203 134217728)
204 return 0
205 ;;
206 *)
207 return 1
208 ;;
209 esac
210 }
211  
212 # $(1) image file
213 # $(2) board name
214 # $(3) magic
215 platform_check_image_gl_nand() {
216 local board=$2
217 local magic=$3
218  
219 if gl_board_is_nand; then
220 nand_do_platform_check $board $1
221 return $?
222 else
223 [ "$magic" != "2705" ] && {
224 echo "Invalid image type."
225 return 1
226 }
227 return 0
228 fi
229 }
230  
231 platform_check_image() {
232 local board=$(board_name)
233 local magic="$(get_magic_word "$1")"
234 local magic_long="$(get_magic_long "$1")"
235  
236 [ "$#" -gt 1 ] && return 1
237  
238 case "$board" in
239 airgateway|\
240 airgatewaypro|\
241 airrouter|\
242 ap121f|\
243 ap132|\
244 ap531b0|\
245 ap90q|\
246 archer-c25-v1|\
247 archer-c58-v1|\
248 archer-c59-v1|\
249 archer-c60-v1|\
250 archer-c60-v2|\
251 archer-c7-v4|\
252 archer-c7-v5|\
253 bullet-m|\
254 c-55|\
255 carambola2|\
256 cf-e316n-v2|\
257 cf-e320n-v2|\
258 cf-e355ac-v1|\
259 cf-e355ac-v2|\
260 cf-e375ac|\
261 cf-e380ac-v1|\
262 cf-e380ac-v2|\
263 cf-e385ac|\
264 cf-e520n|\
265 cf-e530n|\
266 cpe505n|\
267 cpe830|\
268 cpe870|\
269 dap-1330-a1|\
270 dgl-5500-a1|\
271 dhp-1565-a1|\
272 dir-505-a1|\
273 dir-600-a1|\
274 dir-615-c1|\
275 dir-615-e1|\
276 dir-615-e4|\
277 dir-615-i1|\
278 dir-825-c1|\
279 dir-835-a1|\
280 dlan-hotspot|\
281 dlan-pro-1200-ac|\
282 dlan-pro-500-wp|\
283 dr342|\
284 dr531|\
285 dragino2|\
286 e1700ac-v2|\
287 e558-v2|\
288 e600g-v2|\
289 e600gac-v2|\
290 e750a-v4|\
291 e750g-v8|\
292 ebr-2310-c1|\
293 ens202ext|\
294 epg5000|\
295 esr1750|\
296 esr900|\
297 ew-balin|\
298 ew-dorin|\
299 ew-dorin-router|\
300 gl-ar150|\
301 gl-ar300|\
302 gl-ar750|\
303 gl-domino|\
304 gl-mifi|\
305 gl-mifi-v3|\
306 gl-usb150|\
307 hiwifi-hc6361|\
308 hornet-ub-x2|\
309 jwap230|\
310 lbe-m5|\
311 lima|\
312 loco-m-xw|\
313 mzk-w04nu|\
314 mzk-w300nh|\
315 n5q|\
316 nanostation-m|\
317 nanostation-m-xw|\
318 nbg460n_550n_550nh|\
319 pqi-air-pen|\
320 r36a|\
321 r602n|\
322 rme-eg200|\
323 rocket-m|\
324 rocket-m-ti|\
325 rocket-m-xw|\
326 rw2458n|\
327 sc1750|\
328 sc300m|\
329 sc450|\
330 sr3200|\
331 t830|\
332 tew-632brp|\
333 tew-712br|\
334 tew-732br|\
335 tew-823dru|\
336 tl-wr1043n-v5|\
337 tl-wr942n-v1|\
338 unifi|\
339 unifi-outdoor|\
340 unifiac-lite|\
341 unifiac-pro|\
342 wam250|\
343 weio|\
344 whr-g301n|\
345 whr-hp-g300n|\
346 whr-hp-gn|\
347 wlae-ag300n|\
348 wndap360|\
349 wpj342|\
350 wpj344|\
351 wpj531|\
352 wpj558|\
353 wpj563|\
354 wrt400n|\
355 wrtnode2q|\
356 wzr-450hp2|\
357 wzr-hp-ag300h|\
358 wzr-hp-g300nh|\
359 wzr-hp-g300nh2|\
360 wzr-hp-g450h|\
361 xd3200)
362 [ "$magic" != "2705" ] && {
363 echo "Invalid image type."
364 return 1
365 }
366  
367 return 0
368 ;;
369 gl-ar300m|\
370 gl-x750|\
371 gl-x1200|\
372 gl-ar750s)
373 platform_check_image_gl_nand "$1" "$board" "$magic" && return 0
374 return 1
375 ;;
376 alfa-ap96|\
377 alfa-nx|\
378 ap121|\
379 ap121-mini|\
380 ap135-020|\
381 ap136-010|\
382 ap136-020|\
383 ap147-010|\
384 ap152|\
385 ap91-5g|\
386 ap96|\
387 arduino-yun|\
388 bhr-4grv2|\
389 bxu2000n-2-a1|\
390 db120|\
391 dr344|\
392 dw33d|\
393 f9k1115v2|\
394 hornet-ub|\
395 mr12|\
396 mr16|\
397 zbt-we1526|\
398 zcn-1523h-2|\
399 zcn-1523h-5)
400 [ "$magic_long" != "68737173" -a "$magic_long" != "19852003" ] && {
401 echo "Invalid image type."
402 return 1
403 }
404  
405 return 0
406 ;;
407 all0258n|\
408 all0315n|\
409 cap324|\
410 cap4200ag|\
411 cr3000|\
412 cr5000)
413 platform_check_image_allnet "$1" && return 0
414 return 1
415 ;;
416 all0305|\
417 eap300v2|\
418 eap7660d|\
419 ja76pf|\
420 ja76pf2|\
421 jwap003|\
422 ls-sr71|\
423 pb42|\
424 pb44|\
425 routerstation|\
426 routerstation-pro|\
427 wp543|\
428 wpe72)
429 [ "$magic" != "4349" ] && {
430 echo "Invalid image. Use *-sysupgrade.bin files on this board"
431 return 1
432 }
433  
434 local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null)
435 local md5_chk=$(dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}"
436  
437 if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then
438 return 0
439 else
440 echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)"
441 return 1
442 fi
443  
444 return 0
445 ;;
446 antminer-s1|\
447 antminer-s3|\
448 antrouter-r1|\
449 archer-c5|\
450 archer-c7|\
451 el-m150|\
452 el-mini|\
453 gl-inet|\
454 lan-turtle|\
455 mc-mac1200r|\
456 minibox-v1|\
457 omy-g1|\
458 omy-x1|\
459 onion-omega|\
460 oolite-v1|\
461 oolite-v5.2|\
462 oolite-v5.2-dev|\
463 packet-squirrel|\
464 re355|\
465 re450|\
466 rut900|\
467 smart-300|\
468 som9331|\
469 tellstick-znet-lite|\
470 tl-mr10u|\
471 tl-mr11u|\
472 tl-mr12u|\
473 tl-mr13u|\
474 tl-mr3020|\
475 tl-mr3040|\
476 tl-mr3040-v2|\
477 tl-mr3220|\
478 tl-mr3220-v2|\
479 tl-mr3420|\
480 tl-mr3420-v2|\
481 tl-mr6400|\
482 tl-wa701nd-v2|\
483 tl-wa7210n-v2|\
484 tl-wa750re|\
485 tl-wa7510n|\
486 tl-wa801nd-v2|\
487 tl-wa801nd-v3|\
488 tl-wa830re-v2|\
489 tl-wa850re|\
490 tl-wa850re-v2|\
491 tl-wa855re-v1|\
492 tl-wa860re|\
493 tl-wa901nd|\
494 tl-wa901nd-v2|\
495 tl-wa901nd-v3|\
496 tl-wa901nd-v4|\
497 tl-wa901nd-v5|\
498 tl-wdr3320-v2|\
499 tl-wdr3500|\
500 tl-wdr4300|\
501 tl-wdr4900-v2|\
502 tl-wdr6500-v2|\
503 tl-wpa8630|\
504 tl-wr1041n-v2|\
505 tl-wr1043nd|\
506 tl-wr1043nd-v2|\
507 tl-wr1043nd-v4|\
508 tl-wr2543n|\
509 tl-wr703n|\
510 tl-wr710n|\
511 tl-wr720n-v3|\
512 tl-wr740n-v6|\
513 tl-wr741nd|\
514 tl-wr741nd-v4|\
515 tl-wr802n-v1|\
516 tl-wr802n-v2|\
517 tl-wr810n|\
518 tl-wr810n-v2|\
519 tl-wr840n-v2|\
520 tl-wr840n-v3|\
521 tl-wr841n-v1|\
522 tl-wr841n-v7|\
523 tl-wr841n-v8|\
524 tl-wr841n-v9|\
525 tl-wr841n-v11|\
526 tl-wr842n-v2|\
527 tl-wr842n-v3|\
528 tl-wr902ac-v1|\
529 tl-wr940n-v4|\
530 tl-wr940n-v6|\
531 tl-wr941nd|\
532 tl-wr941nd-v5|\
533 tl-wr941nd-v6|\
534 ts-d084|\
535 wifi-pineapple-nano)
536 local magic_ver="0100"
537  
538 case "$board" in
539 tl-wdr6500-v2)
540 magic_ver="0200"
541 ;;
542 esac
543  
544 [ "$magic" != "$magic_ver" ] && {
545 echo "Invalid image type."
546 return 1
547 }
548  
549 local hwid
550 local mid
551 local imagehwid
552 local imagemid
553  
554 hwid=$(tplink_get_hwid)
555 mid=$(tplink_get_mid)
556 imagehwid=$(tplink_get_image_hwid "$1")
557 imagemid=$(tplink_get_image_mid "$1")
558  
559 [ "$hwid" != "$imagehwid" -o "$mid" != "$imagemid" ] && {
560 echo "Invalid image, hardware ID mismatch, hw:$hwid $mid image:$imagehwid $imagemid."
561 return 1
562 }
563  
564 local boot_size
565  
566 boot_size=$(tplink_get_image_boot_size "$1")
567 [ "$boot_size" != "00000000" ] && {
568 echo "Invalid image, it contains a bootloader."
569 return 1
570 }
571  
572 return 0
573 ;;
574 bsb|\
575 dir-825-b1|\
576 tew-673gru)
577 dir825b_check_image "$1" && return 0
578 ;;
579 rb-411|\
580 rb-411u|\
581 rb-433|\
582 rb-433u|\
583 rb-435g|\
584 rb-450|\
585 rb-450g|\
586 rb-493|\
587 rb-493g|\
588 rb-750|\
589 rb-750gl|\
590 rb-751|\
591 rb-751g|\
592 rb-911g-2hpnd|\
593 rb-911g-5hpnd|\
594 rb-911g-5hpacd|\
595 rb-912uag-2hpnd|\
596 rb-912uag-5hpnd|\
597 rb-921gs-5hpacd-r2|\
598 rb-951g-2hnd|\
599 rb-951ui-2hnd|\
600 rb-2011l|\
601 rb-2011il|\
602 rb-2011ils|\
603 rb-2011uas|\
604 rb-2011uas-2hnd|\
605 rb-2011uias|\
606 rb-2011uias-2hnd|\
607 rb-sxt2n|\
608 rb-sxt5n)
609 nand_do_platform_check routerboard $1
610 return $?
611 ;;
612 c-60|\
613 hiveap-121|\
614 nbg6716|\
615 r6100|\
616 rambutan|\
617 wi2a-ac200i|\
618 wndr3700v4|\
619 wndr4300)
620 nand_do_platform_check $board $1
621 return $?
622 ;;
623 cpe210|\
624 cpe510|\
625 eap120|\
626 wbs210|\
627 wbs510)
628 tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_get_model_string)" '' && return 0
629 return 1
630 ;;
631 cpe210-v2)
632 tplink_pharos_check_image "$1" "01000000" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0
633 return 1
634 ;;
635 a40|\
636 a60|\
637 mr1750|\
638 mr1750v2|\
639 mr600|\
640 mr600v2|\
641 mr900|\
642 mr900v2|\
643 om2p|\
644 om2p-hs|\
645 om2p-hsv2|\
646 om2p-hsv3|\
647 om2p-hsv4|\
648 om2p-lc|\
649 om2pv2|\
650 om2pv4|\
651 om5p|\
652 om5p-ac|\
653 om5p-acv2|\
654 om5p-an)
655 platform_check_image_openmesh "$magic_long" "$1" && return 0
656 return 1
657 ;;
658 mr18|\
659 z1)
660 merakinand_do_platform_check $board $1
661 return $?
662 ;;
663 dir-869-a1|\
664 mynet-n600|\
665 mynet-n750|\
666 qihoo-c301)
667 [ "$magic_long" != "5ea3a417" ] && {
668 echo "Invalid image, bad magic: $magic_long"
669 return 1
670 }
671  
672 local typemagic=$(seama_get_type_magic "$1")
673 [ "$typemagic" != "6669726d" ] && {
674 echo "Invalid image, bad type: $typemagic"
675 return 1
676 }
677  
678 return 0
679 ;;
680 e2100l|\
681 mynet-rext|\
682 wrt160nl)
683 cybertan_check_image "$1" && return 0
684 return 1
685 ;;
686 nbg6616|\
687 uap-pro|\
688 unifi-outdoor-plus)
689 [ "$magic_long" != "19852003" ] && {
690 echo "Invalid image type."
691 return 1
692 }
693  
694 return 0
695 ;;
696 tube2h)
697 alfa_check_image "$1" && return 0
698 return 1
699 ;;
700 wndr3700|\
701 wnr1000-v2|\
702 wnr2000-v3|\
703 wnr612-v2|\
704 wpn824n)
705 local hw_magic
706  
707 hw_magic="$(ar71xx_get_mtd_part_magic firmware)"
708 [ "$magic_long" != "$hw_magic" ] && {
709 echo "Invalid image, hardware ID mismatch, hw:$hw_magic image:$magic_long."
710 return 1
711 }
712  
713 return 0
714 ;;
715 wnr2000-v4)
716 [ "$magic_long" != "32303034" ] && {
717 echo "Invalid image type."
718 return 1
719 }
720  
721 return 0
722 ;;
723 wnr2200)
724 [ "$magic_long" != "32323030" ] && {
725 echo "Invalid image type."
726 return 1
727 }
728  
729 return 0
730 ;;
731 dap-2695-a1)
732 local magic=$(wrgg_get_image_magic "$1")
733 [ "$magic" != "21030820" ] && {
734 echo "Invalid image, bad type: $magic"
735 return 1
736 }
737  
738 return 0;
739 ;;
740 # these boards use metadata images
741 fritz300e|\
742 fritz4020|\
743 fritz450e|\
744 koala|\
745 rb-750-r2|\
746 rb-750p-pbr2|\
747 rb-750up-r2|\
748 rb-911-2hn|\
749 rb-911-5hn|\
750 rb-941-2nd|\
751 rb-951ui-2nd|\
752 rb-952ui-5ac2nd|\
753 rb-962uigs-5hact2hnt|\
754 rb-lhg-5nd|\
755 rb-map-2nd|\
756 rb-mapl-2nd|\
757 rb-wap-2nd|\
758 rb-wapg-5hact2hnd)
759 return 0
760 ;;
761 esac
762  
763 echo "Sysupgrade is not yet supported on $board."
764 return 1
765 }
766  
767 platform_pre_upgrade_gl_nand() {
768 if gl_board_is_nand; then
769 nand_do_upgrade "$1"
770 fi
771 }
772  
773 platform_pre_upgrade() {
774 local board=$(board_name)
775  
776 case "$board" in
777 rb-750-r2|\
778 rb-750p-pbr2|\
779 rb-750up-r2|\
780 rb-911-2hn|\
781 rb-911-5hn|\
782 rb-941-2nd|\
783 rb-951ui-2nd|\
784 rb-952ui-5ac2nd|\
785 rb-962uigs-5hact2hnt|\
786 rb-lhg-5nd|\
787 rb-map-2nd|\
788 rb-mapl-2nd|\
789 rb-wap-2nd|\
790 rb-wapg-5hact2hnd)
791 # erase firmware if booted from initramfs
792 [ -z "$(rootfs_type)" ] && mtd erase firmware
793 ;;
794 gl-ar300m|\
795 gl-x750|\
796 gl-x1200|\
797 gl-ar750s)
798 platform_pre_upgrade_gl_nand "$1"
799 ;;
800 esac
801 }
802  
803 platform_nand_pre_upgrade() {
804 local board=$(board_name)
805  
806 case "$board" in
807 rb*)
808 CI_KERNPART=none
809 local fw_mtd=$(find_mtd_part kernel)
810 fw_mtd="${fw_mtd/block/}"
811 [ -n "$fw_mtd" ] || return
812 mtd erase kernel
813 tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" -
814 ;;
815 wi2a-ac200i)
816 case "$(fw_printenv -n dualPartition)" in
817 imgA)
818 fw_setenv dualPartition imgB
819 fw_setenv ActImg NokiaImageB
820 ;;
821 imgB)
822 fw_setenv dualPartition imgA
823 fw_setenv ActImg NokiaImageA
824 ;;
825 esac
826 ubiblock -r /dev/ubiblock0_0 2>/dev/null >/dev/null
827 rm -f /dev/ubiblock0_0
828 ubidetach -d 0 2>/dev/null >/dev/null
829 CI_UBIPART=ubi_alt
830 CI_KERNPART=kernel_alt
831 ;;
832 esac
833 }
834  
835 platform_do_upgrade() {
836 local board=$(board_name)
837  
838 case "$board" in
839 all0258n)
840 platform_do_upgrade_allnet "0x9f050000" "$ARGV"
841 ;;
842 all0305|\
843 eap7660d|\
844 ja76pf|\
845 ja76pf2|\
846 jwap003|\
847 ls-sr71|\
848 pb42|\
849 pb44|\
850 routerstation|\
851 routerstation-pro)
852 platform_do_upgrade_combined "$ARGV"
853 ;;
854 all0315n)
855 platform_do_upgrade_allnet "0x9f080000" "$ARGV"
856 ;;
857 cap4200ag|\
858 eap300v2|\
859 ens202ext)
860 platform_do_upgrade_allnet "0xbf0a0000" "$ARGV"
861 ;;
862 dir-825-b1|\
863 tew-673gru)
864 platform_do_upgrade_dir825b "$ARGV"
865 ;;
866 a40|\
867 a60|\
868 mr1750|\
869 mr1750v2|\
870 mr600|\
871 mr600v2|\
872 mr900|\
873 mr900v2|\
874 om2p|\
875 om2p-hs|\
876 om2p-hsv2|\
877 om2p-hsv3|\
878 om2p-hsv4|\
879 om2p-lc|\
880 om2pv2|\
881 om2pv4|\
882 om5p|\
883 om5p-ac|\
884 om5p-acv2|\
885 om5p-an)
886 platform_do_upgrade_openmesh "$ARGV"
887 ;;
888 c-60|\
889 hiveap-121|\
890 nbg6716|\
891 r6100|\
892 rambutan|\
893 rb-411|\
894 rb-411u|\
895 rb-433|\
896 rb-433u|\
897 rb-435g|\
898 rb-450|\
899 rb-450g|\
900 rb-493|\
901 rb-493g|\
902 rb-750|\
903 rb-750gl|\
904 rb-751|\
905 rb-751g|\
906 rb-911g-2hpnd|\
907 rb-911g-5hpacd|\
908 rb-911g-5hpnd|\
909 rb-912uag-2hpnd|\
910 rb-912uag-5hpnd|\
911 rb-921gs-5hpacd-r2|\
912 rb-951g-2hnd|\
913 rb-951ui-2hnd|\
914 rb-2011il|\
915 rb-2011ils|\
916 rb-2011l|\
917 rb-2011uas|\
918 rb-2011uas-2hnd|\
919 rb-2011uias|\
920 rb-2011uias-2hnd|\
921 rb-sxt2n|\
922 rb-sxt5n|\
923 wi2a-ac200i|\
924 wndr3700v4|\
925 wndr4300)
926 nand_do_upgrade "$1"
927 ;;
928 mr18|\
929 z1)
930 merakinand_do_upgrade "$1"
931 ;;
932 uap-pro|\
933 unifi-outdoor-plus)
934 MTD_CONFIG_ARGS="-s 0x180000"
935 default_do_upgrade "$ARGV"
936 ;;
937 wp543|\
938 wpe72)
939 platform_do_upgrade_compex "$ARGV"
940 ;;
941 *)
942 default_do_upgrade "$ARGV"
943 ;;
944 esac
945 }