/***************************************************************************** * FUNCTION * nvram_send_L1_cal * DESCRIPTION * * PARAMETERS * void * RETURNS * void *****************************************************************************/ void nvram_send_L1_cal(void) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ /** * file_idx should be the first L1 element in the logical data item ID enum * Currently, L1 calibration data element is as following: * NVRAM_EF_L1_AGCPATHLOSS_LID, NVRAM_EF_L1_RAMPTABLE_GSM900_LID, * NVRAM_EF_L1_RAMPTABLE_DCS1800_LID, NVRAM_EF_L1_RAMPTABLE_PCS1900_LID, * NVRAM_EF_L1_AFCDATA_LID, VRAM_EF_L1_L1SPFC_LID, */ nvram_lid_enum file_idx; ltable_entry_struct *ldi; peer_buff_struct *peer_buf_ptr; kal_uint8 *pdu_ptr; kal_uint16 pdu_length; nvram_read_req_struct *local_data; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ local_data = (nvram_read_req_struct*) construct_local_para(sizeof(nvram_read_req_struct), TD_CTRL); for (file_idx = NVRAM_EF_L1_START; file_idx <= NVRAM_EF_L1_END; file_idx++) { if (!NVRAM_IS_LID_VALID(file_idx)) { continue; } switch(file_idx) { case NVRAM_EF_L1_AGCPATHLOSS_LID: case NVRAM_EF_L1_RAMPTABLE_GSM850_LID: case NVRAM_EF_L1_RAMPTABLE_GSM900_LID: case NVRAM_EF_L1_RAMPTABLE_DCS1800_LID: case NVRAM_EF_L1_RAMPTABLE_PCS1900_LID: #if defined(__EPSK_TX__) case NVRAM_EF_L1_EPSK_RAMPTABLE_GSM850_LID: case NVRAM_EF_L1_EPSK_RAMPTABLE_GSM900_LID: case NVRAM_EF_L1_EPSK_RAMPTABLE_DCS1800_LID: case NVRAM_EF_L1_EPSK_RAMPTABLE_PCS1900_LID: case NVRAM_EF_L1_EPSK_INTERSLOT_RAMP_GSM850_LID: case NVRAM_EF_L1_EPSK_INTERSLOT_RAMP_GSM900_LID: case NVRAM_EF_L1_EPSK_INTERSLOT_RAMP_DCS1800_LID: case NVRAM_EF_L1_EPSK_INTERSLOT_RAMP_PCS1900_LID: #endif /* __EPSK_TX__ */ case NVRAM_EF_L1_AFCDATA_LID: case NVRAM_EF_L1_TXIQ_LID: case NVRAM_EF_L1_RFSPECIALCOEF_LID: case NVRAM_EF_L1_INTERSLOT_RAMP_GSM850_LID: case NVRAM_EF_L1_INTERSLOT_RAMP_GSM900_LID: case NVRAM_EF_L1_INTERSLOT_RAMP_DCS1800_LID: case NVRAM_EF_L1_INTERSLOT_RAMP_PCS1900_LID: case NVRAM_EF_L1_CRYSTAL_AFCDATA_LID: case NVRAM_EF_L1_CRYSTAL_CAPDATA_LID: { nvram_get_data_item(ldi, file_idx); local_data->access_id = 0; local_data->file_idx = file_idx; local_data->para = 1; pdu_length = ldi->size; peer_buf_ptr = construct_peer_buff(pdu_length, 0, 0, TD_CTRL); ASSERT(peer_buf_ptr != NULL); pdu_ptr = get_pdu_ptr(peer_buf_ptr, &pdu_length); ASSERT(pdu_ptr != NULL); nvram_read_confirm (MOD_L1, nvram_read_data_item(ldi, 1, 1, pdu_ptr, pdu_length), local_data, ldi->size, peer_buf_ptr); break; } } } free_local_para((local_para_struct*) local_data); } /* end of nvram_send_L1_cal function */
/***************************************************************************** * 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 */