On 18-08-16, 16:52, Finlye Xiao wrote: > +static int rockchip_adjust_opp_table(struct device *cpu_dev, > + struct cpufreq_frequency_table *table, > + int volt) > +{ > + struct opp_table *opp_table; > + struct cpufreq_frequency_table *pos; > + struct dev_pm_opp *opp; > + > + if (!volt) > + return 0; > + > + rcu_read_lock(); > + > + opp_table = _find_opp_table(cpu_dev); > + if (IS_ERR(opp_table)) { > + rcu_read_unlock(); > + return PTR_ERR(opp_table); > + } > + > + cpufreq_for_each_valid_entry(pos, table) { > + opp = dev_pm_opp_find_freq_exact(cpu_dev, pos->frequency * 1000, > + true); > + if (IS_ERR(opp)) > + continue; > + > + opp->u_volt += volt; > + opp->u_volt_min += volt; > + opp->u_volt_max += volt; > + } > + > + rcu_read_unlock(); > + > + return 0; > +} I wouldn't prefer altering the opp tables from individual drivers at all. At the least, it should be done via some helpers exposed by the core. But before that I would like to hear from Stephen a bit as I recall he was also working on something similar. -- viresh -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html