int32 get_cust_conf_int32(int32 modu, int8 * puc_var, int32* puc_value) { int32 ret = 0; #ifdef INI_KO_MODULE struct device_node * np; #endif switch (modu) { #ifdef INI_KO_MODULE case CUST_MODU_DTS: { np = of_find_compatible_node(NULL, NULL, CUST_COMP_NODE); if (NULL == np) { INI_ERROR("no compatible node found"); return INI_FAILED; } ret = of_property_read_u32(np, puc_var, puc_value); if (ret < 0) { /* driver has log, delete this log */ INI_DEBUG("conf %s is not exist, ret = %d", puc_var, ret); return INI_FAILED; } INI_DEBUG("conf %s get vale:%d", puc_var, *puc_value); return INI_SUCC; } #endif default: { int8 out_str[INI_READ_VALUE_LEN] = {0}; ret = ini_find_var_value(modu, puc_var, out_str, sizeof(out_str)); if (ret < 0) { /* ini_find_var_value has error log, delete this log */ INI_DEBUG("cust modu didn't get var of %s.", puc_var); return INI_FAILED; } if ( !strncmp(out_str, "0x", strlen("0x")) || !strncmp(out_str, "0X", strlen("0X"))) { INI_DEBUG("get hex of:%s.", puc_var); ret = sscanf(out_str, "%x", puc_value); } else { ret = sscanf(out_str, "%d", puc_value); } if(ret < 0) { INI_ERROR("%s trans to int failed", puc_var); return INI_FAILED; } INI_DEBUG("conf %s get vale:%d", puc_var, *puc_value); return INI_SUCC; } } return INI_SUCC; }
int32 get_cust_conf_string(int32 modu, int8 * puc_var, int8* puc_value, uint32 size) { int32 ret = 0; #ifdef INI_KO_MODULE struct device_node *np; int32 len; int8 out_str[HISI_CUST_NVRAM_LEN] = {0}; #endif switch (modu) { #ifdef INI_KO_MODULE case CUST_MODU_DTS: { np = of_find_compatible_node(NULL, NULL, CUST_COMP_NODE); if (NULL == np) { INI_ERROR("no compatible node found"); return INI_FAILED; } //ret = of_property_read_string(np, puc_var, (const char **)&out_str); len = of_property_count_u8_elems(np, puc_var); if (len < 0) { INI_ERROR("can't get len of value(%s)", puc_var); return INI_FAILED; } len = INI_MIN(len, NUM_OF_NV_PARAMS); INI_DEBUG("get len of value(%s), read len is %d", puc_var, len); ret = of_property_read_u8_array(np, puc_var, out_str, len); if (0 > ret) { INI_ERROR("conf str:%s property is not found", puc_var); return INI_FAILED; } //strncpy(puc_value, out_str, INI_FILE_PATH_LEN); memcpy(puc_value, out_str, len); INI_DEBUG("conf string:%s get value:%s", puc_var, puc_value); return INI_SUCC; } #endif case CUST_MODU_NVRAM: #ifdef HISI_NVRAM_SUPPORT ret = read_conf_from_nvram(puc_var, puc_value, size); #else ret = read_conf_from_file(puc_var, puc_value, size); #endif if (ret < 0) { INI_ERROR("read nv_conf failed, ret(%d)", ret); return INI_FAILED; } return INI_SUCC; default: { return ini_find_var_value(modu, puc_var, puc_value, size); } } return INI_SUCC; }
int ini_cfg_init(void) { // int8 auc_value[20]; int32 ret; int8 auc_dts_ini_path[INI_FILE_PATH_LEN] = {0}; int8 auc_cust_spec_ini_path[INI_FILE_PATH_LEN] = {0}; int8 auc_cust_comm_ini_path[INI_FILE_PATH_LEN] = {0}; #ifdef CONFIG_HWCONNECTIVITY if (!isMyConnectivityChip(CHIP_TYPE_HI110X)) { INI_ERROR("cfg ini chip type is not match, skip driver init"); return -EINVAL; } else { INI_INFO("cfg init type is matched with hi110x, continue"); } #endif INI_DEBUG("hi110x ini config search init!\n"); ret = get_cust_conf_string(CUST_MODU_DTS, PROC_NAME_INI_FILE_NAME, auc_dts_ini_path, sizeof(auc_dts_ini_path)); if ( 0 > ret ) { INI_ERROR("can't find dts proc %s\n", PROC_NAME_INI_FILE_NAME); return INI_FAILED; } snprintf(auc_cust_spec_ini_path, sizeof(auc_cust_spec_ini_path), "%s%s", CUST_PATH_SPEC, auc_dts_ini_path); snprintf(auc_cust_comm_ini_path, sizeof(auc_cust_comm_ini_path), "%s%s", CUST_PATH_COMM, auc_dts_ini_path); /*如果ini文件在cust中,则使用cust中的ini文件,否则使用dts中配置的ini文件*/ /*recovery 模式下,此时ini文件可能不能访问,这种情况下,使用dts里配置的值为默认值*/ if (ini_file_exist(auc_cust_spec_ini_path)) { snprintf(g_ini_file_name, sizeof(g_ini_file_name), "%s", auc_cust_spec_ini_path); INI_INFO("%s@%s\n", PROC_NAME_INI_FILE_NAME, g_ini_file_name); } else if (ini_file_exist(auc_cust_comm_ini_path)) { snprintf(g_ini_file_name, sizeof(g_ini_file_name), "%s", auc_cust_comm_ini_path); INI_INFO("%s@%s\n", PROC_NAME_INI_FILE_NAME, g_ini_file_name); } else { snprintf(g_ini_file_name, sizeof(g_ini_file_name), "%s", auc_dts_ini_path); INI_INFO("%s@%s\n", PROC_NAME_INI_FILE_NAME, g_ini_file_name); } INI_INIT_MUTEX(&file_mutex); #ifdef INI_TEST #if 1 ini_find_var_value(INI_MODU_WIFI, "wifi_ini_mode", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_ini_mode", auc_value); ini_find_var_value(INI_MODU_BT, "bt_ini_mode", auc_value); ini_find_var_value(INI_MODU_FM, "fm_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI, "loglevel", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_down", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_up", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_gpsglonass", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_bdgps", auc_value); ini_find_var_value(INI_MODU_BT, "bt_normal", auc_value); ini_find_var_value(INI_MODU_FM, "fm_normal", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_normal", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_normal", auc_value); #endif #endif return INI_SUCC; }
int32 main(int32 argc, int8** argv) { int8 auc_value[50]; INI_DEBUG("k3v2 .ini config search init!\n"); #if 1 ini_write_var_value(INI_MODU_WIFI, "wifi_ini_mode", "2"); ini_write_var_value(INI_MODU_WIFI, "wifi_ini_mode", "1"); ini_write_var_value(INI_MODU_WIFI, "wifi_ini_mode", "0"); ini_write_var_value(INI_MODU_GNSS, "gnss_ini_mode", "1"); #endif #if 1 ini_write_var_value(INI_MODU_BT, "bt_ini_mode", "0"); ini_write_var_value(INI_MODU_FM, "fm_ini_mode", "0"); ini_write_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_ini_mode", "0"); ini_write_var_value(INI_MODU_BFG_PLAT, "bfg_plat_ini_mode", "0"); ini_find_var_value(INI_MODU_WIFI, "wifi_ini_mode", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_ini_mode", auc_value); ini_find_var_value(INI_MODU_BT, "bt_ini_mode", auc_value); ini_find_var_value(INI_MODU_FM, "fm_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI, "loglevel", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_down", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_up", auc_value); ini_find_var_value(INI_MODU_WIFI, "hcc_rx_lo_queue", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_gpsglonass", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_bdgps", auc_value); ini_find_var_value(INI_MODU_BT, "bt_normal", auc_value); ini_find_var_value(INI_MODU_FM, "fm_normal", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_normal", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_normal", auc_value); #endif ini_find_var_value(INI_MODU_PLAT, "g_param_version.param_version", auc_value); INI_DEBUG("k3v2 .ini config over!\n"); return 0; }
static int __init ini_cfg_init(void) { int8 auc_value[20]; #ifdef CONFIG_HWCONNECTIVITY if (!isMyConnectivityChip(CHIP_TYPE_HI110X)) { INI_ERROR("cfg ini chip type is not match, skip driver init"); return -EINVAL; } else { INI_INFO("cfg init type is matched with hi110x, continue"); } #endif INI_DEBUG("k3v2 .ini config search init!\n"); /*init mutex*/ INI_INIT_MUTEX(&file_mutex); #ifdef INI_TEST #if 1 ini_find_var_value(INI_MODU_WIFI, "wifi_ini_mode", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_ini_mode", auc_value); ini_find_var_value(INI_MODU_BT, "bt_ini_mode", auc_value); ini_find_var_value(INI_MODU_FM, "fm_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI, "loglevel", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_down", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_up", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_gpsglonass", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_bdgps", auc_value); ini_find_var_value(INI_MODU_BT, "bt_normal", auc_value); ini_find_var_value(INI_MODU_FM, "fm_normal", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_normal", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_normal", auc_value); #endif #endif return INI_SUCC; }