static int read_tp_color_from_nv(char *color_info) { int ret=0; struct hisi_nve_info_user user_info; memset(&user_info, 0, sizeof(user_info)); user_info.nv_operation = 1; user_info.nv_number = 16; user_info.valid_size = 15; strncpy(user_info.nv_name, "TPCOLOR", sizeof(user_info.nv_name)); user_info.nv_name[sizeof(user_info.nv_name)-1]='\0'; ret = hisi_nve_direct_access(&user_info); if (ret) { hwlog_err("hisi_nve_direct_access read error(%d)\n", ret); return -1; } if((!strncmp(user_info.nv_data, "white", strlen("white"))) ||(!strncmp(user_info.nv_data, "black", strlen("black"))) ||(!strncmp(user_info.nv_data, "pink", strlen("pink"))) ||(!strncmp(user_info.nv_data, "red", strlen("red"))) ||(!strncmp(user_info.nv_data, "yellow", strlen("yellow"))) ||(!strncmp(user_info.nv_data, "blue", strlen("blue"))) ||(!strncmp(user_info.nv_data, "gold", strlen("gold")))) { strncpy(color_info, user_info.nv_data, strlen(user_info.nv_data)); color_info[strlen(user_info.nv_data)]='\0'; return 0; } else { hwlog_err("[%s]:read_tp_color_from_nv read unormal value!!\n", __func__); return -1; } }
static int mntn_read_nogui_flag(void) { int ret = 0; struct hisi_nve_info_user user_info; int nogui_flag = 0; user_info.nv_operation = 1; user_info.nv_number = 206; user_info.valid_size = 1; strncpy(user_info.nv_name, "NOGUI", sizeof("NOGUI")); ret = hisi_nve_direct_access(&user_info); if (ret) { MNTN_FILESYS_PRINT(KERN_ERR"mntn_err: nve_direct_access read error(%d)", ret); return -1; } nogui_flag = user_info.nv_data[0]; if (nogui_flag == 1) { return 1; } else { return 0; } }
int32 write_conf_to_nvram(int8 * name, int8 * pc_arr) { #ifdef INI_KO_MODULE struct hisi_nve_info_user info; #endif int32 ret = -1; #ifndef INI_KO_MODULE ret = hweiOperaNVWR(HISI_CUST_NVRAM_WRITE, HISI_CUST_NVRAM_NUM, HISI_CUST_NVRAM_NAME, HISI_CUST_NVRAM_LEN, pc_arr); if (ret < -1) { INI_ERROR("write nvm failed"); return INI_FAILED; } #else memset(&info, 0, sizeof(info)); strncpy(info.nv_name, HISI_CUST_NVRAM_NAME, strlen(HISI_CUST_NVRAM_NAME) - 1); info.nv_name[strlen(HISI_CUST_NVRAM_NAME) - 1] = '\0'; info.nv_number = HISI_CUST_NVRAM_NUM; info.valid_size = HISI_CUST_NVRAM_LEN; info.nv_operation = HISI_CUST_NVRAM_WRITE; memcpy(info.nv_data, pc_arr, HISI_CUST_NVRAM_LEN); ret = hisi_nve_direct_access( &info ); if (ret < -1) { INI_ERROR("write nvm failed"); return INI_FAILED; } #endif return INI_SUCC; }
/***************************************************************************** 函 数 名 : DRV_NVE_ACCESS 功能描述 : 访问NVE 输入参数 : NVE 输出参数 : 无 返 回 值 : BSP_OK / BSP_ERROR 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2013年6月27日 作 者 : 袁勤顺 00167654 修改内容 : 新生成函数 *****************************************************************************/ BSP_S32 DRV_NVE_ACCESS(NVE_INFO_S *nve) { #ifdef CONFIG_K3V2_NVE int ret; struct nve_info_user info; if (!nve) { printk(KERN_ERR "BSP_NVE_DirectAccess input is null!"); return BSP_ERROR; } info.nv_operation = nve->nv_operation; info.nv_number = nve->nv_number; info.valid_size = nve->valid_size; memcpy(info.nv_name,nve->nv_name,BSP_NVE_NAME_LENGTH); /*write operation*/ if (!nve->nv_operation) memcpy(info.nv_data,nve->nv_data,nve->valid_size); ret = hisi_nve_direct_access((struct hisi_nve_info_user *)&info); if (!ret) { /*read operation*/ if (nve->nv_operation) memcpy(nve->nv_data,info.nv_data,nve->valid_size); return BSP_OK; } else return BSP_ERROR; #else return BSP_ERROR; #endif }
int32 hwifi_get_mac_addr(uint8 *puc_buf) { struct hisi_nve_info_user st_info; int32 l_ret = -1; int32 l_sum = 0; if (NULL == puc_buf) { OAM_ERROR_LOG0(0, OAM_SF_ANY, "hisi_customize_wifi::buf is NULL!"); return INI_FAILED; } oal_memset(puc_buf, 0, MAC_LEN); oal_memset(&st_info, 0, sizeof(st_info)); st_info.nv_number = NV_WLAN_NUM; //nve item strncpy(st_info.nv_name, "MACWLAN", sizeof("MACWLAN")); st_info.valid_size = NV_WLAN_VALID_SIZE; st_info.nv_operation = NV_READ; if (0 != g_auc_wifimac[0] || 0 != g_auc_wifimac[1] || 0 != g_auc_wifimac[2] || 0 != g_auc_wifimac[3] || 0 != g_auc_wifimac[4] || 0 != g_auc_wifimac[5]) { memcpy(puc_buf, g_auc_wifimac, MAC_LEN); return INI_SUCC; } l_ret = hisi_nve_direct_access(&st_info); if (!l_ret) { l_sum = char2byte(st_info.nv_data, puc_buf); if (0 != l_sum) { INI_WARNING("hisi_customize_wifi get MAC from NV: mac="MACFMT"\n", MAC2STR(puc_buf)); oal_memcopy(g_auc_wifimac, puc_buf, MAC_LEN); }else{ random_ether_addr(puc_buf); puc_buf[1] = 0x11; puc_buf[2] = 0x02; } }else{ random_ether_addr(puc_buf); puc_buf[1] = 0x11; puc_buf[2] = 0x02; } return INI_SUCC; }
int32 read_conf_from_nvram(int8 * name, int8 * pc_out, uint32 size) { #ifdef INI_KO_MODULE struct hisi_nve_info_user info; uint32 len = 0; #endif #ifndef INI_KO_MODULE int8 buff[HISI_CUST_NVRAM_LEN] = {0}; #endif int32 ret = -1; #ifndef INI_KO_MODULE ret = hweiOperaNVWR(HISI_CUST_NVRAM_READ, HISI_CUST_NVRAM_NUM, HISI_CUST_NVRAM_NAME, HISI_CUST_NVRAM_LEN, buff); if (ret < -1) { INI_ERROR("read nvm failed"); return INI_FAILED; } #else memset(&info, 0, sizeof(info)); strncpy(info.nv_name, HISI_CUST_NVRAM_NAME, strlen(HISI_CUST_NVRAM_NAME) - 1); info.nv_name[strlen(HISI_CUST_NVRAM_NAME) - 1] = '\0'; info.nv_number = HISI_CUST_NVRAM_NUM; info.valid_size = HISI_CUST_NVRAM_LEN; info.nv_operation = HISI_CUST_NVRAM_READ; ret = hisi_nve_direct_access( &info ); if (ret < -1) { INI_ERROR("read nvm failed"); return INI_FAILED; } else { len = INI_MIN(size, NUM_OF_NV_PARAMS); memcpy(pc_out, info.nv_data, len); } #endif return INI_SUCC; }
static int write_tp_color_to_nv(void) { int ret=0; u8 lcd_id=0; u8 phone_color=0; struct hisi_nve_info_user user_info; memset(&user_info, 0, sizeof(user_info)); lcd_id = read_tp_color(); if (lcd_id != 0xff) { hwlog_info("lcd id is %u from read tp color\n", lcd_id); } if(is_color_correct(cypress_tp_color[0])) phone_color=cypress_tp_color[0]; else if(is_color_correct(lcd_id)) phone_color=lcd_id; else { hwlog_err("LCD/TP ID both error!\n"); return -1; } switch(phone_color) { case WHITE: strncpy(user_info.nv_data, "white", sizeof(user_info.nv_data)); break; case BLACK: strncpy(user_info.nv_data, "black", sizeof(user_info.nv_data)); break; case PINK: strncpy(user_info.nv_data,"pink", sizeof(user_info.nv_data)); break; case RED: strncpy(user_info.nv_data,"red", sizeof(user_info.nv_data)); break; case YELLOW: strncpy(user_info.nv_data,"yellow", sizeof(user_info.nv_data)); break; case BLUE: strncpy(user_info.nv_data,"blue", sizeof(user_info.nv_data)); break; case GOLD: strncpy(user_info.nv_data,"gold", sizeof(user_info.nv_data)); break; default: strncpy(user_info.nv_data,"", sizeof(user_info.nv_data)); break; } user_info.nv_operation = 0; user_info.nv_number = 16; user_info.valid_size = 15; strncpy(user_info.nv_name, "TPCOLOR", sizeof(user_info.nv_name)); user_info.nv_name[sizeof(user_info.nv_name)-1]='\0'; ret = hisi_nve_direct_access(&user_info); if (ret) { hwlog_err("hisi_nve_direct_access write error(%d)\n", ret); return -1; } hwlog_info("[%s]:(%s)\n", __func__, user_info.nv_data); return ret; }