ipq806x: add support for indicating the boot and upgrade state using four leds
[lede-git/.git] / target / linux / ipq806x / base-files / lib / upgrade / platform.sh
1 . /lib/ipq806x.sh
2
3 PART_NAME=firmware
4
5 platform_check_image() {
6         local board=$(ipq806x_board_name)
7
8         case "$board" in
9         ap148 |\
10         d7800 |\
11         ea8500 |\
12         r7500 |\
13         r7500v2 |\
14         r7800)
15                 nand_do_platform_check $board $1
16                 return $?;
17                 ;;
18         c2600)
19                 local magic_long="$(get_magic_long "$1")"
20                 [ "$magic_long" != "27051956" ] && {
21                         echo "Invalid image, bad magic: $magic_long"
22                         return 1
23                 }
24                 return 0;
25                 ;;
26         *)
27                 return 1;
28         esac
29 }
30
31 platform_pre_upgrade() {
32         local board=$(ipq806x_board_name)
33
34         case "$board" in
35         ap148 |\
36         d7800 |\
37         r7500 |\
38         r7500v2 |\
39         r7800)
40                 nand_do_upgrade "$1"
41                 ;;
42         ea8500)
43                 linksys_preupgrade "$1"
44                 ;;
45         esac
46 }
47
48 platform_do_upgrade() {
49         local board=$(ipq806x_board_name)
50
51         case "$board" in
52         c2600)
53                 PART_NAME="os-image:rootfs"
54                 MTD_CONFIG_ARGS="-s 0x200000"
55                 default_do_upgrade "$ARGV"
56                 ;;
57         ea8500)
58                 platform_do_upgrade_linksys "$ARGV"
59                 ;;
60         esac
61 }
62
63 blink_led() {
64         . /etc/diag.sh; set_state upgrade
65 }
66
67 append sysupgrade_pre_upgrade blink_led