Commit bbcf0719 authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki

cpufreq: cpu0: rename driver and internals to 'cpufreq_dt'

The naming convention of this driver was always under the scanner, people
complained that it should have a more generic name than cpu0, as it manages all
CPUs that are sharing clock lines.

Also, in future it will be modified to support any number of clusters with
separate clock/voltage lines.

Lets rename it to 'cpufreq_dt' from 'cpufreq_cpu0'.
Tested-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 0bf18f19
Generic CPU0 cpufreq driver Generic cpufreq driver
It is a generic cpufreq driver for CPU0 frequency management. It It is a generic DT based cpufreq driver for frequency management. It supports
supports both uniprocessor (UP) and symmetric multiprocessor (SMP) both uniprocessor (UP) and symmetric multiprocessor (SMP) systems which share
systems which share clock and voltage across all CPUs. clock and voltage across all CPUs.
Both required and optional properties listed below must be defined Both required and optional properties listed below must be defined
under node /cpus/cpu@0. under node /cpus/cpu@0.
......
...@@ -32,7 +32,7 @@ CONFIG_ARM_ATAG_DTB_COMPAT=y ...@@ -32,7 +32,7 @@ CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE=y
CONFIG_ARM_MVEBU_V7_CPUIDLE=y CONFIG_ARM_MVEBU_V7_CPUIDLE=y
CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ=y
CONFIG_CPUFREQ_GENERIC=y CONFIG_CPUFREQ_DT=y
CONFIG_VFP=y CONFIG_VFP=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_INET=y CONFIG_INET=y
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
static void __init imx27_dt_init(void) static void __init imx27_dt_init(void)
{ {
struct platform_device_info devinfo = { .name = "cpufreq-cpu0", }; struct platform_device_info devinfo = { .name = "cpufreq-dt", };
mxc_arch_reset_init_dt(); mxc_arch_reset_init_dt();
......
...@@ -51,7 +51,7 @@ static void __init imx51_ipu_mipi_setup(void) ...@@ -51,7 +51,7 @@ static void __init imx51_ipu_mipi_setup(void)
static void __init imx51_dt_init(void) static void __init imx51_dt_init(void)
{ {
struct platform_device_info devinfo = { .name = "cpufreq-cpu0", }; struct platform_device_info devinfo = { .name = "cpufreq-dt", };
mxc_arch_reset_init_dt(); mxc_arch_reset_init_dt();
imx51_ipu_mipi_setup(); imx51_ipu_mipi_setup();
......
...@@ -644,7 +644,7 @@ static int __init armada_xp_pmsu_cpufreq_init(void) ...@@ -644,7 +644,7 @@ static int __init armada_xp_pmsu_cpufreq_init(void)
} }
} }
platform_device_register_simple("cpufreq-generic", -1, NULL, 0); platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
return 0; return 0;
} }
......
...@@ -282,7 +282,7 @@ static inline void omap_init_cpufreq(void) ...@@ -282,7 +282,7 @@ static inline void omap_init_cpufreq(void)
if (!of_have_populated_dt()) if (!of_have_populated_dt())
devinfo.name = "omap-cpufreq"; devinfo.name = "omap-cpufreq";
else else
devinfo.name = "cpufreq-cpu0"; devinfo.name = "cpufreq-dt";
platform_device_register_full(&devinfo); platform_device_register_full(&devinfo);
} }
......
...@@ -50,7 +50,7 @@ static void __init ape6evm_add_standard_devices(void) ...@@ -50,7 +50,7 @@ static void __init ape6evm_add_standard_devices(void)
r8a73a4_add_dt_devices(); r8a73a4_add_dt_devices();
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
platform_device_register_simple("cpufreq-cpu0", -1, NULL, 0); platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
} }
static const char *ape6evm_boards_compat_dt[] __initdata = { static const char *ape6evm_boards_compat_dt[] __initdata = {
......
...@@ -12,6 +12,6 @@ ...@@ -12,6 +12,6 @@
int __init shmobile_cpufreq_init(void) int __init shmobile_cpufreq_init(void)
{ {
platform_device_register_simple("cpufreq-cpu0", -1, NULL, 0); platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
return 0; return 0;
} }
...@@ -775,7 +775,7 @@ void __init sh73a0_add_early_devices(void) ...@@ -775,7 +775,7 @@ void __init sh73a0_add_early_devices(void)
void __init sh73a0_add_standard_devices_dt(void) void __init sh73a0_add_standard_devices_dt(void)
{ {
struct platform_device_info devinfo = { .name = "cpufreq-cpu0", .id = -1, }; struct platform_device_info devinfo = { .name = "cpufreq-dt", .id = -1, };
/* clocks are setup late during boot in the case of DT */ /* clocks are setup late during boot in the case of DT */
sh73a0_clock_init(); sh73a0_clock_init();
...@@ -784,7 +784,7 @@ void __init sh73a0_add_standard_devices_dt(void) ...@@ -784,7 +784,7 @@ void __init sh73a0_add_standard_devices_dt(void)
ARRAY_SIZE(sh73a0_devices_dt)); ARRAY_SIZE(sh73a0_devices_dt));
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
/* Instantiate cpufreq-cpu0 */ /* Instantiate cpufreq-dt */
platform_device_register_full(&devinfo); platform_device_register_full(&devinfo);
} }
......
...@@ -104,7 +104,7 @@ static int __init zynq_get_revision(void) ...@@ -104,7 +104,7 @@ static int __init zynq_get_revision(void)
*/ */
static void __init zynq_init_machine(void) static void __init zynq_init_machine(void)
{ {
struct platform_device_info devinfo = { .name = "cpufreq-cpu0", }; struct platform_device_info devinfo = { .name = "cpufreq-dt", };
struct soc_device_attribute *soc_dev_attr; struct soc_device_attribute *soc_dev_attr;
struct soc_device *soc_dev; struct soc_device *soc_dev;
struct device *parent = NULL; struct device *parent = NULL;
......
...@@ -183,14 +183,14 @@ config CPU_FREQ_GOV_CONSERVATIVE ...@@ -183,14 +183,14 @@ config CPU_FREQ_GOV_CONSERVATIVE
If in doubt, say N. If in doubt, say N.
config GENERIC_CPUFREQ_CPU0 config CPUFREQ_DT
tristate "Generic CPU0 cpufreq driver" tristate "Generic DT based cpufreq driver"
depends on HAVE_CLK && OF depends on HAVE_CLK && OF
# if CPU_THERMAL is on and THERMAL=m, CPU0 cannot be =y: # if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
depends on !CPU_THERMAL || THERMAL depends on !CPU_THERMAL || THERMAL
select PM_OPP select PM_OPP
help help
This adds a generic cpufreq driver for CPU0 frequency management. This adds a generic DT based cpufreq driver for frequency management.
It supports both uniprocessor (UP) and symmetric multiprocessor (SMP) It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
systems which share clock and voltage across all CPUs. systems which share clock and voltage across all CPUs.
......
...@@ -92,7 +92,7 @@ config ARM_EXYNOS_CPU_FREQ_BOOST_SW ...@@ -92,7 +92,7 @@ config ARM_EXYNOS_CPU_FREQ_BOOST_SW
config ARM_HIGHBANK_CPUFREQ config ARM_HIGHBANK_CPUFREQ
tristate "Calxeda Highbank-based" tristate "Calxeda Highbank-based"
depends on ARCH_HIGHBANK && GENERIC_CPUFREQ_CPU0 && REGULATOR depends on ARCH_HIGHBANK && CPUFREQ_DT && REGULATOR
default m default m
help help
This adds the CPUFreq driver for Calxeda Highbank SoC This adds the CPUFreq driver for Calxeda Highbank SoC
......
...@@ -13,7 +13,7 @@ obj-$(CONFIG_CPU_FREQ_GOV_ONDEMAND) += cpufreq_ondemand.o ...@@ -13,7 +13,7 @@ obj-$(CONFIG_CPU_FREQ_GOV_ONDEMAND) += cpufreq_ondemand.o
obj-$(CONFIG_CPU_FREQ_GOV_CONSERVATIVE) += cpufreq_conservative.o obj-$(CONFIG_CPU_FREQ_GOV_CONSERVATIVE) += cpufreq_conservative.o
obj-$(CONFIG_CPU_FREQ_GOV_COMMON) += cpufreq_governor.o obj-$(CONFIG_CPU_FREQ_GOV_COMMON) += cpufreq_governor.o
obj-$(CONFIG_GENERIC_CPUFREQ_CPU0) += cpufreq-cpu0.o obj-$(CONFIG_CPUFREQ_DT) += cpufreq-dt.o
################################################################################## ##################################################################################
# x86 drivers. # x86 drivers.
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* Copyright (C) 2014 Linaro. * Copyright (C) 2014 Linaro.
* Viresh Kumar <viresh.kumar@linaro.org> * Viresh Kumar <viresh.kumar@linaro.org>
* *
* The OPP code in function cpu0_set_target() is reused from * The OPP code in function set_target() is reused from
* drivers/cpufreq/omap-cpufreq.c * drivers/cpufreq/omap-cpufreq.c
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -35,7 +35,7 @@ struct private_data { ...@@ -35,7 +35,7 @@ struct private_data {
unsigned int voltage_tolerance; /* in percentage */ unsigned int voltage_tolerance; /* in percentage */
}; };
static int cpu0_set_target(struct cpufreq_policy *policy, unsigned int index) static int set_target(struct cpufreq_policy *policy, unsigned int index)
{ {
struct dev_pm_opp *opp; struct dev_pm_opp *opp;
struct cpufreq_frequency_table *freq_table = policy->freq_table; struct cpufreq_frequency_table *freq_table = policy->freq_table;
...@@ -176,7 +176,7 @@ static int allocate_resources(int cpu, struct device **cdev, ...@@ -176,7 +176,7 @@ static int allocate_resources(int cpu, struct device **cdev,
return ret; return ret;
} }
static int cpu0_cpufreq_init(struct cpufreq_policy *policy) static int cpufreq_init(struct cpufreq_policy *policy)
{ {
struct cpufreq_frequency_table *freq_table; struct cpufreq_frequency_table *freq_table;
struct thermal_cooling_device *cdev; struct thermal_cooling_device *cdev;
...@@ -287,7 +287,7 @@ static int cpu0_cpufreq_init(struct cpufreq_policy *policy) ...@@ -287,7 +287,7 @@ static int cpu0_cpufreq_init(struct cpufreq_policy *policy)
return ret; return ret;
} }
static int cpu0_cpufreq_exit(struct cpufreq_policy *policy) static int cpufreq_exit(struct cpufreq_policy *policy)
{ {
struct private_data *priv = policy->driver_data; struct private_data *priv = policy->driver_data;
...@@ -301,18 +301,18 @@ static int cpu0_cpufreq_exit(struct cpufreq_policy *policy) ...@@ -301,18 +301,18 @@ static int cpu0_cpufreq_exit(struct cpufreq_policy *policy)
return 0; return 0;
} }
static struct cpufreq_driver cpu0_cpufreq_driver = { static struct cpufreq_driver dt_cpufreq_driver = {
.flags = CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK, .flags = CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK,
.verify = cpufreq_generic_frequency_table_verify, .verify = cpufreq_generic_frequency_table_verify,
.target_index = cpu0_set_target, .target_index = set_target,
.get = cpufreq_generic_get, .get = cpufreq_generic_get,
.init = cpu0_cpufreq_init, .init = cpufreq_init,
.exit = cpu0_cpufreq_exit, .exit = cpufreq_exit,
.name = "generic_cpu0", .name = "cpufreq-dt",
.attr = cpufreq_generic_attr, .attr = cpufreq_generic_attr,
}; };
static int cpu0_cpufreq_probe(struct platform_device *pdev) static int dt_cpufreq_probe(struct platform_device *pdev)
{ {
struct device *cpu_dev; struct device *cpu_dev;
struct regulator *cpu_reg; struct regulator *cpu_reg;
...@@ -334,30 +334,30 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev) ...@@ -334,30 +334,30 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
if (!IS_ERR(cpu_reg)) if (!IS_ERR(cpu_reg))
regulator_put(cpu_reg); regulator_put(cpu_reg);
ret = cpufreq_register_driver(&cpu0_cpufreq_driver); ret = cpufreq_register_driver(&dt_cpufreq_driver);
if (ret) if (ret)
dev_err(cpu_dev, "failed register driver: %d\n", ret); dev_err(cpu_dev, "failed register driver: %d\n", ret);
return ret; return ret;
} }
static int cpu0_cpufreq_remove(struct platform_device *pdev) static int dt_cpufreq_remove(struct platform_device *pdev)
{ {
cpufreq_unregister_driver(&cpu0_cpufreq_driver); cpufreq_unregister_driver(&dt_cpufreq_driver);
return 0; return 0;
} }
static struct platform_driver cpu0_cpufreq_platdrv = { static struct platform_driver dt_cpufreq_platdrv = {
.driver = { .driver = {
.name = "cpufreq-cpu0", .name = "cpufreq-dt",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = cpu0_cpufreq_probe, .probe = dt_cpufreq_probe,
.remove = cpu0_cpufreq_remove, .remove = dt_cpufreq_remove,
}; };
module_platform_driver(cpu0_cpufreq_platdrv); module_platform_driver(dt_cpufreq_platdrv);
MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.org>"); MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.org>");
MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
MODULE_DESCRIPTION("Generic CPU0 cpufreq driver"); MODULE_DESCRIPTION("Generic cpufreq driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -127,7 +127,7 @@ int exynos4210_cpufreq_init(struct exynos_dvfs_info *info) ...@@ -127,7 +127,7 @@ int exynos4210_cpufreq_init(struct exynos_dvfs_info *info)
* dependencies on platform headers. It is necessary to enable * dependencies on platform headers. It is necessary to enable
* Exynos multi-platform support and will be removed together with * Exynos multi-platform support and will be removed together with
* this whole driver as soon as Exynos gets migrated to use * this whole driver as soon as Exynos gets migrated to use
* cpufreq-cpu0 driver. * cpufreq-dt driver.
*/ */
np = of_find_compatible_node(NULL, NULL, "samsung,exynos4210-clock"); np = of_find_compatible_node(NULL, NULL, "samsung,exynos4210-clock");
if (!np) { if (!np) {
......
...@@ -174,7 +174,7 @@ int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info) ...@@ -174,7 +174,7 @@ int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info)
* dependencies on platform headers. It is necessary to enable * dependencies on platform headers. It is necessary to enable
* Exynos multi-platform support and will be removed together with * Exynos multi-platform support and will be removed together with
* this whole driver as soon as Exynos gets migrated to use * this whole driver as soon as Exynos gets migrated to use
* cpufreq-cpu0 driver. * cpufreq-dt driver.
*/ */
np = of_find_compatible_node(NULL, NULL, "samsung,exynos4412-clock"); np = of_find_compatible_node(NULL, NULL, "samsung,exynos4412-clock");
if (!np) { if (!np) {
......
...@@ -153,7 +153,7 @@ int exynos5250_cpufreq_init(struct exynos_dvfs_info *info) ...@@ -153,7 +153,7 @@ int exynos5250_cpufreq_init(struct exynos_dvfs_info *info)
* dependencies on platform headers. It is necessary to enable * dependencies on platform headers. It is necessary to enable
* Exynos multi-platform support and will be removed together with * Exynos multi-platform support and will be removed together with
* this whole driver as soon as Exynos gets migrated to use * this whole driver as soon as Exynos gets migrated to use
* cpufreq-cpu0 driver. * cpufreq-dt driver.
*/ */
np = of_find_compatible_node(NULL, NULL, "samsung,exynos5250-clock"); np = of_find_compatible_node(NULL, NULL, "samsung,exynos5250-clock");
if (!np) { if (!np) {
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
* *
* This driver provides the clk notifier callbacks that are used when * This driver provides the clk notifier callbacks that are used when
* the cpufreq-cpu0 driver changes to frequency to alert the highbank * the cpufreq-dt driver changes to frequency to alert the highbank
* EnergyCore Management Engine (ECME) about the need to change * EnergyCore Management Engine (ECME) about the need to change
* voltage. The ECME interfaces with the actual voltage regulators. * voltage. The ECME interfaces with the actual voltage regulators.
*/ */
...@@ -60,7 +60,7 @@ static struct notifier_block hb_cpufreq_clk_nb = { ...@@ -60,7 +60,7 @@ static struct notifier_block hb_cpufreq_clk_nb = {
static int hb_cpufreq_driver_init(void) static int hb_cpufreq_driver_init(void)
{ {
struct platform_device_info devinfo = { .name = "cpufreq-cpu0", }; struct platform_device_info devinfo = { .name = "cpufreq-dt", };
struct device *cpu_dev; struct device *cpu_dev;
struct clk *cpu_clk; struct clk *cpu_clk;
struct device_node *np; struct device_node *np;
...@@ -95,7 +95,7 @@ static int hb_cpufreq_driver_init(void) ...@@ -95,7 +95,7 @@ static int hb_cpufreq_driver_init(void)
goto out_put_node; goto out_put_node;
} }
/* Instantiate cpufreq-cpu0 */ /* Instantiate cpufreq-dt */
platform_device_register_full(&devinfo); platform_device_register_full(&devinfo);
out_put_node: out_put_node:
......
...@@ -597,7 +597,7 @@ static int s5pv210_cpufreq_probe(struct platform_device *pdev) ...@@ -597,7 +597,7 @@ static int s5pv210_cpufreq_probe(struct platform_device *pdev)
* and dependencies on platform headers. It is necessary to enable * and dependencies on platform headers. It is necessary to enable
* S5PV210 multi-platform support and will be removed together with * S5PV210 multi-platform support and will be removed together with
* this whole driver as soon as S5PV210 gets migrated to use * this whole driver as soon as S5PV210 gets migrated to use
* cpufreq-cpu0 driver. * cpufreq-dt driver.
*/ */
np = of_find_compatible_node(NULL, NULL, "samsung,s5pv210-clock"); np = of_find_compatible_node(NULL, NULL, "samsung,s5pv210-clock");
if (!np) { if (!np) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment