u32 bsp_nvm_init(void) { u32 ret = NV_ERROR; struct nv_global_ddr_info_stru* ddr_info = (struct nv_global_ddr_info_stru*)NV_GLOBAL_INFO_ADDR; if(ddr_info->mcore_init_state < NV_BOOT_INIT_OK) { ret = BSP_ERR_NV_MEM_INIT_FAIL; goto nv_init_fail; } ret = nv_icc_chan_init(); if(ret) { goto nv_init_fail; } g_nv_ctrl.mid_prio = 20; ddr_info->mcore_init_state = NV_INIT_OK; return NV_OK; nv_init_fail: printf("nv init err:0x%x\n",ret); return ret; }
u32 bsp_nvm_init(void) { u32 ret = NV_ERROR; struct nv_global_ddr_info_stru* ddr_info = (struct nv_global_ddr_info_stru*)NV_GLOBAL_INFO_ADDR; #ifdef BSP_CONFIG_HI3630 nv_printf("waiting for ap modem nv init ok .......\n"); BSP_SYNC_Wait(SYNC_MODULE_NV,0); #endif nv_debug(NV_FUN_NVM_INIT,0,0,0,0); if(ddr_info->ccore_init_state < NV_BOOT_INIT_OK) { nv_printf("[%s]:pre init fail,break here!\n",__FUNCTION__); nv_debug(NV_FUN_NVM_INIT,1,0,0,0); /*lint -save -e801*/ goto nv_init_fail; /*lint -restore*/ } g_nv_ctrl.shared_addr = (u32)NV_GLOBAL_INFO_ADDR; spin_lock_init(&g_nv_ctrl.spinlock); ret = nv_icc_chan_init(); if(ret) { nv_debug(NV_FUN_NVM_INIT,2,ret,0,0); /*lint -save -e801*/ goto nv_init_fail; /*lint -restore*/ } osl_sem_init(1,&g_nv_ctrl.rw_sem); osl_sem_init(0,&g_nv_ctrl.cc_sem); ret = bsp_nvm_read(NV_ID_MSP_FLASH_LESS_MID_THRED,(u8*)&g_nv_ctrl.mid_prio,sizeof(u32)); if(ret) { g_nv_ctrl.mid_prio = 20; nv_printf("read 0x%x error : 0x%x,use default count\n",NV_ID_MSP_FLASH_LESS_MID_THRED,ret); } ret = (u32)bsp_ipc_sem_create(IPC_SEM_NV_CRC); if(ret) { nv_debug(NV_FUN_KERNEL_INIT,3 ,ret ,0,0); /*lint -save -e801*/ goto nv_init_fail; /*lint -restore*/ } ddr_info->ccore_init_state = NV_INIT_OK; nv_printf("nv init ok !\n"); INIT_LIST_HEAD(&g_nv_ctrl.stList); return NV_OK; nv_init_fail: ddr_info->ccore_init_state = NV_INIT_FAIL; nv_printf("\n[%s]\n",__FUNCTION__); nv_help(NV_FUN_NVM_INIT); return ret; }