[PATCH V5 4/7] cpufreq: add clk-reg cpufreq driver
Shawn Guo
shawn.guo at freescale.com
Tue Dec 27 10:05:41 EST 2011
Hi Richard,
On Tue, Dec 27, 2011 at 04:24:19PM +0800, Richard Zhao wrote:
> The driver get cpu operation point table from device tree cpu0 node,
> and adjusts operating points using clk and regulator APIs.
>
> It support single core and multi-core ARM SoCs. But currently it assume
> all cores share the same frequency and voltage.
>
> Signed-off-by: Richard Zhao <richard.zhao at linaro.org>
> Reviewed-by: Jamie Iles <jamie at jamieiles.com>
> Reviewed-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
> .../devicetree/bindings/cpufreq/clk-reg-cpufreq | 21 ++
> drivers/cpufreq/Kconfig | 10 +
> drivers/cpufreq/Makefile | 2 +
> drivers/cpufreq/clk-reg-cpufreq.c | 302 ++++++++++++++++++++
> 4 files changed, 335 insertions(+), 0 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/cpufreq/clk-reg-cpufreq
> create mode 100644 drivers/cpufreq/clk-reg-cpufreq.c
>
[...]
> +static struct cpufreq_driver clk_reg_cpufreq_driver = {
> + .flags = CPUFREQ_STICKY,
> + .verify = clk_reg_verify_speed,
> + .target = clk_reg_set_target,
> + .get = clk_reg_get_speed,
> + .init = clk_reg_cpufreq_init,
> + .exit = clk_reg_cpufreq_exit,
> + .name = "clk-reg",
> +};
> +
> +static u32 max_freq = UINT_MAX / 1000; /* kHz */
> +module_param(max_freq, uint, 0);
> +MODULE_PARM_DESC(max_freq, "max cpu frequency in unit of kHz");
> +
Have you tried to pass this param from kernel cmdline? What's the
syntax if we want to pass a 800 MHz max_freq?
And I played this driver on imx6q with pm-qa [1] cpufreq test suit from
Linaro PMWG.
### cpufreq_01:
### test the cpufreq framework is available for frequency
### https://wiki.linaro.org/WorkingGroups/PowerManagement/Doc/QA/Scripts#cpufreq_01
###
cpufreq_01.0/cpu0: checking 'scaling_available_frequencies' exists... fail
cpufreq_01.0/cpu1: checking 'scaling_available_frequencies' exists... fail
cpufreq_01.0/cpu2: checking 'scaling_available_frequencies' exists... fail
cpufreq_01.0/cpu3: checking 'scaling_available_frequencies' exists... fail
### cpufreq_05:
### test 'ondemand' and 'conservative' trigger correctly the configuration directory
### https://wiki.linaro.org/WorkingGroups/PowerManagement/Doc/QA/Scripts#cpufreq_05
###
cpufreq_05.0: checking 'ondemand' directory exists... pass
cpufreq_05.1: checking 'conservative' directory exists... pass
cpufreq_05.2: checking 'ondemand' directory is not there... pass
cpufreq_05.3: checking 'conservative' directory is not there... pass
cpufreq_05.4: checking 'ondemand' directory exists... fail
cpufreq_05.5: checking 'conservative' directory exists... pass
The cpufreq_01 can be easily fixed with the following change.
8<-----
@@ -146,6 +150,11 @@ static int clk_reg_cpufreq_exit(struct cpufreq_policy *policy)
return 0;
}
+static struct freq_attr *clk_reg_cpufreq_attr[] = {
+ &cpufreq_freq_attr_scaling_available_freqs,
+ NULL,
+};
+
static struct cpufreq_driver clk_reg_cpufreq_driver = {
.flags = CPUFREQ_STICKY,
.verify = clk_reg_verify_speed,
@@ -153,10 +162,15 @@ static struct cpufreq_driver clk_reg_cpufreq_driver = {
.get = clk_reg_get_speed,
.init = clk_reg_cpufreq_init,
.exit = clk_reg_cpufreq_exit,
+ .attr = clk_reg_cpufreq_attr,
.name = "clk-reg",
};
----->8
And I have not looked into the second one deeply, but maybe you
want to :)
--
Regards,
Shawn
[1] git://git.linaro.org/people/dlezcano/pm-qa.git
More information about the linux-arm-kernel
mailing list