bcm63xx: WIP: add Huawei HG253s v2 support
[openwrt/staging/luka.git] / target / linux / bcm63xx / base-files / lib / upgrade / platform.sh
1 PART_NAME=linux
2 REQUIRE_IMAGE_METADATA=0
3
4 platform_check_image() {
5 [ "$#" -gt 1 ] && return 1
6
7 case "$(board_name)" in
8 comtrend,vg-8050|\
9 comtrend,vr-3032u|\
10 huawei,hg253s-v2|\
11 netgear,dgnd3700-v2|\
12 sercomm,ad1018)
13 # NAND sysupgrade
14 return 0
15 ;;
16 esac
17
18 case "$(get_magic_word "$1")" in
19 3600|3700|3800)
20 # CFE tag versions
21 return 0
22 ;;
23 *)
24 echo "Invalid image type. Please use only .bin files"
25 return 1
26 ;;
27 esac
28 }
29
30 cfe_jffs2_upgrade_tar() {
31 local tar_file="$1"
32 local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
33
34 if [ -z "$kernel_mtd" ]; then
35 echo "$CI_KERNPART partition not found"
36 return 1
37 fi
38
39 local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
40 board_dir=${board_dir%/}
41
42 local kernel_length=$(tar xf $tar_file ${board_dir}/kernel -O | wc -c 2> /dev/null)
43 local rootfs_length=$(tar xf $tar_file ${board_dir}/root -O | wc -c 2> /dev/null)
44
45 if [ "$kernel_length" = 0 ]; then
46 echo "kernel cannot be empty"
47 return 1
48 fi
49
50 flash_erase -j /dev/mtd${kernel_mtd} 0 0
51 tar xf $tar_file ${board_dir}/kernel -O | nandwrite /dev/mtd${kernel_mtd} -
52
53 local rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)"
54
55 nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "0" "0"
56
57 local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
58
59 local root_ubivol="$(nand_find_volume $ubidev $CI_ROOTPART)"
60 tar xf $tar_file ${board_dir}/root -O | \
61 ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
62
63 nand_do_upgrade_success
64 }
65
66 platform_do_upgrade() {
67 case "$(board_name)" in
68 comtrend,vg-8050|\
69 comtrend,vr-3032u|\
70 huawei,hg253s-v2|\
71 netgear,dgnd3700-v2|\
72 sercomm,ad1018)
73 REQUIRE_IMAGE_METADATA=1
74 cfe_jffs2_upgrade_tar "$1"
75 ;;
76 *)
77 default_do_upgrade "$1"
78 ;;
79 esac
80 }