mediatek: add support for BananaPi BPI-R4 board
[openwrt/staging/jow.git] / target / linux / mediatek / filogic / base-files / lib / upgrade / platform.sh
index 97c09f35a83029e91b043c3313042a4c96e6bb9c..889a1e2bd1e7498a8e98c23e1982ee0e7ac1535e 100755 (executable)
@@ -1,4 +1,5 @@
 REQUIRE_IMAGE_METADATA=1
+RAMFS_COPY_BIN='fitblk'
 
 asus_initial_setup()
 {
@@ -59,6 +60,21 @@ xiaomi_initial_setup()
        esac
 }
 
+platform_get_bootdev() {
+       local rootdisk="$(cat /sys/firmware/devicetree/base/chosen/rootdisk)"
+       local handle bootdev
+       for handle in /sys/class/block/*/of_node/phandle /sys/class/block/*/device/of_node/phandle; do
+               [ ! -e "$handle" ] && continue
+               if [ "$rootdisk" = "$(cat $handle)" ]; then
+                       bootdev="${handle%/of_node/phandle}"
+                       bootdev="${bootdev%/device}"
+                       bootdev="${bootdev#/sys/class/block/}"
+                       echo "$bootdev"
+                       break
+               fi
+       done
+}
+
 platform_do_upgrade() {
        local board=$(board_name)
 
@@ -99,6 +115,21 @@ platform_do_upgrade() {
                        ;;
                esac
                ;;
+       bananapi,bpi-r4)
+               [ -e /dev/fit0 ] && fitblk /dev/fit0
+               [ -e /dev/fitrw ] && fitblk /dev/fitrw
+               bootdev="$(platform_get_bootdev)"
+               case "$bootdev" in
+               mmcblk*)
+                       EMMC_KERN_DEV="/dev/$bootdev"
+                       emmc_do_upgrade "$1"
+                       ;;
+               ubiblock*)
+                       CI_KERNPART="fit"
+                       nand_do_upgrade "$1"
+                       ;;
+               esac
+               ;;
        cmcc,rax3000m)
                case "$(cmdline_get_var root)" in
                /dev/mmc*)
@@ -175,6 +206,7 @@ platform_check_image() {
 
        case "$board" in
        bananapi,bpi-r3|\
+       bananapi,bpi-r4|\
        cmcc,rax3000m)
                [ "$magic" != "d00dfeed" ] && {
                        echo "Invalid image type."
@@ -201,6 +233,13 @@ platform_copy_config() {
                        ;;
                esac
                ;;
+       bananapi,bpi-r4)
+               case "$(platform_get_bootdev)" in
+               mmcblk*)
+                       emmc_copy_config
+                       ;;
+               esac
+               ;;
        acer,predator-w6|\
        glinet,gl-mt2500|\
        glinet,gl-mt6000|\