int __init pm_params_init(void) { __pm_init_errata_flg(); pwrmgr_init_param.cmd_buf = i2c_cmd_buf; pwrmgr_init_param.cmd_buf_size = cmd_buf_sz; #ifdef CONFIG_PWRMGR_1P2GHZ_OPS_SET_SELECT pwrmgr_init_param.def_vlt_tbl = (u8 *) get_sr_vlt_table(SILICON_TYPE_SLOW, A9_FREQ_1200_MHZ); #else pwrmgr_init_param.def_vlt_tbl = (u8 *) get_sr_vlt_table(SILICON_TYPE_SLOW, A9_FREQ_1000_MHZ); #endif pwrmgr_init_param.vlt_tbl_size = SR_VLT_LUT_SIZE; return 0; }
static ssize_t read_volt_tbl(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { u32 len = 0; u32 freq_id = A9_FREQ_1000_MHZ; u32 silicon_type = SILICON_TYPE_SLOW; char input_str[10]; u8 *volt_table; int i; if (count > sizeof(input_str)) len = sizeof(input_str); else len = count; if (copy_from_user(input_str, buf, len)) return -EFAULT; /* coverity[secure_coding] */ sscanf(input_str, "%d%d", &silicon_type, &freq_id); if (silicon_type >= SILICON_TYPE_MAX) { pr_err("%s: Invalid silicon type\n", __func__); return count; } /* Right now, 1.5Ghz voltage table hasn't been defined */ if (freq_id >= A9_FREQ_1500_MHZ) { pr_err("%s: Invalid freq id\n", __func__); return count; } volt_table = (u8 *) get_sr_vlt_table(silicon_type, freq_id); pr_info("Silicon Type: %d, Freq Id: %d", silicon_type, freq_id); for (i = 0; i < 0x10; i++) pr_info("[%x] = %x ", i, volt_table[i]); return count; }
int pm_init_pmu_sr_vlt_map_table(u32 silicon_type, int freq_id) { int inx; int ret; u8 *vlt_table; vlt_table = (u8 *) get_sr_vlt_table(silicon_type, freq_id); for (inx = 0; inx < SR_VLT_LUT_SIZE; inx++) sr_vlt_table[inx] = vlt_table[inx]; /*Init SR voltages that are not set by HW seq*/ ret = bcmpmu_init_sr_volt(); WARN_ON(ret); populate_pmu_voltage_log(); return pwr_mgr_pm_i2c_var_data_write(vlt_table, SR_VLT_LUT_SIZE); }