/***************************************************************************** * FUNCTION * nvram_startup_confirm * DESCRIPTION * This is nvram_startup_confirm() function of NVRAM module. * PARAMETERS * dest_id [IN] * result [IN] * nvram_startup_req [?] * ilm_ptr(?) [IN] The primitives * RETURNS * void *****************************************************************************/ static void nvram_startup_confirm( module_type dest_id, nvram_errno_enum result, nvram_startup_req_struct *nvram_startup_req) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ nvram_startup_cnf_struct *nvram_startup_cnf; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ nvram_trace(TRACE_FUNC, FUNC_NVRAM_STARTUP_CNF, result); nvram_startup_cnf = (nvram_startup_cnf_struct*) construct_local_para(sizeof(nvram_startup_cnf_struct), TD_CTRL); /* Cylen, __FLIGHT_MODE_SUPPORT__ */ if (result == NVRAM_ERRNO_SUCCESS) { /* read flight mode status */ nvram_ltable_entry_struct *ldi; nvram_util_get_data_item(&ldi, NVRAM_EF_SYS_CACHE_OCTET_LID); result = nvram_read_data_item(ldi, NVRAM_SYS_FLIGHTMODE_STATE, 1, nvram_startup_cnf->data, NVRAM_EF_SYS_CACHE_OCTET_SIZE); } nvram_startup_cnf->result = result; nvram_startup_cnf->access_id = nvram_startup_req->access_id; nvram_send_ilm(dest_id, MSG_ID_NVRAM_STARTUP_CNF, nvram_startup_cnf, NULL); return; }
/***************************************************************************** * FUNCTION * nvram_startup_handler * DESCRIPTION * This is nvram_startup_handler() function of NVRAM module. * PARAMETERS * ilm_ptr [IN] The primitives * RETURNS * void *****************************************************************************/ void nvram_startup_handler(ilm_struct *ilm_ptr) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ nvram_startup_req_struct *nvram_startup_req; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ nvram_trace(TRACE_FUNC, FUNC_NVRAM_STARTUP); nvram_startup_req = (nvram_startup_req_struct*) ilm_ptr->local_para_ptr; ASSERT(nvram_startup_req != NULL); /* Everything fine. */ if (nvram_ptr->state == NVRAM_STATE_READY || nvram_ptr->state == NVRAM_STATE_NOT_READY) { nvram_trace(TRACE_STATE, STATE_NVRAM_READY); nvram_ptr->state = NVRAM_STATE_READY; /* Check power-on mode */ if (nvram_startup_req->poweron_mode == NVRAM_POWERON_NORMAL) { /* nvram_send_ilm(MOD_LAYER1); */ } /* Finally, startup success.. */ nvram_startup_confirm(ilm_ptr->src_mod_id, NVRAM_ERRNO_SUCCESS, nvram_startup_req); } /* Fatal error. */ /* State error */ else { nvram_trace(TRACE_ERROR, ERROR_NVRAM_STATE); nvram_startup_confirm(ilm_ptr->src_mod_id, NVRAM_ERRNO_FAIL, nvram_startup_req); } } /* end of nvram_startup_handler */
/***************************************************************************** * FUNCTION * nvram_reset_confirm * DESCRIPTION * This is nvram_reset_confirm() function of NVRAM module. * PARAMETERS * dest_id [IN] * result [IN] * nvram_reset_req [?] * ilm_ptr(?) [IN] The primitives * RETURNS * void *****************************************************************************/ static void nvram_reset_confirm(module_type dest_id, nvram_errno_enum result, nvram_reset_req_struct *nvram_reset_req) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ nvram_reset_cnf_struct *nvram_reset_cnf; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ nvram_trace(TRACE_FUNC, FUNC_NVRAM_RESET_CNF, result); nvram_reset_cnf = (nvram_reset_cnf_struct*) construct_local_para(sizeof(nvram_reset_cnf_struct), TD_CTRL); nvram_reset_cnf->result = result; nvram_reset_cnf->access_id = nvram_reset_req->access_id; nvram_send_ilm(dest_id, MSG_ID_NVRAM_RESET_CNF, nvram_reset_cnf, NULL); return; } /* end of nvram_reset_confirm */
/***************************************************************************** * FUNCTION * nvram_reset_handler * DESCRIPTION * This is nvram_reset_handler() function of NVRAM module. * PARAMETERS * ilm_ptr [IN] The primitives * RETURNS * void *****************************************************************************/ void nvram_reset_handler(ilm_struct *ilm_ptr) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ nvram_ltable_entry_struct *ldi; nvram_reset_req_struct *nvram_reset_req = (nvram_reset_req_struct*) ilm_ptr->local_para_ptr; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ nvram_trace(TRACE_FUNC, FUNC_NVRAM_RESET); ASSERT(nvram_reset_req != NULL); if (nvram_ptr->dev_broken) { nvram_reset_confirm(ilm_ptr->src_mod_id, NVRAM_ERRNO_SUCCESS, nvram_reset_req); } else { if (nvram_ptr->state == NVRAM_STATE_READY) { if (!(nvram_reset_req->reset_category & NVRAM_RESET_CERTAIN)) { nvram_reset_req->LID = 0; } nvram_util_get_data_item(&ldi, nvram_reset_req->LID); if (nvram_reset_req->reset_category == NVRAM_RESET_CERTAIN) { if (!NVRAM_IS_LID_VALID(nvram_reset_req->LID)) { nvram_reset_confirm(ilm_ptr->src_mod_id, NVRAM_IO_ERRNO_INVALID_LID, nvram_reset_req); return; } /* In Meta mode, we cannot access the data belongs to custom sensitve area we also cannot reset the important data to prevent security problem */ if (NVRAM_IS_CATEGORY_IMPORTANT(ldi->category) || NVRAM_IS_CATEGORY_IMPORTANT_L4(ldi->category) #if defined(__NVRAM_CUSTOM_SENSITIVE__) || defined(__NVRAM_CUSTOM_DISK__) || NVRAM_IS_CATEGORY_CUSTOM_SENSITIVE(ldi->category) || NVRAM_IS_CATEGORY_CUSTOM_DISK(ldi->category) #endif ) { if (FACTORY_BOOT == kal_query_boot_mode() && ilm_ptr->src_mod_id == MOD_FT) { nvram_reset_confirm(ilm_ptr->src_mod_id, NVRAM_IO_ERRNO_ACCESS_DENIED, nvram_reset_req); return; } } } if (nvram_reset_data_items(nvram_reset_req->reset_category, nvram_reset_req->app_id, ldi, nvram_reset_req->rec_index, nvram_reset_req->rec_amount) == KAL_TRUE) { nvram_reset_confirm(ilm_ptr->src_mod_id, NVRAM_ERRNO_SUCCESS, nvram_reset_req); } else { nvram_reset_confirm(ilm_ptr->src_mod_id, NVRAM_ERRNO_FAIL, nvram_reset_req); } } /* State error */ else { nvram_trace(TRACE_FUNC, ERROR_NVRAM_STATE); nvram_reset_confirm(ilm_ptr->src_mod_id, NVRAM_ERRNO_FAIL, nvram_reset_req); } } } /* end of nvram_reset_handler */