7903a9219c
A newer clk and cpufreq drivers for ipq806x platform had been sent upstream. A change that i have noticed is that now it's possible to set min, cur and max frequencies from sysfs (previously it was bugged and caused nothing). Following patches are removed: - 0036-clk-Avoid-sending-high-rates-to-downstream-clocks-du.patch - seems it was dropped from the patchset by current committer. - 0044-clk-qcom-krait-Remove-CLK_IS_ROOT.patch - already applied to the driver itself in the corresponding patch. - 0057-clk-qcom-Add-regmap-mux-div-clocks-support.patch - seem to be irrelevant to ipq806x. Signed-off-by: Pavel Kubelun <be.dissent@gmail.com>
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
|
|
@@ -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 = 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;
|
|
};
|
|
|