ar71xx: qihoo-c301: reset imageNtrynum after each successful boot.
authorJohn Crispin <john@openwrt.org>
Tue, 14 Oct 2014 12:21:36 +0000 (12:21 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 14 Oct 2014 12:21:36 +0000 (12:21 +0000)
Qihoo C301 has 2 flash chips of which one is used as primary and the
other is used as backup.  OEM U-Boot will try to boot an activeregion N
with imageNstatus=0 and imageNtrynum <= imagemaxtry.  If such a region
is found, bootloader will try to increment imageNtrynum and boot it.

This patch tries to reset imageNtrynum after each successful boot (if
the boot process reaches the execution of /etc/init.d/done).

root@OpenWrt:/# hexdump -C -n 128 /dev/mtdblock9
00000000  9e f3 63 91 61 63 74 69  76 65 72 65 67 69 6f 6e  |..c.activeregion|
00000010  3d 31 00 69 6d 61 67 65  31 73 74 61 74 75 73 3d  |=1.image1status=|
00000020  30 00 69 6d 61 67 65 32  73 74 61 74 75 73 3d 30  |0.image2status=0|
00000030  00 69 6d 61 67 65 32 74  72 79 6e 75 6d 3d 30 00  |.image2trynum=0.|
00000040  69 6d 61 67 65 6d 61 78  74 72 79 3d 33 00 69 6d  |imagemaxtry=3.im|
00000050  61 67 65 31 74 72 79 6e  75 6d 3d 30 00 00 00 00  |age1trynum=0....|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
SVN-Revision: 42914

package/boot/uboot-envtools/files/ar71xx
target/linux/ar71xx/base-files/etc/diag.sh

index 5deed9c1fa597fd5849c18e39a4eae0e855a1abd..f660883cf65fe79b0174fc0d64f7fe8fa14279af 100644 (file)
@@ -41,6 +41,9 @@ om2p-lc)
 wzr-hp-ag300h)
        ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000"
        ;;
 wzr-hp-ag300h)
        ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000"
        ;;
+qihoo-c301)
+       ubootenv_add_uci_config "/dev/mtd9" "0x0" "0x10000" "0x10000"
+       ;;
 esac
 
 config_load ubootenv
 esac
 
 config_load ubootenv
index bbe04b51eebd284243f9fb7404126b09de53f53a..b3a8fc5cab32166ff209b10cbb06b03c6dc5c9c1 100755 (executable)
@@ -297,6 +297,12 @@ set_state() {
                ;;
        done)
                status_led_on
                ;;
        done)
                status_led_on
+               case $(ar71xx_board_name) in
+               qihoo-c301)
+                       local n=$(fw_printenv activeregion | cut -d = -f 2)
+                       fw_setenv "image${n}trynum" 0
+                       ;;
+               esac
                ;;
        esac
 }
                ;;
        esac
 }