天天看點

[RK3399][Android6.0] 系統重新開機支援恢複出廠設定參數

Platform: Rockchip

OS: Android 6.0

Kernel: 3.10.92

reboot的boot flag請看文章  [RK3399][Android6.0] 系統支援的重新開機模式 

注意到boot mode table中有對wipe data的支援(BOOT_WIPEDATA)

enum {
    BOOT_NORMAL = 0, /* normal boot */
    BOOT_LOADER,     /* enter loader rockusb mode */
    BOOT_MASKROM,    /* enter maskrom rockusb mode (not support now) */
    BOOT_RECOVER,    /* enter recover */
    BOOT_NORECOVER,  /* do not enter recover */
    BOOT_SECONDOS,   /* boot second OS (not support now)*/
    BOOT_WIPEDATA,   /* enter recover and wipe data. */
    BOOT_WIPEALL,    /* enter recover and wipe all data. */
    BOOT_CHECKIMG,   /* check firmware img with backup part(in loader mode)*/
    BOOT_FASTBOOT,   /* enter fast boot mode */
    BOOT_SECUREBOOT_DISABLE,
    BOOT_CHARGING,   /* enter charge mode */
    BOOT_MAX         /* MAX VALID BOOT TYPE.*/
};           

rk對這個沒有做全,隻在uboot中(board_fbt_get_reboot_type())判斷有沒有wipe data的boot flag, 而在kernel中沒有去記錄儲存下來.

下面是添加的改動,修改後就可以支援如下指令直接恢複出廠設定了.

reboot wipedata
[email protected]:~/rk3288/kernel$ g df arch/arm/mach-rockchip/common.c
diff --git a/arch/arm/mach-rockchip/common.c b/arch/arm/mach-rockchip/common.c
index 107b58c..01552f3 100755
--- a/arch/arm/mach-rockchip/common.c
+++ b/arch/arm/mach-rockchip/common.c
@@ -264,7 +264,10 @@ void rockchip_restart_get_boot_mode(const char *cmd, u32 *f
                else if (!strcmp(cmd, "charge")) {
                        *flag = SYS_LOADER_REBOOT_FLAG + BOOT_CHARGING;
                        *mode = BOOT_MODE_CHARGE;
-               }
+               } else if (!strcmp(cmd, "wipedata")) {
+                       *flag = SYS_LOADER_REBOOT_FLAG + BOOT_WIPEDATA;
+               }
        } else {
           

這樣比文章 [RK3288][Android6.0] 調試筆記 — 指令行恢複出廠設定 的方式少執行一步了.

繼續閱讀