aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch
diff options
context:
space:
mode:
authorHannu Nyman <hannu.nyman@iki.fi>2017-03-16 15:32:16 +0200
committerJohn Crispin <john@phrozen.org>2017-03-20 08:12:49 +0100
commit3f9eadf599e7d44fe5c3e4c4652334dda4c6d88f (patch)
tree1bd6230281668c5323158e545bd8ed5ce558ee31 /target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch
parentef4ca01d6fa762d9cfc17138bc7dc3a4eb5b83cb (diff)
downloadupstream-3f9eadf599e7d44fe5c3e4c4652334dda4c6d88f.tar.gz
upstream-3f9eadf599e7d44fe5c3e4c4652334dda4c6d88f.tar.bz2
upstream-3f9eadf599e7d44fe5c3e4c4652334dda4c6d88f.zip
ipq806x: support independent core clocks in cpufreq 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 * revert the removal of its usage in cpufreq-dt.c * use new cpufreq-dt.h in qcom-cpufreq.c Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Diffstat (limited to 'target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch')
-rw-r--r--target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch b/target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch
new file mode 100644
index 0000000000..1ee8ef538f
--- /dev/null
+++ b/target/linux/ipq806x/patches-4.9/0046-cpufreq-qcom-independent-core-clocks.patch
@@ -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 <hannu.nyman@iki.fi>
+
+--- 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)
+ {
+