diff --git a/loader/Include/loader.h b/loader/Include/loader.h index 0e5788c29..da17c476d 100755 --- a/loader/Include/loader.h +++ b/loader/Include/loader.h @@ -91,6 +91,7 @@ extern void loader_setRecoveryPartitionID(UINT32 partition_id); extern void loader_setVersion(UINT32 version); extern void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj); extern void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); +extern void loader_installsfSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); extern void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback); extern void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback); extern void loader_installFastbootKeyCB(LDR_FASTBOOT_KEY_CB callback); diff --git a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 70461ad8b..dc1caff95 100755 --- a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -108,6 +108,7 @@ static LDR_FASTBOOT_KEY_CB gFastbootKeyCallBack = NULL; static LDR_SPECIAL_KEY_CB gSpecialKeyCallBack = NULL; static LDR_CARD_DETECT_CB gCardDetectCallBack = NULL; static STORAGEINT gStorageIntType = STORAGEINT_UNOKNOWN; +static LDR_SPECIAL_KEY_CB gsfSpecialKeyCallBack = NULL; static LDR_RECOVERY_TRIGGER_CB gRecoveryTriggerCallBack = NULL; //#if (!USB_WRITELOADER) @@ -675,7 +676,7 @@ static void bl_cpu_timer_init(UINT32 value) #endif _THUMB2 int bl_flash_open(void) { - int er; + int er = -1; //UINT32 uiStorageVersion = (UINT32)&_load_nand_table_start_base; if (g_is_flash_open) { @@ -770,10 +771,15 @@ _THUMB2 static const void *bl_get_fdt_nvt_memory_cfg_property(const void *p_dtb, } nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_nvt_memory_cfg, &p_path[16]); + //debug_msg_var("nodeoffset_nvt_memory_cfg", nodeoffset_nvt_memory_cfg); + //debug_msg_var("nodeoffset", nodeoffset); + if (nodeoffset < 0) { return NULL; } nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + //debug_msg_var("len", *len); + if (len == 0) { return NULL; } @@ -2014,7 +2020,7 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char // //============Sifar==============///Payton // // } UIMenuStoreInfo; - +#if 1 _THUMB2 static void *bl_get_sys_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) { #if (FDT_SUPPORT) @@ -2099,7 +2105,7 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char return (*ota_flag); } - +#endif /***********************************************************************************/ _THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) @@ -3206,7 +3212,11 @@ _THUMB2 UINT32 bl_mainFlow(void) #endif } - UINT32 ota_flag = bl_check_ota_flag(); + UINT32 ota_flag = 0; + if(gsfSpecialKeyCallBack(0)) + { + ota_flag = bl_check_ota_flag(); + } #if !(USB_WRITELOADER || UART_UPDATE) if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) { @@ -3620,7 +3630,10 @@ _THUMB2 void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) { gSpecialKeyCallBack = callback; } - +_THUMB2 void loader_installsfSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) +{ + gsfSpecialKeyCallBack = callback; +} _THUMB2 void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback) { gCardDetectCallBack = callback; diff --git a/loader/Project/Model/Src/prj_main.c b/loader/Project/Model/Src/prj_main.c index 9873222fb..167593713 100755 --- a/loader/Project/Model/Src/prj_main.c +++ b/loader/Project/Model/Src/prj_main.c @@ -163,6 +163,23 @@ static BOOL prj_isSpecialKeyPressed(UINT32 ota_flag) } //return TRUE; } +static BOOL prj_issfSpecialKeyPressed(UINT32 ota_flag) +{ + + #if (MODEL == MODEL_S530) + if ((!gpio_getPin(GPIO_SPECIAL_KEY)) && (gpio_getPin(GPIO_SPECIAL_USB))) + #elif (MODEL == MODEL_S550) + if ((gpio_getPin(GPIO_SPECIAL_KEY)) && (gpio_getPin(GPIO_SPECIAL_USB))) + #endif + { + return TRUE; + } + else + { + return FALSE; + } + //return TRUE; +} #endif #if (FASTBOOT_KEY == ENABLE) @@ -254,6 +271,7 @@ _THUMB2 void prj_main(void) #if (SPECIAL_KEY_UPDATE == ENABLE) loader_installSpecialKeyCB(prj_isSpecialKeyPressed); + loader_installsfSpecialKeyCB(prj_issfSpecialKeyPressed); #endif #if (CHECK_CARD_EXIST == ENABLE)