/branches/gl-inet/target/linux/ipq806x/patches-4.14/0046-cpufreq-qcom-independent-core-clocks.patch/0046-cpufreq-qcom-independent-core-clocks.patch |
@@ -0,0 +1,66 @@ |
From patchwork Fri Dec 8 09:42:30 2017 |
Content-Type: text/plain; charset="utf-8" |
MIME-Version: 1.0 |
Content-Transfer-Encoding: 7bit |
Subject: [v4,12/12] cpufreq: dt: Reintroduce independent_clocks platform data |
From: Sricharan R <sricharan@codeaurora.org> |
X-Patchwork-Id: 10102073 |
Message-Id: <1512726150-7204-13-git-send-email-sricharan@codeaurora.org> |
To: mturquette@baylibre.com, sboyd@codeaurora.org, |
devicetree@vger.kernel.org, linux-pm@vger.kernel.org, |
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, |
viresh.kumar@linaro.org, linux-arm-kernel@lists.infradead.org |
Cc: sricharan@codeaurora.org |
Date: Fri, 8 Dec 2017 15:12:30 +0530 |
|
The Platform data was removed earlier by, |
'commit eb96924acddc ("cpufreq: dt: Kill platform-data")' |
since there were no users at that time. |
Now this is required when the each of the cpu clocks |
can be scaled independently, which is the case |
for krait cores. So reintroduce it. |
|
Signed-off-by: Sricharan R <sricharan@codeaurora.org> |
--- |
drivers/cpufreq/cpufreq-dt.c | 7 ++++++- |
drivers/cpufreq/cpufreq-dt.h | 6 ++++++ |
2 files changed, 12 insertions(+), 1 deletion(-) |
|
--- a/drivers/cpufreq/cpufreq-dt.c |
+++ b/drivers/cpufreq/cpufreq-dt.c |
@@ -220,7 +220,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 |
@@ -372,6 +375,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 = data; |
+ |
ret = cpufreq_register_driver(&dt_cpufreq_driver); |
if (ret) |
dev_err(&pdev->dev, "failed register driver: %d\n", ret); |
--- a/drivers/cpufreq/cpufreq-dt.h |
+++ b/drivers/cpufreq/cpufreq-dt.h |
@@ -13,6 +13,12 @@ |
#include <linux/types.h> |
|
struct cpufreq_dt_platform_data { |
+ /* |
+ * True when each CPU has its own clock to control its |
+ * frequency, false when all CPUs are controlled by a single |
+ * clock. |
+ */ |
+ bool independent_clocks; |
bool have_governor_per_policy; |
}; |
|