Lines Matching refs:info
54 static int mtk_cpufreq_voltage_tracking(struct mtk_cpu_dvfs_info *info, in mtk_cpufreq_voltage_tracking() argument
57 struct regulator *proc_reg = info->proc_reg; in mtk_cpufreq_voltage_tracking()
58 struct regulator *sram_reg = info->sram_reg; in mtk_cpufreq_voltage_tracking()
163 static int mtk_cpufreq_set_voltage(struct mtk_cpu_dvfs_info *info, int vproc) in mtk_cpufreq_set_voltage() argument
165 if (info->need_voltage_tracking) in mtk_cpufreq_set_voltage()
166 return mtk_cpufreq_voltage_tracking(info, vproc); in mtk_cpufreq_set_voltage()
168 return regulator_set_voltage(info->proc_reg, vproc, in mtk_cpufreq_set_voltage()
178 struct mtk_cpu_dvfs_info *info = policy->driver_data; in mtk_cpufreq_set_target() local
179 struct device *cpu_dev = info->cpu_dev; in mtk_cpufreq_set_target()
184 inter_vproc = info->intermediate_voltage; in mtk_cpufreq_set_target()
187 old_vproc = regulator_get_voltage(info->proc_reg); in mtk_cpufreq_set_target()
208 ret = mtk_cpufreq_set_voltage(info, target_vproc); in mtk_cpufreq_set_target()
212 mtk_cpufreq_set_voltage(info, old_vproc); in mtk_cpufreq_set_target()
218 ret = clk_set_parent(cpu_clk, info->inter_clk); in mtk_cpufreq_set_target()
222 mtk_cpufreq_set_voltage(info, old_vproc); in mtk_cpufreq_set_target()
233 mtk_cpufreq_set_voltage(info, old_vproc); in mtk_cpufreq_set_target()
242 mtk_cpufreq_set_voltage(info, inter_vproc); in mtk_cpufreq_set_target()
252 ret = mtk_cpufreq_set_voltage(info, vproc); in mtk_cpufreq_set_target()
256 clk_set_parent(cpu_clk, info->inter_clk); in mtk_cpufreq_set_target()
268 struct mtk_cpu_dvfs_info *info = policy->driver_data; in mtk_cpufreq_ready() local
269 struct device_node *np = of_node_get(info->cpu_dev->of_node); in mtk_cpufreq_ready()
275 info->cdev = of_cpufreq_cooling_register(np, in mtk_cpufreq_ready()
278 if (IS_ERR(info->cdev)) { in mtk_cpufreq_ready()
279 dev_err(info->cpu_dev, in mtk_cpufreq_ready()
281 PTR_ERR(info->cdev)); in mtk_cpufreq_ready()
283 info->cdev = NULL; in mtk_cpufreq_ready()
290 static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu) in mtk_cpu_dvfs_info_init() argument
363 info->intermediate_voltage = dev_pm_opp_get_voltage(opp); in mtk_cpu_dvfs_info_init()
366 info->cpu_dev = cpu_dev; in mtk_cpu_dvfs_info_init()
367 info->proc_reg = proc_reg; in mtk_cpu_dvfs_info_init()
368 info->sram_reg = IS_ERR(sram_reg) ? NULL : sram_reg; in mtk_cpu_dvfs_info_init()
369 info->cpu_clk = cpu_clk; in mtk_cpu_dvfs_info_init()
370 info->inter_clk = inter_clk; in mtk_cpu_dvfs_info_init()
376 info->need_voltage_tracking = !IS_ERR(sram_reg); in mtk_cpu_dvfs_info_init()
396 static void mtk_cpu_dvfs_info_release(struct mtk_cpu_dvfs_info *info) in mtk_cpu_dvfs_info_release() argument
398 if (!IS_ERR(info->proc_reg)) in mtk_cpu_dvfs_info_release()
399 regulator_put(info->proc_reg); in mtk_cpu_dvfs_info_release()
400 if (!IS_ERR(info->sram_reg)) in mtk_cpu_dvfs_info_release()
401 regulator_put(info->sram_reg); in mtk_cpu_dvfs_info_release()
402 if (!IS_ERR(info->cpu_clk)) in mtk_cpu_dvfs_info_release()
403 clk_put(info->cpu_clk); in mtk_cpu_dvfs_info_release()
404 if (!IS_ERR(info->inter_clk)) in mtk_cpu_dvfs_info_release()
405 clk_put(info->inter_clk); in mtk_cpu_dvfs_info_release()
407 dev_pm_opp_of_remove_table(info->cpu_dev); in mtk_cpu_dvfs_info_release()
412 struct mtk_cpu_dvfs_info *info; in mtk_cpufreq_init() local
416 info = kzalloc(sizeof(*info), GFP_KERNEL); in mtk_cpufreq_init()
417 if (!info) in mtk_cpufreq_init()
420 ret = mtk_cpu_dvfs_info_init(info, policy->cpu); in mtk_cpufreq_init()
427 ret = dev_pm_opp_init_cpufreq_table(info->cpu_dev, &freq_table); in mtk_cpufreq_init()
442 policy->driver_data = info; in mtk_cpufreq_init()
443 policy->clk = info->cpu_clk; in mtk_cpufreq_init()
448 dev_pm_opp_free_cpufreq_table(info->cpu_dev, &freq_table); in mtk_cpufreq_init()
451 mtk_cpu_dvfs_info_release(info); in mtk_cpufreq_init()
454 kfree(info); in mtk_cpufreq_init()
461 struct mtk_cpu_dvfs_info *info = policy->driver_data; in mtk_cpufreq_exit() local
463 cpufreq_cooling_unregister(info->cdev); in mtk_cpufreq_exit()
464 dev_pm_opp_free_cpufreq_table(info->cpu_dev, &policy->freq_table); in mtk_cpufreq_exit()
465 mtk_cpu_dvfs_info_release(info); in mtk_cpufreq_exit()
466 kfree(info); in mtk_cpufreq_exit()