cpufreq: imx6q: add of_init_opp_table
authorJohn Tobias <john.tobias.ph@gmail.com>
Fri, 20 Dec 2013 06:56:28 +0000 (22:56 -0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 6 Jan 2014 12:33:45 +0000 (13:33 +0100)
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>
drivers/cpufreq/imx6q-cpufreq.c

index c29198fbc9b7656039652991a40349b36c1b6bbd..564a26523ebc74103197686c2af25e0fd9b2bc92 100644 (file)
@@ -195,12 +195,25 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev)
                goto put_node;
        }
 
-       /* We expect an OPP table supplied by platform */
+       /*
+        * We expect an OPP table supplied by platform.
+        * Just, incase the platform did not supply the OPP
+        * table, it will try to get it.
+        */
        num = dev_pm_opp_get_opp_count(cpu_dev);
        if (num < 0) {
-               ret = num;
-               dev_err(cpu_dev, "no OPP table is found: %d\n", ret);
-               goto put_node;
+               ret = of_init_opp_table(cpu_dev);
+               if (ret < 0) {
+                       dev_err(cpu_dev, "failed to init OPP table: %d\n", ret);
+                       goto put_node;
+               }
+
+               num = dev_pm_opp_get_opp_count(cpu_dev);
+               if (num < 0) {
+                       ret = num;
+                       dev_err(cpu_dev, "no OPP table is found: %d\n", ret);
+                       goto put_node;
+               }
        }
 
        ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table);