Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpufreq: imx6q: add of_init_opp_table

Add a routine check to see if the platform supplied the OPP table.
Incase there's no OPP table exist, it will try to initialise it.

It's been tested on iMX6SL board where the platform doesn't have
an OPP table.

Signed-off-by: John Tobias <john.tobias.ph@gmail.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

John Tobias and committed by
Rafael J. Wysocki
20b7cbe2 1d0eaae9

+17 -4
+17 -4
drivers/cpufreq/imx6q-cpufreq.c
··· 195 195 goto put_node; 196 196 } 197 197 198 - /* We expect an OPP table supplied by platform */ 198 + /* 199 + * We expect an OPP table supplied by platform. 200 + * Just, incase the platform did not supply the OPP 201 + * table, it will try to get it. 202 + */ 199 203 num = dev_pm_opp_get_opp_count(cpu_dev); 200 204 if (num < 0) { 201 - ret = num; 202 - dev_err(cpu_dev, "no OPP table is found: %d\n", ret); 203 - goto put_node; 205 + ret = of_init_opp_table(cpu_dev); 206 + if (ret < 0) { 207 + dev_err(cpu_dev, "failed to init OPP table: %d\n", ret); 208 + goto put_node; 209 + } 210 + 211 + num = dev_pm_opp_get_opp_count(cpu_dev); 212 + if (num < 0) { 213 + ret = num; 214 + dev_err(cpu_dev, "no OPP table is found: %d\n", ret); 215 + goto put_node; 216 + } 204 217 } 205 218 206 219 ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table);