66 lines
2.2 KiB
Diff
66 lines
2.2 KiB
Diff
|
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;
|
||
|
};
|