/* -------------------------------------------------------------------- * USB Download for End User: get the secure RO * --------------------------------------------------------------------*/ kal_bool custom_get_secureRO(void) { #ifdef __SV5_ENABLED__ if ( CUSTOM_SEC_RO.m_sec_ro_ver != 0 ) { return KAL_TRUE; } if(bl_Get_Secure_RO((kal_uint32)g_custom_SEC_RO_buf, sizeof(g_custom_SEC_RO_buf), 0, 0) == KAL_TRUE) { kal_uint32 *pSecureRoAddr = (kal_uint32*) bl_Allocate_BL_DA_SharedData(BL_DA_SHARED_DATA_ID_SECURE_RO_ADDR, 8); *pSecureRoAddr = (kal_uint32)g_custom_SEC_RO_buf; pSecureRoAddr++; *pSecureRoAddr = sizeof(SEC_RO_ST); return KAL_TRUE; } #else kal_int32 i; kal_uint32 secInfoSearchAddr[2]; if ( CUSTOM_SEC_RO.m_sec_ro_ver != 0 ) { return KAL_TRUE; } secInfoSearchAddr[0] = custom_ROM_baseaddr() & REMAPPING_MASK; //SecInfo secInfoSearchAddr[1] = 0x100000; //SecInfo Tail for ( i=0; i<sizeof(secInfoSearchAddr)/sizeof(*secInfoSearchAddr); i++ ) { bl_Get_Secure_RO((kal_uint32)&g_custom_SEC_RO_buf, sizeof(g_custom_SEC_RO_buf), secInfoSearchAddr[i], custom_get_NORFLASH_Size()); if (NVRAM_SECRET_KEY_SIZE == CUSTOM_SEC_RO.m_custom_secret_key_len ) { if (memcmp(CUSTOM_SEC_RO.m_custom_magic_tail, SEC_RO_MAGIC_TAIL_VALUE, strlen(SEC_RO_MAGIC_TAIL_VALUE)) == 0) { return KAL_TRUE; } } } #endif //Not found any SecInfo CUSTOM_SEC_RO.m_sec_ro_ver = 0; return KAL_FALSE; }
kal_uint32 bl_Alg_Copy_Func_Tbl(kal_uint32 dest_addr) { #if defined(__SECURE_USB_DOWNLOAD__) || defined(__SECURE_UART_DOWNLOAD__) #if defined(_NAND_FLASH_BOOTING_) || defined(__EMMC_BOOTING__) kal_uint32 i; kal_uint32 *pSrc = (kal_uint32*)(&g_BlFunc_Table); kal_uint32 *pDst = (kal_uint32*)dest_addr; for ( i=0; i<(sizeof(g_BlFunc_Table)+3)/4; i++ ) { *pDst = *pSrc; pSrc++; pDst++; } #else dest_addr = (kal_uint32)&g_BlFunc_Table; #endif /* _NAND_FLASH_BOOTING_ || __EMMC_BOOTING__ */ #if defined(__SV5_ENABLED__) //Prepare data for DA usage { kal_uint32 *pFuncTblAddr = (kal_uint32*) bl_Allocate_BL_DA_SharedData(BL_DA_SHARED_DATA_ID_FUNC_TBL_ADDR, 4); //Pass the address of func tbl string to DA *pFuncTblAddr = dest_addr + sizeof(g_BlFunc_Table) - sizeof(g_BlFunc_Table.m_func_table_id); } #endif #endif /* __SECURE_USB_DOWNLOAD__ */ return 0; }