|
|
@@ -0,0 +1,57 @@
|
|
|
+ipq806x: support independent core clocks with kernel 4.9+
|
|
|
+
|
|
|
+Add back support for the independent_clocks definition that has been
|
|
|
+removed between kernel 4.4 and 4.9 by upstream commits
|
|
|
+eb96924acddc709db58221c210ca05cd9effb1df and
|
|
|
+e86eee6bc2aaa6b3637f6497b26beee09a91bde9
|
|
|
+
|
|
|
+* extend the new cpufreq_dt_platform_data definition in cpufreq-dt.h
|
|
|
+* use new cpufreq-dt.h in qcom-cpufreq.c
|
|
|
+
|
|
|
+Signed-off-by: Hannu Nyman <[email protected]>
|
|
|
+
|
|
|
+--- a/drivers/cpufreq/cpufreq-dt.h
|
|
|
++++ b/drivers/cpufreq/cpufreq-dt.h
|
|
|
+@@ -14,6 +14,7 @@
|
|
|
+
|
|
|
+ struct cpufreq_dt_platform_data {
|
|
|
+ bool have_governor_per_policy;
|
|
|
++ bool independent_clocks;
|
|
|
+ };
|
|
|
+
|
|
|
+ #endif /* __CPUFREQ_DT_H__ */
|
|
|
+--- a/drivers/cpufreq/cpufreq-dt.c
|
|
|
++++ b/drivers/cpufreq/cpufreq-dt.c
|
|
|
+@@ -221,7 +221,10 @@ static int cpufreq_init(struct cpufreq_p
|
|
|
+ }
|
|
|
+
|
|
|
+ if (fallback) {
|
|
|
+- cpumask_setall(policy->cpus);
|
|
|
++ struct cpufreq_dt_platform_data *pd = cpufreq_get_driver_data();
|
|
|
++
|
|
|
++ if (!pd || !pd->independent_clocks)
|
|
|
++ cpumask_setall(policy->cpus);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * OPP tables are initialized only for policy->cpu, do it for
|
|
|
+@@ -376,6 +379,8 @@ static int dt_cpufreq_probe(struct platf
|
|
|
+ if (data && data->have_governor_per_policy)
|
|
|
+ dt_cpufreq_driver.flags |= CPUFREQ_HAVE_GOVERNOR_PER_POLICY;
|
|
|
+
|
|
|
++ dt_cpufreq_driver.driver_data = dev_get_platdata(&pdev->dev);
|
|
|
++
|
|
|
+ ret = cpufreq_register_driver(&dt_cpufreq_driver);
|
|
|
+ if (ret)
|
|
|
+ dev_err(&pdev->dev, "failed register driver: %d\n", ret);
|
|
|
+--- a/drivers/cpufreq/qcom-cpufreq.c
|
|
|
++++ b/drivers/cpufreq/qcom-cpufreq.c
|
|
|
+@@ -20,7 +20,7 @@
|
|
|
+ #include <linux/platform_device.h>
|
|
|
+ #include <linux/pm_opp.h>
|
|
|
+ #include <linux/slab.h>
|
|
|
+-#include <linux/cpufreq-dt.h>
|
|
|
++#include "cpufreq-dt.h"
|
|
|
+
|
|
|
+ static void __init get_krait_bin_format_a(int *speed, int *pvs, int *pvs_ver)
|
|
|
+ {
|
|
|
+
|