-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cpufreq: dt: Don't use generic platdev driver for tango
On tango platforms, firmware configures the CPU clock, and Linux is then only allowed to use the cpu_clk_divider to change the frequency. Build the OPP table dynamically at init, in order to support whatever firmware throws at us. Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
- Loading branch information
Marc Gonzalez
authored and
Rafael J. Wysocki
committed
Jul 22, 2017
1 parent
bb33270
commit 9dbd224
Showing
5 changed files
with
44 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#include <linux/of.h> | ||
#include <linux/cpu.h> | ||
#include <linux/clk.h> | ||
#include <linux/pm_opp.h> | ||
#include <linux/platform_device.h> | ||
|
||
static const struct of_device_id machines[] __initconst = { | ||
{ .compatible = "sigma,tango4" }, | ||
{ /* sentinel */ } | ||
}; | ||
|
||
static int __init tango_cpufreq_init(void) | ||
{ | ||
struct device *cpu_dev = get_cpu_device(0); | ||
unsigned long max_freq; | ||
struct clk *cpu_clk; | ||
void *res; | ||
|
||
if (!of_match_node(machines, of_root)) | ||
return -ENODEV; | ||
|
||
cpu_clk = clk_get(cpu_dev, NULL); | ||
if (IS_ERR(cpu_clk)) | ||
return -ENODEV; | ||
|
||
max_freq = clk_get_rate(cpu_clk); | ||
|
||
dev_pm_opp_add(cpu_dev, max_freq / 1, 0); | ||
dev_pm_opp_add(cpu_dev, max_freq / 2, 0); | ||
dev_pm_opp_add(cpu_dev, max_freq / 3, 0); | ||
dev_pm_opp_add(cpu_dev, max_freq / 5, 0); | ||
dev_pm_opp_add(cpu_dev, max_freq / 9, 0); | ||
|
||
res = platform_device_register_data(NULL, "cpufreq-dt", -1, NULL, 0); | ||
|
||
return PTR_ERR_OR_ZERO(res); | ||
} | ||
device_initcall(tango_cpufreq_init); |