bool sec_set_param(sec_param_index index, void *value) { int ret = true; int offset = SEC_PARAM_FILE_OFFSET; ret = sec_open_param(); if (!ret) return ret; switch (index) { case param_index_debuglevel: memcpy(&(param_data->debuglevel), value, sizeof(unsigned int)); break; case param_index_uartsel: memcpy(&(param_data->uartsel), value, sizeof(unsigned int)); break; case param_rory_control: memcpy(&(param_data->rory_control), value, sizeof(unsigned int)); break; case param_sales_code: memcpy(&(param_data->sales_code), value, sizeof(unsigned int)); break; default: return false; } return param_sec_operation(param_data, offset, sizeof(sec_param_data), PARAM_WR); }
bool sec_set_param(enum sec_param_index index, void *value) { int ret = true; int offset = SEC_PARAM_FILE_OFFSET; ret = sec_open_param(); if (!ret) return ret; switch (index) { case param_index_debuglevel: memcpy(&(param_data->debuglevel), value, sizeof(unsigned int)); break; case param_index_uartsel: memcpy(&(param_data->uartsel), value, sizeof(unsigned int)); break; case param_rory_control: memcpy(&(param_data->rory_control), value, sizeof(unsigned int)); break; case param_index_movinand_checksum_done: memcpy(&(param_data->movinand_checksum_done), value, sizeof(unsigned int)); break; case param_index_movinand_checksum_pass: memcpy(&(param_data->movinand_checksum_pass), value, sizeof(unsigned int)); break; #if defined(CONFIG_MACH_APEXQ) || defined(CONFIG_MACH_AEGIS2) case param_slideCount: memcpy(&(param_data->slideCount), value, sizeof(unsigned int)); break; #endif #ifdef CONFIG_RTC_AUTO_PWRON_PARAM case param_index_boot_alarm_set: memcpy(&(param_data->boot_alarm_set), value, sizeof(unsigned int)); break; case param_index_boot_alarm_value_l: memcpy(&(param_data->boot_alarm_value_l), value, sizeof(unsigned int)); break; case param_index_boot_alarm_value_h: memcpy(&(param_data->boot_alarm_value_h), value, sizeof(unsigned int)); break; #endif default: return false; } return param_sec_operation(param_data, offset, sizeof(struct sec_param_data), PARAM_WR); }
bool sec_open_param(void) { int ret = true; int offset = SEC_PARAM_FILE_OFFSET; if (param_data != NULL) return true; param_data = kmalloc(sizeof(sec_param_data), GFP_KERNEL); ret = param_sec_operation(param_data, offset, sizeof(sec_param_data), PARAM_RD); if (!ret) { kfree(param_data); param_data = NULL; pr_err("%s PARAM OPEN FAIL\n", __func__); return false; } return ret; }
bool sec_set_param(enum sec_param_index index, void *value) { int ret = true; int offset = SEC_PARAM_FILE_OFFSET; ret = sec_open_param(); if (!ret) return ret; switch (index) { case param_index_debuglevel: memcpy(&(param_data->debuglevel), value, sizeof(unsigned int)); break; case param_index_uartsel: memcpy(&(param_data->uartsel), value, sizeof(unsigned int)); break; case param_rory_control: memcpy(&(param_data->rory_control), value, sizeof(unsigned int)); break; case param_index_movinand_checksum_done: memcpy(&(param_data->movinand_checksum_done), value, sizeof(unsigned int)); break; case param_index_movinand_checksum_pass: memcpy(&(param_data->movinand_checksum_pass), value, sizeof(unsigned int)); break; #ifdef CONFIG_GSM_MODEM_SPRD6500 case param_update_cp_bin: memcpy(&(param_data->update_cp_bin), value, sizeof(unsigned int)); break; #endif #ifdef CONFIG_RTC_AUTO_PWRON_PARAM case param_index_boot_alarm_set: memcpy(&(param_data->boot_alarm_set), value, sizeof(unsigned int)); break; case param_index_boot_alarm_value_l: memcpy(&(param_data->boot_alarm_value_l), value, sizeof(unsigned int)); break; case param_index_boot_alarm_value_h: memcpy(&(param_data->boot_alarm_value_h), value, sizeof(unsigned int)); break; #endif #ifdef CONFIG_SEC_MONITOR_BATTERY_REMOVAL case param_index_normal_poweroff: memcpy(&(param_data->normal_poweroff), value, sizeof(unsigned int)); break; #endif #ifdef CONFIG_RESTART_REASON_SEC_PARAM case param_index_restart_reason: memcpy(&(param_data->param_restart_reason), value, sizeof(unsigned int)); break; #endif default: return false; } return param_sec_operation(param_data, offset, sizeof(struct sec_param_data), PARAM_WR); }