CPUFreq Cleanup Series: Part II
Subsystems (14)
Viresh Kumar
maintainerv2 cover CPUFreq Cleanup Series: Part II
Hi Rafael,
As discussed earlier, Part I is now part of your linux-next branch and so sending Part II for inclusion in bleeding-edge..
These are mostly oriented towards using generic .attr, .init(), .exit() and .verify() and are so clubbed together.
These doesn't conflict mostly with the other 11 cpufreq core cleanup patches that are floating around:
http://www.spinics.net/lists/cpufreq/msg07920.html
Only a minor conflict with following patch of that series for arm_big_little.c file:
http://www.spinics.net/lists/cpufreq/msg07929.html
You can resolve it easily, pretty straight forward.
These are based of your linux-next branch:
ba93c78 Merge branch 'pm-cpufreq-next' into linux-next
Thanks..
--
Viresh
Viresh Kumar (92):
cpufreq: define generic .attr, .exit() and .verify() routines
cpufreq: acpi: Use generic cpufreq routines
cpufreq: arm_big_little: Use generic cpufreq routines
cpufreq: at32ap: Use generic cpufreq routines
cpufreq: blackfin: Use generic cpufreq routines
cpufreq: cpu0: Use generic cpufreq routines
cpufreq: cris: Use generic cpufreq routines
cpufreq: davinci: Use generic cpufreq routines
cpufreq: dbx500: Use generic cpufreq routines
cpufreq: e_powersaver: Use generic cpufreq routines
cpufreq: elanfreq: Use generic cpufreq routines
cpufreq: exynos: Use generic cpufreq routines
cpufreq: ia64-acpi: Use generic cpufreq routines
cpufreq: imx6q: Use generic cpufreq routines
cpufreq: kirkwood: Use generic cpufreq routines
cpufreq: longhaul: Use generic cpufreq routines
cpufreq: loongson2: Use generic cpufreq routines
cpufreq: maple: Use generic cpufreq routines
cpufreq: omap: Use generic cpufreq routines
cpufreq: p4-clockmod: Use generic cpufreq routines
cpufreq: pasemi: Use generic cpufreq routines
cpufreq: pmac: Use generic cpufreq routines
cpufreq: powernow: Use generic cpufreq routines
cpufreq: ppc-corenet: Use generic cpufreq routines
cpufreq: ppc_cbe: Use generic cpufreq routines
cpufreq: pxa: Use generic cpufreq routines
cpufreq: s3cx4xx: Use generic cpufreq routines
cpufreq: s5pv210: Use generic cpufreq routines
cpufreq: sa11x0: Use generic cpufreq routines
cpufreq: sc520: Use generic cpufreq routines
cpufreq: sh: Use generic cpufreq routines
cpufreq: sparc: Use generic cpufreq routines
cpufreq: spear: Use generic cpufreq routines
cpufreq: speedstep: Use generic cpufreq routines
cpufreq: tegra: Use generic cpufreq routines
cpufreq: call cpufreq_driver->get() after calling ->init()
cpufreq: acpi: don't initialize part of policy that is set by core
too
cpufreq: arm_big_little: don't initialize part of policy that is set
by core too
cpufreq: at32ap: don't initialize part of policy that is set by core
too
cpufreq: blackfin: don't initialize part of policy that is set by
core too
cpufreq: cpu0: don't initialize part of policy that is set by core
too
cpufreq: nforce2: don't initialize part of policy that is set by core
too
cpufreq: cris: don't initialize part of policy that is set by core
too
cpufreq: davinci: don't initialize part of policy that is set by core
too
cpufreq: dbx500: don't initialize part of policy that is set by core
too
cpufreq: e_powersaver: don't initialize part of policy that is set by
core too
cpufreq: elanfreq: don't initialize part of policy that is set by
core too
cpufreq: exynos: don't initialize part of policy that is set by core
too
cpufreq: gx: don't initialize part of policy that is set by core too
cpufreq: ia64-acpi: don't initialize part of policy that is set by
core too
cpufreq: imx6q: don't initialize part of policy that is set by core
too
cpufreq: integrator: don't initialize part of policy that is set by
core too
cpufreq: kirkwood: don't initialize part of policy that is set by
core too
cpufreq: longhaul: don't initialize part of policy that is set by
core too
cpufreq: loongson2: don't initialize part of policy that is set by
core too
cpufreq: maple: don't initialize part of policy that is set by core
too
cpufreq: omap: don't initialize part of policy that is set by core
too
cpufreq: p4: don't initialize part of policy that is set by core too
cpufreq: pcc: don't initialize part of policy that is set by core too
cpufreq: pmac: don't initialize part of policy that is set by core
too
cpufreq: powernow: don't initialize part of policy that is set by
core too
cpufreq: ppc: don't initialize part of policy that is set by core too
cpufreq: pxa: don't initialize part of policy that is set by core too
cpufreq: s3c: don't initialize part of policy that is set by core too
cpufreq: s5pv210: don't initialize part of policy that is set by core
too
cpufreq: sa11x0: don't initialize part of policy that is set by core
too
cpufreq: sc520_freq: don't initialize part of policy that is set by
core too
cpufreq: sh: don't initialize part of policy that is set by core too
cpufreq: spear: don't initialize part of policy that is set by core
too
cpufreq: speedstep: don't initialize part of policy that is set by
core too
cpufreq: tegra: don't initialize part of policy that is set by core
too
cpufreq: unicore2: don't initialize part of policy that is set by
core too
cpufreq: create cpufreq_generic_init() routine
cpufreq: remove CONFIG_CPU_FREQ_TABLE
cpufreq: cpu0: use cpufreq_generic_init() routine
cpufreq: cris: use cpufreq_generic_init() routine
cpufreq: davinci: use cpufreq_generic_init() routine
cpufreq: dbx500: use cpufreq_generic_init() routine
cpufreq: exynos: use cpufreq_generic_init() routine
cpufreq: imx6q: use cpufreq_generic_init() routine
cpufreq: kirkwood: use cpufreq_generic_init() routine
cpufreq: loongson2: use cpufreq_generic_init() routine
cpufreq: maple: use cpufreq_generic_init() routine
cpufreq: omap: use cpufreq_generic_init() routine
cpufreq: pasemi: use cpufreq_generic_init() routine
cpufreq: pmac32: use cpufreq_generic_init() routine
cpufreq: pmac64: use cpufreq_generic_init() routine
cpufreq: s3c: use cpufreq_generic_init() routine
cpufreq: s5pv210: use cpufreq_generic_init() routine
cpufreq: sa11x0: use cpufreq_generic_init() routine
cpufreq: spear: use cpufreq_generic_init() routine
cpufreq: tegra: use cpufreq_generic_init() routine
arch/arm/mach-davinci/Kconfig | 1 - arch/arm/mach-pxa/Kconfig | 3 -- arch/arm/mach-sa1100/generic.c | 22 ------------ arch/arm/mach-sa1100/generic.h | 1 - arch/arm/mach-ux500/Kconfig | 1 - arch/blackfin/Kconfig | 1 - arch/cris/Kconfig | 2 -- drivers/cpufreq/Kconfig | 11 ------ drivers/cpufreq/Kconfig.arm | 11 ------ drivers/cpufreq/Kconfig.powerpc | 6 ---- drivers/cpufreq/Kconfig.x86 | 13 -------- drivers/cpufreq/Makefile | 5 +-- drivers/cpufreq/acpi-cpufreq.c | 12 +------ drivers/cpufreq/arm_big_little.c | 20 ++--------- drivers/cpufreq/at32ap-cpufreq.c | 24 +++---------- drivers/cpufreq/blackfin-cpufreq.c | 24 ++----------- drivers/cpufreq/cpufreq-cpu0.c | 43 +++--------------------- drivers/cpufreq/cpufreq-nforce2.c | 1 - drivers/cpufreq/cpufreq.c | 44 ++++++++++++++++++++++-- drivers/cpufreq/cris-artpec3-cpufreq.c | 30 +++-------------- drivers/cpufreq/cris-etraxfs-cpufreq.c | 28 +++------------- drivers/cpufreq/davinci-cpufreq.c | 27 ++------------- drivers/cpufreq/dbx500-cpufreq.c | 40 ++-------------------- drivers/cpufreq/e_powersaver.c | 16 ++------- drivers/cpufreq/elanfreq.c | 33 ++---------------- drivers/cpufreq/exynos-cpufreq.c | 32 +++--------------- drivers/cpufreq/exynos5440-cpufreq.c | 31 +++-------------- drivers/cpufreq/freq_table.c | 20 +++++++++++ drivers/cpufreq/gx-suspmod.c | 5 +-- drivers/cpufreq/ia64-acpi-cpufreq.c | 27 ++------------- drivers/cpufreq/imx6q-cpufreq.c | 36 +++----------------- drivers/cpufreq/integrator-cpufreq.c | 5 ++- drivers/cpufreq/kirkwood-cpufreq.c | 28 +++------------- drivers/cpufreq/longhaul.c | 24 ++----------- drivers/cpufreq/loongson2_cpufreq.c | 20 ++--------- drivers/cpufreq/maple-cpufreq.c | 24 ++----------- drivers/cpufreq/omap-cpufreq.c | 61 ++++++++-------------------------- drivers/cpufreq/p4-clockmod.c | 24 ++----------- drivers/cpufreq/pasemi-cpufreq.c | 23 ++----------- drivers/cpufreq/pcc-cpufreq.c | 7 ---- drivers/cpufreq/pmac32-cpufreq.c | 22 ++---------- drivers/cpufreq/pmac64-cpufreq.c | 24 ++----------- drivers/cpufreq/powernow-k6.c | 23 ++----------- drivers/cpufreq/powernow-k7.c | 16 ++------- drivers/cpufreq/powernow-k8.c | 23 ++----------- drivers/cpufreq/ppc-corenet-cpufreq.c | 19 ++--------- drivers/cpufreq/ppc_cbe_cpufreq.c | 15 ++------- drivers/cpufreq/pxa2xx-cpufreq.c | 29 ++-------------- drivers/cpufreq/pxa3xx-cpufreq.c | 22 +++--------- drivers/cpufreq/s3c2416-cpufreq.c | 27 +++------------ drivers/cpufreq/s3c24xx-cpufreq.c | 27 +-------------- drivers/cpufreq/s3c64xx-cpufreq.c | 17 ++-------- drivers/cpufreq/s5pv210-cpufreq.c | 16 ++------- drivers/cpufreq/sa1100-cpufreq.c | 9 ++--- drivers/cpufreq/sa1110-cpufreq.c | 9 ++--- drivers/cpufreq/sc520_freq.c | 25 ++------------ drivers/cpufreq/sh-cpufreq.c | 9 +---- drivers/cpufreq/sparc-us2e-cpufreq.c | 8 +---- drivers/cpufreq/sparc-us3-cpufreq.c | 8 +---- drivers/cpufreq/spear-cpufreq.c | 38 +++------------------ drivers/cpufreq/speedstep-centrino.c | 27 ++------------- drivers/cpufreq/speedstep-ich.c | 45 +++---------------------- drivers/cpufreq/speedstep-smi.c | 43 ++---------------------- drivers/cpufreq/tegra-cpufreq.c | 30 +++++++---------- drivers/cpufreq/unicore2-cpufreq.c | 1 - drivers/thermal/Kconfig | 1 - include/linux/cpufreq.h | 11 ++++++ 67 files changed, 226 insertions(+), 1104 deletions(-)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 1/92 cpufreq: define generic .attr, .exit() and .verify() routines
Most of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch introduces generic .attr, .exit() and .verify() cpufreq drivers.
--- drivers/cpufreq/freq_table.c | 20 ++++++++++++++++++++ include/linux/cpufreq.h | 8 ++++++++ 2 files changed, 28 insertions(+)
drivers/cpufreq/freq_table.c +20 -0
@@ -87,6 +87,20 @@ int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, }EXPORT_SYMBOL_GPL (cpufreq_frequency_table_verify); +/* +* Generic routine to verify policy & frequency table, requires driver to call +* cpufreq_frequency_table_get_attr() prior to it. +*/ +int cpufreq_generic_frequency_table_verify (struct cpufreq_policy *policy) +{ +struct cpufreq_frequency_table *table = +cpufreq_frequency_get_table (policy->cpu); +if (!table) +return -ENODEV ; + +return cpufreq_frequency_table_verify (policy, table); +} +EXPORT_SYMBOL_GPL (cpufreq_generic_frequency_table_verify); int cpufreq_frequency_table_target(struct cpufreq_policy *policy, struct cpufreq_frequency_table *table,
@@ -200,6 +214,12 @@ struct freq_attr cpufreq_freq_attr_scaling_available_freqs = { };EXPORT_SYMBOL_GPL (cpufreq_freq_attr_scaling_available_freqs); +struct freq_attr *cpufreq_generic_attr[] = { + &cpufreq_freq_attr_scaling_available_freqs, +NULL , +}; +EXPORT_SYMBOL_GPL (cpufreq_generic_attr); +/* * if you use these, you must assure that the frequency table is valid * all the time between get_attr and put_attr!
include/linux/cpufreq.h +8 -0
@@ -392,6 +392,7 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy,int cpufreq_frequency_table_verify (struct cpufreq_policy *policy,struct cpufreq_frequency_table *table); +int cpufreq_generic_frequency_table_verify (struct cpufreq_policy *policy); int cpufreq_frequency_table_target(struct cpufreq_policy *policy, struct cpufreq_frequency_table *table,
@@ -407,10 +408,17 @@ struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu);/* the following are really really optional */ extern struct freq_attr cpufreq_freq_attr_scaling_available_freqs; +extern struct freq_attr *cpufreq_generic_attr[];void cpufreq_frequency_table_get_attr (struct cpufreq_frequency_table *table,unsigned int cpu);void cpufreq_frequency_table_put_attr (unsigned int cpu);int cpufreq_table_validate_and_show (struct cpufreq_policy *policy,struct cpufreq_frequency_table *table); +static inline int cpufreq_generic_exit (struct cpufreq_policy *policy) +{ +cpufreq_frequency_table_put_attr (policy->cpu); +return 0 ; +} +#endif /* _LINUX_CPUFREQ_H */
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 2/92 cpufreq: acpi: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/acpi-cpufreq.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
drivers/cpufreq/acpi-cpufreq.c +1 -10
@@ -516,15 +516,6 @@ out:return result; } -static int acpi_cpufreq_verify (struct cpufreq_policy *policy) -{ -struct acpi_cpufreq_data *data =per_cpu (acfreq_data, policy->cpu); - -pr_debug ("acpi_cpufreq_verify\n" ); - -return cpufreq_frequency_table_verify (policy, data->freq_table); -} -static unsigned long acpi_cpufreq_guess_freq (struct acpi_cpufreq_data *data,unsigned int cpu) {
@@ -927,7 +918,7 @@ static struct freq_attr *acpi_cpufreq_attr[] = { };static struct cpufreq_driver acpi_cpufreq_driver = { - .verify = acpi_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = acpi_cpufreq_target, .bios_limit = acpi_processor_get_bios_limit, .init = acpi_cpufreq_cpu_init,
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 3/92 cpufreq: arm_big_little: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/arm_big_little.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-)
drivers/cpufreq/arm_big_little.c +2 -16
@@ -47,14 +47,6 @@ static unsigned int bL_cpufreq_get(unsigned int cpu)return clk_get_rate (clk[cur_cluster]) /1000 ; } -/* Validate policy frequency range */ -static int bL_cpufreq_verify_policy (struct cpufreq_policy *policy) -{ -u32 cur_cluster =cpu_to_cluster (policy->cpu); - -return cpufreq_frequency_table_verify (policy, freq_table[cur_cluster]); -} -/* Set clock frequency */ static int bL_cpufreq_set_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -205,22 +197,16 @@ static int bL_cpufreq_exit(struct cpufreq_policy *policy)return 0 ; } -/* Export freq_table to sysfs */ -static struct freq_attr *bL_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver bL_cpufreq_driver = { .name ="arm-big-little" , .flags =CPUFREQ_STICKY , - .verify = bL_cpufreq_verify_policy, + .verify = cpufreq_generic_frequency_table_verify, .target = bL_cpufreq_set_target, .get = bL_cpufreq_get, .init = bL_cpufreq_init, .exit = bL_cpufreq_exit, .have_governor_per_policy = true, - .attr = bL_cpufreq_attr, + .attr = cpufreq_generic_attr, };int bL_cpufreq_register (struct cpufreq_arm_bL_ops *ops)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 4/92 cpufreq: at32ap: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/at32ap-cpufreq.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
drivers/cpufreq/at32ap-cpufreq.c +1 -11
@@ -24,16 +24,6 @@static struct clk *cpuclk;static struct cpufreq_frequency_table *freq_table; -static int at32_verify_speed (struct cpufreq_policy *policy) -{ -if (policy->cpu !=0 ) -return -EINVAL ; - -cpufreq_verify_within_limits (policy, policy->cpuinfo.min_freq, - policy->cpuinfo.max_freq); -return 0 ; -} -static unsigned int at32_get_speed (unsigned int cpu) {/* No SMP support */
@@ -152,7 +142,7 @@ out_err:static struct cpufreq_driver at32_driver = { .name ="at32ap" , .init = at32_cpufreq_driver_init, - .verify = at32_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = at32_set_target, .get = at32_get_speed, .flags =CPUFREQ_STICKY ,
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 5/92 cpufreq: blackfin: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/blackfin-cpufreq.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-)
drivers/cpufreq/blackfin-cpufreq.c +3 -20
@@ -191,11 +191,6 @@ static int bfin_target(struct cpufreq_policy *policy,return ret; } -static int bfin_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, bfin_freq_table); -} -static int __bfin_cpu_init (struct cpufreq_policy *policy) {
@@ -213,26 +208,14 @@ static int __bfin_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, bfin_freq_table); } -static int __bfin_cpu_exit (struct cpufreq_policy *policy) -{ - -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *bfin_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver bfin_driver = { - .verify = bfin_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = bfin_target, .get = bfin_getfreq_khz, .init = __bfin_cpu_init, - .exit = __bfin_cpu_exit, + .exit = cpufreq_generic_exit, .name ="bfin cpufreq" , - .attr = bfin_freq_attr, + .attr = cpufreq_generic_attr, };static int __init bfin_cpu_init (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 6/92 cpufreq: cpu0: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/cpufreq-cpu0.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-)
drivers/cpufreq/cpufreq-cpu0.c +3 -20
@@ -30,11 +30,6 @@ static struct clk *cpu_clk;static struct regulator *cpu_reg;static struct cpufreq_frequency_table *freq_table; -static int cpu0_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, freq_table); -} -static unsigned int cpu0_get_speed (unsigned int cpu) {return clk_get_rate (cpu_clk) /1000 ;
@@ -148,27 +143,15 @@ static int cpu0_cpufreq_init(struct cpufreq_policy *policy)return 0 ; } -static int cpu0_cpufreq_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); - -return 0 ; -} - -static struct freq_attr *cpu0_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver cpu0_cpufreq_driver = { .flags =CPUFREQ_STICKY , - .verify = cpu0_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = cpu0_set_target, .get = cpu0_get_speed, .init = cpu0_cpufreq_init, - .exit = cpu0_cpufreq_exit, + .exit = cpufreq_generic_exit, .name ="generic_cpu0" , - .attr = cpu0_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int cpu0_cpufreq_probe (struct platform_device *pdev)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 7/92 cpufreq: cris: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/cris-artpec3-cpufreq.c | 23 +++-------------------- drivers/cpufreq/cris-etraxfs-cpufreq.c | 22 +++------------------- 2 files changed, 6 insertions(+), 39 deletions(-)
drivers/cpufreq/cris-artpec3-cpufreq.c +3 -20
@@ -54,11 +54,6 @@ static void cris_freq_set_cpu_state(struct cpufreq_policy *policy,cpufreq_notify_transition (policy, &freqs,CPUFREQ_POSTCHANGE ); }; -static int cris_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &cris_freq_table[0 ]); -} -static int cris_freq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -84,26 +79,14 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy) } -static int cris_freq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - - -static struct freq_attr *cris_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver cris_freq_driver = { .get = cris_freq_get_cpu_frequency, - .verify = cris_freq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = cris_freq_target, .init = cris_freq_cpu_init, - .exit = cris_freq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="cris_freq" , - .attr = cris_freq_attr, + .attr = cpufreq_generic_attr, };static int __init cris_freq_init (void )
drivers/cpufreq/cris-etraxfs-cpufreq.c +3 -19
@@ -54,11 +54,6 @@ static void cris_freq_set_cpu_state(struct cpufreq_policy *policy,cpufreq_notify_transition (policy, &freqs,CPUFREQ_POSTCHANGE ); }; -static int cris_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &cris_freq_table[0 ]); -} -static int cris_freq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation) {
@@ -82,25 +77,14 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, cris_freq_table); } -static int cris_freq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *cris_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver cris_freq_driver = { .get = cris_freq_get_cpu_frequency, - .verify = cris_freq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = cris_freq_target, .init = cris_freq_cpu_init, - .exit = cris_freq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="cris_freq" , - .attr = cris_freq_attr, + .attr = cpufreq_generic_attr, };static int __init cris_freq_init (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Re: [PATCH V2 Resend 07/92] cpufreq: cris: Use generic cpufreq routines
Quoted 5 lines · Viresh Kumar
Most of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
You should already have gotten my Acked-by: for this series, but here it is again:
Quoted 101 lines
Cc Mikael Starvik <[email protected]>Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/cris-artpec3-cpufreq.c | 23 +++-------------------- drivers/cpufreq/cris-etraxfs-cpufreq.c | 22 +++------------------- 2 files changed, 6 insertions(+), 39 deletions(-)drivers/cpufreq/cris-artpec3-cpufreq.c +3
-20@@ -54,11 +54,6 @@ static void cris_freq_set_cpu_state(struct cpufreq_policy *policy,cpufreq_notify_transition (policy, &freqs,CPUFREQ_POSTCHANGE ); }; -static int cris_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &cris_freq_table[0 ]); -} -static int cris_freq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)@@ -84,26 +79,14 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy) } -static int cris_freq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - - -static struct freq_attr *cris_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver cris_freq_driver = { .get = cris_freq_get_cpu_frequency, - .verify = cris_freq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = cris_freq_target, .init = cris_freq_cpu_init, - .exit = cris_freq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="cris_freq" , - .attr = cris_freq_attr, + .attr = cpufreq_generic_attr, };static int __init cris_freq_init (void )drivers/cpufreq/cris-etraxfs-cpufreq.c +3
-19@@ -54,11 +54,6 @@ static void cris_freq_set_cpu_state(struct cpufreq_policy *policy,cpufreq_notify_transition (policy, &freqs,CPUFREQ_POSTCHANGE ); }; -static int cris_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &cris_freq_table[0 ]); -} -static int cris_freq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation) {@@ -82,25 +77,14 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, cris_freq_table); } -static int cris_freq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *cris_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver cris_freq_driver = { .get = cris_freq_get_cpu_frequency, - .verify = cris_freq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = cris_freq_target, .init = cris_freq_cpu_init, - .exit = cris_freq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="cris_freq" , - .attr = cris_freq_attr, + .attr = cpufreq_generic_attr, };static int __init cris_freq_init (void )Signature · 1 line
1.7.12.rc2.18.g61b472e
/^JN - Jesper Nilsson
Signature · 1 line
Jesper Nilsson -- [email protected]
Viresh Kumar
maintainerRe: [PATCH V2 Resend 07/92] cpufreq: cris: Use generic cpufreq routines
Quoted 8 lines · Jesper Nilsson
Quoted 5 lines · Viresh Kumar
Most of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
You should already have gotten my Acked-by: for this series, but here it is again:
Yeah.. So sorry for missing those :(
Viresh Kumar
maintainerPATCH RESEND v2 8/92 cpufreq: davinci: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/davinci-cpufreq.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
drivers/cpufreq/davinci-cpufreq.c +2 -13
@@ -157,26 +157,15 @@ static int davinci_cpu_init(struct cpufreq_policy *policy)return 0 ; } -static int davinci_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *davinci_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver davinci_driver = { .flags =CPUFREQ_STICKY , .verify = davinci_verify_speed, .target = davinci_target, .get = davinci_getspeed, .init = davinci_cpu_init, - .exit = davinci_cpu_exit, + .exit = cpufreq_generic_exit, .name ="davinci" , - .attr = davinci_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int __init davinci_cpufreq_probe (struct platform_device *pdev)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 9/92 cpufreq: dbx500: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/dbx500-cpufreq.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
drivers/cpufreq/dbx500-cpufreq.c +2 -12
@@ -19,16 +19,6 @@static struct cpufreq_frequency_table *freq_table;static struct clk *armss_clk; -static struct freq_attr *dbx500_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; - -static int dbx500_cpufreq_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, freq_table); -} -static int dbx500_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -113,12 +103,12 @@ static int dbx500_cpufreq_init(struct cpufreq_policy *policy)static struct cpufreq_driver dbx500_cpufreq_driver = { .flags =CPUFREQ_STICKY |CPUFREQ_CONST_LOOPS , - .verify = dbx500_cpufreq_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = dbx500_cpufreq_target, .get = dbx500_cpufreq_getspeed, .init = dbx500_cpufreq_init, .name ="DBX500" , - .attr = dbx500_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int dbx500_cpufreq_probe (struct platform_device *pdev)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 10/92 cpufreq: e_powersaver: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/e_powersaver.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
drivers/cpufreq/e_powersaver.c +2 -13
@@ -198,12 +198,6 @@ static int eps_target(struct cpufreq_policy *policy,return ret; } -static int eps_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, - &eps_cpu[policy->cpu]->freq_table[0 ]); -} -static int eps_cpu_init (struct cpufreq_policy *policy) {unsigned int i;
@@ -423,19 +417,14 @@ static int eps_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static struct freq_attr *eps_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver eps_driver = { - .verify = eps_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = eps_target, .init = eps_cpu_init, .exit = eps_cpu_exit, .get = eps_get, .name ="e_powersaver" , - .attr = eps_attr, + .attr = cpufreq_generic_attr, };
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 11/92 cpufreq: elanfreq: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/elanfreq.c | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-)
drivers/cpufreq/elanfreq.c +3 -29
@@ -165,19 +165,6 @@ static void elanfreq_set_cpu_state(struct cpufreq_policy *policy, }; -/** -* elanfreq_validatespeed: test if frequency range is valid -* @policy: the policy to validate -* -* This function checks if a given frequency range in kHz is valid -* for the hardware supported by the driver. -*/ - -static int elanfreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &elanfreq_table[0 ]); -} -static int elanfreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -226,13 +213,6 @@ static int elanfreq_cpu_init(struct cpufreq_policy *policy) } -static int elanfreq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -#ifndef MODULE /** * elanfreq_setup - elanfreq command line parameter parsing
@@ -255,20 +235,14 @@ __setup("elanfreq=", elanfreq_setup);#endif -static struct freq_attr *elanfreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; - -static struct cpufreq_driver elanfreq_driver = { .get = elanfreq_get_cpu_frequency, - .verify = elanfreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = elanfreq_target, .init = elanfreq_cpu_init, - .exit = elanfreq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="elanfreq" , - .attr = elanfreq_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id elan_id[] = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 12/92 cpufreq: exynos: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/exynos-cpufreq.c | 23 +++-------------------- drivers/cpufreq/exynos5440-cpufreq.c | 16 ++-------------- 2 files changed, 5 insertions(+), 34 deletions(-)
drivers/cpufreq/exynos-cpufreq.c +3 -20
@@ -31,12 +31,6 @@ static unsigned int locking_frequency;static bool frequency_locked;static DEFINE_MUTEX (cpufreq_lock); -static int exynos_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, - exynos_info->freq_table); -} -static unsigned int exynos_getspeed (unsigned int cpu) {return clk_get_rate (exynos_info->cpu_clk) /1000 ;
@@ -257,26 +251,15 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, exynos_info->freq_table); } -static int exynos_cpufreq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *exynos_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver exynos_driver = { .flags =CPUFREQ_STICKY , - .verify = exynos_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = exynos_target, .get = exynos_getspeed, .init = exynos_cpufreq_cpu_init, - .exit = exynos_cpufreq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="exynos_cpufreq" , - .attr = exynos_cpufreq_attr, + .attr = cpufreq_generic_attr, #ifdef CONFIG_PM .suspend = exynos_cpufreq_suspend, .resume = exynos_cpufreq_resume,
drivers/cpufreq/exynos5440-cpufreq.c +2 -14
@@ -209,12 +209,6 @@ static void exynos_enable_dvfs(void) dvfs_info->base + XMU_DVFS_CTRL); } -static int exynos_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, - dvfs_info->freq_table); -} -static unsigned int exynos_getspeed (unsigned int cpu) {return dvfs_info->cur_frequency;
@@ -339,19 +333,13 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)return 0 ; } -static int exynos_cpufreq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} -static struct cpufreq_driver exynos_driver = { .flags =CPUFREQ_STICKY , - .verify = exynos_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = exynos_target, .get = exynos_getspeed, .init = exynos_cpufreq_cpu_init, - .exit = exynos_cpufreq_cpu_exit, + .exit = cpufreq_generic_exit, .name =CPUFREQ_NAME , };
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 13/92 cpufreq: ia64-acpi: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/ia64-acpi-cpufreq.c | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-)
drivers/cpufreq/ia64-acpi-cpufreq.c +2 -24
@@ -248,22 +248,6 @@ acpi_cpufreq_target (static int -acpi_cpufreq_verify ( -struct cpufreq_policy *policy) -{ -unsigned int result =0 ; -struct cpufreq_acpi_io *data = acpi_io_data[policy->cpu]; - -pr_debug ("acpi_cpufreq_verify\n" ); - - result =cpufreq_frequency_table_verify (policy, - data->freq_table); - -return (result); -} - - -static int acpi_cpufreq_cpu_init (struct cpufreq_policy *policy) {
@@ -394,20 +378,14 @@ acpi_cpufreq_cpu_exit ( } -static struct freq_attr * acpi_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; - -static struct cpufreq_driver acpi_cpufreq_driver = { - .verify = acpi_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = acpi_cpufreq_target, .get = acpi_cpufreq_get, .init = acpi_cpufreq_cpu_init, .exit = acpi_cpufreq_cpu_exit, .name ="acpi-cpufreq" , - .attr = acpi_cpufreq_attr, + .attr = cpufreq_generic_attr, };
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 14/92 cpufreq: imx6q: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/imx6q-cpufreq.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-)
drivers/cpufreq/imx6q-cpufreq.c +3 -19
@@ -35,11 +35,6 @@ static struct device *cpu_dev;static struct cpufreq_frequency_table *freq_table;static unsigned int transition_latency; -static int imx6q_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, freq_table); -} -static unsigned int imx6q_get_speed (unsigned int cpu) {return clk_get_rate (arm_clk) /1000 ;
@@ -174,25 +169,14 @@ static int imx6q_cpufreq_init(struct cpufreq_policy *policy)return 0 ; } -static int imx6q_cpufreq_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *imx6q_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver imx6q_cpufreq_driver = { - .verify = imx6q_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = imx6q_set_target, .get = imx6q_get_speed, .init = imx6q_cpufreq_init, - .exit = imx6q_cpufreq_exit, + .exit = cpufreq_generic_exit, .name ="imx6q-cpufreq" , - .attr = imx6q_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int imx6q_cpufreq_probe (struct platform_device *pdev)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 15/92 cpufreq: kirkwood: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/kirkwood-cpufreq.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-)
drivers/cpufreq/kirkwood-cpufreq.c +3 -19
@@ -102,11 +102,6 @@ static void kirkwood_cpufreq_set_cpu_state(struct cpufreq_policy *policy,cpufreq_notify_transition (policy, &freqs,CPUFREQ_POSTCHANGE ); }; -static int kirkwood_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, kirkwood_freq_table); -} -static int kirkwood_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -132,25 +127,14 @@ static int kirkwood_cpufreq_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, kirkwood_freq_table); } -static int kirkwood_cpufreq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *kirkwood_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver kirkwood_cpufreq_driver = { .get = kirkwood_cpufreq_get_cpu_frequency, - .verify = kirkwood_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = kirkwood_cpufreq_target, .init = kirkwood_cpufreq_cpu_init, - .exit = kirkwood_cpufreq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="kirkwood-cpufreq" , - .attr = kirkwood_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int kirkwood_cpufreq_probe (struct platform_device *pdev)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 16/92 cpufreq: longhaul: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/longhaul.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-)
drivers/cpufreq/longhaul.c +3 -20
@@ -625,12 +625,6 @@ static void longhaul_setup_voltagescaling(void) } -static int longhaul_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, longhaul_table); -} - -static int longhaul_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation) {
@@ -924,25 +918,14 @@ static int longhaul_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, longhaul_table); } -static int longhaul_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *longhaul_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver longhaul_driver = { - .verify = longhaul_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = longhaul_target, .get = longhaul_get, .init = longhaul_cpu_init, - .exit = longhaul_cpu_exit, + .exit = cpufreq_generic_exit, .name ="longhaul" , - .attr = longhaul_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id longhaul_id[] = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 17/92 cpufreq: loongson2: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/loongson2_cpufreq.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
drivers/cpufreq/loongson2_cpufreq.c +2 -13
@@ -137,12 +137,6 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy) &loongson2_clockmod_table[0]); } -static int loongson2_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, - &loongson2_clockmod_table[0 ]); -} -static int loongson2_cpufreq_exit (struct cpufreq_policy *policy) {cpufreq_frequency_table_put_attr (policy->cpu);
@@ -150,19 +144,14 @@ static int loongson2_cpufreq_exit(struct cpufreq_policy *policy)return 0 ; } -static struct freq_attr *loongson2_table_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver loongson2_cpufreq_driver = { .name ="loongson2" , .init = loongson2_cpufreq_cpu_init, - .verify = loongson2_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = loongson2_cpufreq_target, .get = loongson2_cpufreq_get, .exit = loongson2_cpufreq_exit, - .attr = loongson2_table_attr, + .attr = cpufreq_generic_attr, };static struct platform_device_id platform_device_ids[] = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 18/92 cpufreq: maple: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/maple-cpufreq.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
drivers/cpufreq/maple-cpufreq.c +2 -12
@@ -64,11 +64,6 @@ static struct cpufreq_frequency_table maple_cpu_freqs[] = { {0, CPUFREQ_TABLE_END}, }; -static struct freq_attr *maple_cpu_freqs_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -/* Power mode data is an array of the 32 bits PCR values to use for * the various frequencies, retrieved from the device-tree */
@@ -135,11 +130,6 @@ static int maple_scom_query_freq(void)* Common interface to the cpufreq core */ -static int maple_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, maple_cpu_freqs); -} -static int maple_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation) {
@@ -190,10 +180,10 @@ static struct cpufreq_driver maple_cpufreq_driver = { .name = "maple", .flags = CPUFREQ_CONST_LOOPS, .init = maple_cpufreq_cpu_init, - .verify = maple_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = maple_cpufreq_target, .get = maple_cpufreq_get_speed, - .attr = maple_cpu_freqs_attr, + .attr = cpufreq_generic_attr, };static int __init maple_cpufreq_init (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 19/92 cpufreq: omap: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/omap-cpufreq.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-)
drivers/cpufreq/omap-cpufreq.c +2 -14
@@ -40,13 +40,6 @@ static struct clk *mpu_clk;static struct device *mpu_dev;static struct regulator *mpu_reg; -static int omap_verify_speed (struct cpufreq_policy *policy) -{ -if (!freq_table) -return -EINVAL ; -return cpufreq_frequency_table_verify (policy, freq_table); -} -static unsigned int omap_getspeed (unsigned int cpu) {unsigned long rate;
@@ -227,20 +220,15 @@ static int omap_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static struct freq_attr *omap_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver omap_driver = { .flags =CPUFREQ_STICKY , - .verify = omap_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = omap_target, .get = omap_getspeed, .init = omap_cpu_init, .exit = omap_cpu_exit, .name ="omap" , - .attr = omap_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int omap_cpufreq_probe (struct platform_device *pdev)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 20/92 cpufreq: p4-clockmod: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/p4-clockmod.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-)
drivers/cpufreq/p4-clockmod.c +3 -20
@@ -140,12 +140,6 @@ static int cpufreq_p4_target(struct cpufreq_policy *policy, } -static int cpufreq_p4_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &p4clockmod_table[0 ]); -} - -static unsigned int cpufreq_p4_get_frequency (struct cpuinfo_x86 *c) {if (c->x86 ==0x06 ) {
@@ -242,12 +236,6 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy) } -static int cpufreq_p4_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} -static unsigned int cpufreq_p4_get (unsigned int cpu) {u32 l, h;
@@ -266,19 +254,14 @@ static unsigned int cpufreq_p4_get(unsigned int cpu)return stock_freq; } -static struct freq_attr *p4clockmod_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver p4clockmod_driver = { - .verify = cpufreq_p4_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = cpufreq_p4_target, .init = cpufreq_p4_cpu_init, - .exit = cpufreq_p4_cpu_exit, + .exit = cpufreq_generic_exit, .get = cpufreq_p4_get, .name ="p4-clockmod" , - .attr = p4clockmod_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id cpufreq_p4_id[] = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 21/92 cpufreq: pasemi: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/pasemi-cpufreq.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
drivers/cpufreq/pasemi-cpufreq.c +2 -12
@@ -69,11 +69,6 @@ static struct cpufreq_frequency_table pas_freqs[] = { {0, CPUFREQ_TABLE_END}, }; -static struct freq_attr *pas_cpu_freqs_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -/* * hardware specific functions */
@@ -251,11 +246,6 @@ static int pas_cpufreq_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static int pas_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, pas_freqs); -} -static int pas_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -298,9 +288,9 @@ static struct cpufreq_driver pas_cpufreq_driver = { .flags = CPUFREQ_CONST_LOOPS, .init = pas_cpufreq_cpu_init, .exit = pas_cpufreq_cpu_exit, - .verify = pas_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = pas_cpufreq_target, - .attr = pas_cpu_freqs_attr, + .attr = cpufreq_generic_attr, };/*
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 22/92 cpufreq: pmac: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/pmac32-cpufreq.c | 14 ++------------ drivers/cpufreq/pmac64-cpufreq.c | 14 ++------------ 2 files changed, 4 insertions(+), 24 deletions(-)
drivers/cpufreq/pmac32-cpufreq.c +2 -12
@@ -86,11 +86,6 @@ static struct cpufreq_frequency_table pmac_cpu_freqs[] = { {0, CPUFREQ_TABLE_END}, }; -static struct freq_attr * pmac_cpu_freqs_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static inline void local_delay (unsigned long ms) {if (no_schedule)
@@ -378,11 +373,6 @@ static unsigned int pmac_cpufreq_get_speed(unsigned int cpu)return cur_freq; } -static int pmac_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, pmac_cpu_freqs); -} -static int pmac_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -468,14 +458,14 @@ static int pmac_cpufreq_resume(struct cpufreq_policy *policy) }static struct cpufreq_driver pmac_cpufreq_driver = { - .verify = pmac_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = pmac_cpufreq_target, .get = pmac_cpufreq_get_speed, .init = pmac_cpufreq_cpu_init, .suspend = pmac_cpufreq_suspend, .resume = pmac_cpufreq_resume, .flags =CPUFREQ_PM_NO_WARN , - .attr = pmac_cpu_freqs_attr, + .attr = cpufreq_generic_attr, .name ="powermac" , };
drivers/cpufreq/pmac64-cpufreq.c +2 -12
@@ -70,11 +70,6 @@ static struct cpufreq_frequency_table g5_cpu_freqs[] = { {0, CPUFREQ_TABLE_END}, }; -static struct freq_attr * g5_cpu_freqs_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -/* Power mode data is an array of the 32 bits PCR values to use for * the various frequencies, retrieved from the device-tree */
@@ -317,11 +312,6 @@ static int g5_pfunc_query_freq(void)* Common interface to the cpufreq core */ -static int g5_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, g5_cpu_freqs); -} -static int g5_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation) {
@@ -372,10 +362,10 @@ static struct cpufreq_driver g5_cpufreq_driver = { .name = "powermac", .flags = CPUFREQ_CONST_LOOPS, .init = g5_cpufreq_cpu_init, - .verify = g5_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = g5_cpufreq_target, .get = g5_cpufreq_get_speed, - .attr = g5_cpu_freqs_attr, + .attr = cpufreq_generic_attr, };
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 23/92 cpufreq: powernow: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/powernow-k6.c | 22 ++-------------------- drivers/cpufreq/powernow-k7.c | 14 ++------------ drivers/cpufreq/powernow-k8.c | 20 ++------------------ 3 files changed, 6 insertions(+), 50 deletions(-)
drivers/cpufreq/powernow-k6.c +2 -20
@@ -105,19 +105,6 @@ static void powernow_k6_set_state(struct cpufreq_policy *policy,/** -* powernow_k6_verify - verifies a new CPUfreq policy -* @policy: new policy -* -* Policy must be within lowest and highest possible CPU Frequency, -* and at least one possible state must be within min and max. -*/ -static int powernow_k6_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &clock_ratio[0 ]); -} - - -/** * powernow_k6_setpolicy - sets a new CPUFreq policy * @policy: new policy * @target_freq: the target frequency
@@ -188,19 +175,14 @@ static unsigned int powernow_k6_get(unsigned int cpu)return ret; } -static struct freq_attr *powernow_k6_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver powernow_k6_driver = { - .verify = powernow_k6_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = powernow_k6_target, .init = powernow_k6_cpu_init, .exit = powernow_k6_cpu_exit, .get = powernow_k6_get, .name ="powernow-k6" , - .attr = powernow_k6_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id powernow_k6_ids[] = {
drivers/cpufreq/powernow-k7.c +2 -12
@@ -549,11 +549,6 @@ static int powernow_target(struct cpufreq_policy *policy, } -static int powernow_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, powernow_table); -} -/* * We use the fact that the bus frequency is somehow * a multiple of 100000/3 khz, then we compute sgtc according
@@ -699,13 +694,8 @@ static int powernow_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static struct freq_attr *powernow_table_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver powernow_driver = { - .verify = powernow_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = powernow_target, .get = powernow_get, #ifdef CONFIG_X86_POWERNOW_K7_ACPI
@@ -714,7 +704,7 @@ static struct cpufreq_driver powernow_driver = { .init = powernow_cpu_init, .exit = powernow_cpu_exit, .name = "powernow-k7", - .attr = powernow_table_attr, + .attr = cpufreq_generic_attr, };static int __init powernow_init (void )
drivers/cpufreq/powernow-k8.c +2 -18
@@ -1053,17 +1053,6 @@ static int powernowk8_target(struct cpufreq_policy *pol,return work_on_cpu (pol->cpu, powernowk8_target_fn, &pta); } -/* Driver entry point to verify the policy and range of frequencies */ -static int powernowk8_verify (struct cpufreq_policy *pol) -{ -struct powernow_k8_data *data =per_cpu (powernow_data, pol->cpu); - -if (!data) -return -EINVAL ; - -return cpufreq_frequency_table_verify (pol, data->powernow_table); -} -struct init_on_cpu {struct powernow_k8_data *data;int rc;
@@ -1225,20 +1214,15 @@ out:return khz; } -static struct freq_attr *powernow_k8_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver cpufreq_amd64_driver = { - .verify = powernowk8_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = powernowk8_target, .bios_limit = acpi_processor_get_bios_limit, .init = powernowk8_cpu_init, .exit = powernowk8_cpu_exit, .get = powernowk8_get, .name ="powernow-k8" , - .attr = powernow_k8_attr, + .attr = cpufreq_generic_attr, };static void __request_acpi_cpufreq (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 24/92 cpufreq: ppc-corenet: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/ppc-corenet-cpufreq.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-)
drivers/cpufreq/ppc-corenet-cpufreq.c +2 -15
@@ -252,14 +252,6 @@ static int __exit corenet_cpufreq_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static int corenet_cpufreq_verify (struct cpufreq_policy *policy) -{ -struct cpufreq_frequency_table *table = -per_cpu (cpu_data, policy->cpu)->table; - -return cpufreq_frequency_table_verify (policy, table); -} -static int corenet_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation) {
@@ -292,20 +284,15 @@ static int corenet_cpufreq_target(struct cpufreq_policy *policy,return ret; } -static struct freq_attr *corenet_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver ppc_corenet_cpufreq_driver = { .name ="ppc_cpufreq" , .flags =CPUFREQ_CONST_LOOPS , .init = corenet_cpufreq_cpu_init, .exit =__exit_p (corenet_cpufreq_cpu_exit), - .verify = corenet_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = corenet_cpufreq_target, .get = corenet_cpufreq_get_speed, - .attr = corenet_cpufreq_attr, + .attr = cpufreq_generic_attr, };static const struct of_device_id node_matches[]__initdata = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 25/92 cpufreq: ppc_cbe: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/ppc_cbe_cpufreq.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-)
drivers/cpufreq/ppc_cbe_cpufreq.c +2 -13
@@ -128,17 +128,6 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, cbe_freqs); } -static int cbe_cpufreq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static int cbe_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, cbe_freqs); -} -static int cbe_cpufreq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -174,10 +163,10 @@ static int cbe_cpufreq_target(struct cpufreq_policy *policy, }static struct cpufreq_driver cbe_cpufreq_driver = { - .verify = cbe_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = cbe_cpufreq_target, .init = cbe_cpufreq_cpu_init, - .exit = cbe_cpufreq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="cbe-cpufreq" , .flags =CPUFREQ_CONST_LOOPS , };
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 26/92 cpufreq: pxa: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/pxa2xx-cpufreq.c | 27 ++------------------------- drivers/cpufreq/pxa3xx-cpufreq.c | 15 ++------------- 2 files changed, 4 insertions(+), 38 deletions(-)
drivers/cpufreq/pxa2xx-cpufreq.c +2 -25
@@ -262,23 +262,6 @@ static u32 mdrefr_dri(unsigned int freq)return (interval - (cpu_is_pxa27x () ?31 :0 )) /32 ; } -/* find a valid frequency point */ -static int pxa_verify_policy (struct cpufreq_policy *policy) -{ -struct cpufreq_frequency_table *pxa_freqs_table; -pxa_freqs_t *pxa_freqs; -int ret; - -find_freq_tables (&pxa_freqs_table, &pxa_freqs); - ret =cpufreq_frequency_table_verify (policy, pxa_freqs_table); - -if (freq_debug) -pr_debug ("Verified CPU policy: %dKhz min to %dKhz max\n" , - policy->min, policy->max); - -return ret; -} -static unsigned int pxa_cpufreq_get (unsigned int cpu) {return get_clk_frequency_khz (0 );
@@ -465,17 +448,11 @@ static int pxa_cpufreq_init(struct cpufreq_policy *policy)return 0 ; } -static int pxa_cpufreq_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} -static struct cpufreq_driver pxa_cpufreq_driver = { - .verify = pxa_verify_policy, + .verify = cpufreq_generic_frequency_table_verify, .target = pxa_set_target, .init = pxa_cpufreq_init, - .exit = pxa_cpufreq_exit, + .exit = cpufreq_generic_exit, .get = pxa_cpufreq_get, .name ="PXA2xx" , };
drivers/cpufreq/pxa3xx-cpufreq.c +2 -13
@@ -150,11 +150,6 @@ static void __update_bus_freq(struct pxa3xx_freq_info *info)cpu_relax (); } -static int pxa3xx_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, pxa3xx_freqs_table); -} -static unsigned int pxa3xx_cpufreq_get (unsigned int cpu) {return pxa3xx_get_clk_frequency_khz (0 );
@@ -229,17 +224,11 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)return 0 ; } -static int pxa3xx_cpufreq_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} -static struct cpufreq_driver pxa3xx_cpufreq_driver = { - .verify = pxa3xx_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = pxa3xx_cpufreq_set, .init = pxa3xx_cpufreq_init, - .exit = pxa3xx_cpufreq_exit, + .exit = cpufreq_generic_exit, .get = pxa3xx_cpufreq_get, .name ="pxa3xx-cpufreq" , };
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 27/92 cpufreq: s3cx4xx: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/s3c2416-cpufreq.c | 19 ++----------------- drivers/cpufreq/s3c24xx-cpufreq.c | 9 --------- drivers/cpufreq/s3c64xx-cpufreq.c | 10 +--------- 3 files changed, 3 insertions(+), 35 deletions(-)
drivers/cpufreq/s3c2416-cpufreq.c +2 -17
@@ -87,16 +87,6 @@ static struct cpufreq_frequency_table s3c2450_freq_table[] = { { 0, CPUFREQ_TABLE_END }, }; -static int s3c2416_cpufreq_verify_speed (struct cpufreq_policy *policy) -{ -struct s3c2416_data *s3c_freq = &s3c2416_cpufreq; - -if (policy->cpu !=0 ) -return -EINVAL ; - -return cpufreq_frequency_table_verify (policy, s3c_freq->freq_table); -} -static unsigned int s3c2416_cpufreq_get_speed (unsigned int cpu) {struct s3c2416_data *s3c_freq = &s3c2416_cpufreq;
@@ -516,19 +506,14 @@ err_hclk:return ret; } -static struct freq_attr *s3c2416_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver s3c2416_cpufreq_driver = { .flags =0 , - .verify = s3c2416_cpufreq_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = s3c2416_cpufreq_set_target, .get = s3c2416_cpufreq_get_speed, .init = s3c2416_cpufreq_driver_init, .name ="s3c2416" , - .attr = s3c2416_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int __init s3c2416_cpufreq_init (void )
drivers/cpufreq/s3c24xx-cpufreq.c +0 -9
@@ -416,14 +416,6 @@ static int __init s3c_cpufreq_initclks(void)return 0 ; } -static int s3c_cpufreq_verify (struct cpufreq_policy *policy) -{ -if (policy->cpu !=0 ) -return -EINVAL ; - -return 0 ; -} -#ifdef CONFIG_PM static struct cpufreq_frequency_table suspend_pll;static unsigned int suspend_freq;
@@ -473,7 +465,6 @@ static int s3c_cpufreq_resume(struct cpufreq_policy *policy)static struct cpufreq_driver s3c24xx_driver = { .flags =CPUFREQ_STICKY , - .verify = s3c_cpufreq_verify, .target = s3c_cpufreq_target, .get = s3c_cpufreq_get, .init = s3c_cpufreq_init,
drivers/cpufreq/s3c64xx-cpufreq.c +1 -9
@@ -54,14 +54,6 @@ static struct cpufreq_frequency_table s3c64xx_freq_table[] = { };#endif -static int s3c64xx_cpufreq_verify_speed (struct cpufreq_policy *policy) -{ -if (policy->cpu !=0 ) -return -EINVAL ; - -return cpufreq_frequency_table_verify (policy, s3c64xx_freq_table); -} -static unsigned int s3c64xx_cpufreq_get_speed (unsigned int cpu) {if (cpu !=0 )
@@ -264,7 +256,7 @@ static int s3c64xx_cpufreq_driver_init(struct cpufreq_policy *policy)static struct cpufreq_driver s3c64xx_cpufreq_driver = { .flags =0 , - .verify = s3c64xx_cpufreq_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = s3c64xx_cpufreq_set_target, .get = s3c64xx_cpufreq_get_speed, .init = s3c64xx_cpufreq_driver_init,
Signature · 1 line
1.7.12.rc2.18.g61b472e
RE: [PATCH V2 Resend 27/92] cpufreq: s3cx4xx: Use generic cpufreq routines
Quoted 10 lines · Viresh Kumar
Most of the CPUFreq drivers do similar things in .exit() and .verify() routines
and .attr. So its better if we have generic routines for them which can be used
by cpufreq drivers then.This patch uses these generic routines for this driver.
Cc Kukjin Kim <[email protected]>
BTW, would be helpful to me if you could add regarding maintainers in cc on the common stuff of this changes :-)
Thanks,
Kukjin
Quoted 6 lines
Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/s3c2416-cpufreq.c | 19 ++----------------- drivers/cpufreq/s3c24xx-cpufreq.c | 9 --------- drivers/cpufreq/s3c64xx-cpufreq.c | 10 +--------- 3 files changed, 3 insertions(+), 35 deletions(-)
Viresh Kumar
maintainerRe: [PATCH V2 Resend 27/92] cpufreq: s3cx4xx: Use generic cpufreq routines
Quoted 9 lines · Kukjin Kim
Quoted 8 lines · Viresh Kumar
Most of the CPUFreq drivers do similar things in .exit() and .verify() routines
and .attr. So its better if we have generic routines for them which can be
used
by cpufreq drivers then.
Quoted 8 lines
Quoted 3 lines
This patch uses these generic routines for this driver.
Cc Kukjin Kim <[email protected]>Acked-by Kukjin Kim <[email protected]>BTW, would be helpful to me if you could add regarding maintainers in cc on the common stuff of this changes :-)
I forgot to add --supress-cc while sending these patches.. These weren't out for review, but for applying.. :)
I have already sent the common stuff cc'd to all maintainers earlier..
Viresh Kumar
maintainerPATCH RESEND v2 28/92 cpufreq: s5pv210: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/s5pv210-cpufreq.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)
drivers/cpufreq/s5pv210-cpufreq.c +1 -9
@@ -174,14 +174,6 @@ static void s5pv210_set_refresh(enum s5pv210_dmc_port ch, unsigned long freq)__raw_writel (tmp1, reg); } -static int s5pv210_verify_speed (struct cpufreq_policy *policy) -{ -if (policy->cpu) -return -EINVAL ; - -return cpufreq_frequency_table_verify (policy, s5pv210_freq_table); -} -static unsigned int s5pv210_getspeed (unsigned int cpu) {if (cpu)
@@ -603,7 +595,7 @@ static int s5pv210_cpufreq_reboot_notifier_event(struct notifier_block *this,static struct cpufreq_driver s5pv210_driver = { .flags =CPUFREQ_STICKY , - .verify = s5pv210_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = s5pv210_target, .get = s5pv210_getspeed, .init = s5pv210_cpu_init,
Signature · 1 line
1.7.12.rc2.18.g61b472e
RE: [PATCH V2 Resend 28/92] cpufreq: s5pv210: Use generic cpufreq routines
Quoted 10 lines · Viresh Kumar
Most of the CPUFreq drivers do similar things in .exit() and .verify() routines
and .attr. So its better if we have generic routines for them which can be used
by cpufreq drivers then.This patch uses these generic routines for this driver.
Cc Kukjin Kim <[email protected]>
Thanks,
Kukjin
Quoted 4 lines
Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/s5pv210-cpufreq.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)
Viresh Kumar
maintainerPATCH RESEND v2 29/92 cpufreq: sa11x0: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- arch/arm/mach-sa1100/generic.c | 22 ---------------------- arch/arm/mach-sa1100/generic.h | 1 - drivers/cpufreq/sa1100-cpufreq.c | 2 +- drivers/cpufreq/sa1110-cpufreq.c | 2 +- 4 files changed, 2 insertions(+), 25 deletions(-)
arch/arm/mach-sa1100/generic.c +0 -22
@@ -82,28 +82,6 @@ unsigned int sa11x0_ppcr_to_freq(unsigned int idx)return freq; } - -/* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on -* this platform, anyway. -*/ -int sa11x0_verify_speed (struct cpufreq_policy *policy) -{ -unsigned int tmp; -if (policy->cpu) -return -EINVAL ; - -cpufreq_verify_within_limits (policy, policy->cpuinfo.min_freq, policy->cpuinfo.max_freq); - -/* make sure that at least one frequency is within the policy */ - tmp = sa11x0_freq_table[sa11x0_freq_to_ppcr (policy->min)].frequency; -if (tmp > policy->max) - policy->max = tmp; - -cpufreq_verify_within_limits (policy, policy->cpuinfo.min_freq, policy->cpuinfo.max_freq); - -return 0 ; -} -unsigned int sa11x0_getspeed (unsigned int cpu) {if (cpu)
arch/arm/mach-sa1100/generic.h +0 -1
@@ -23,7 +23,6 @@ struct cpufreq_policy;extern struct cpufreq_frequency_table sa11x0_freq_table[];extern unsigned int sa11x0_freq_to_ppcr (unsigned int khz); -extern int sa11x0_verify_speed (struct cpufreq_policy *policy);extern unsigned int sa11x0_getspeed (unsigned int cpu);extern unsigned int sa11x0_ppcr_to_freq (unsigned int idx);
drivers/cpufreq/sa1100-cpufreq.c +1 -1
@@ -228,7 +228,7 @@ static int __init sa1100_cpu_init(struct cpufreq_policy *policy)static struct cpufreq_driver sa1100_driver__refdata = { .flags =CPUFREQ_STICKY , - .verify = sa11x0_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = sa1100_target, .get = sa11x0_getspeed, .init = sa1100_cpu_init,
drivers/cpufreq/sa1110-cpufreq.c +1 -1
@@ -344,7 +344,7 @@ static int __init sa1110_cpu_init(struct cpufreq_policy *policy)* it with cpufreq_register_driver() */ static struct cpufreq_driver sa1110_driver__refdata = { .flags =CPUFREQ_STICKY , - .verify = sa11x0_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = sa1110_target, .get = sa11x0_getspeed, .init = sa1110_cpu_init,
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 30/92 cpufreq: sc520: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/sc520_freq.c | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-)
drivers/cpufreq/sc520_freq.c +3 -21
@@ -78,11 +78,6 @@ static void sc520_freq_set_cpu_state(struct cpufreq_policy *policy,cpufreq_notify_transition (policy, &freqs,CPUFREQ_POSTCHANGE ); }; -static int sc520_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &sc520_freq_table[0 ]); -} -static int sc520_freq_target (struct cpufreq_policy *policy,unsigned int target_freq,unsigned int relation)
@@ -120,27 +115,14 @@ static int sc520_freq_cpu_init(struct cpufreq_policy *policy) } -static int sc520_freq_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - - -static struct freq_attr *sc520_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; - -static struct cpufreq_driver sc520_freq_driver = { .get = sc520_freq_get_cpu_frequency, - .verify = sc520_freq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = sc520_freq_target, .init = sc520_freq_cpu_init, - .exit = sc520_freq_cpu_exit, + .exit = cpufreq_generic_exit, .name ="sc520_freq" , - .attr = sc520_freq_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id sc520_ids[] = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 31/92 cpufreq: sh: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/sh-cpufreq.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
drivers/cpufreq/sh-cpufreq.c +1 -6
@@ -154,11 +154,6 @@ static int sh_cpufreq_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static struct freq_attr *sh_freq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver sh_cpufreq_driver = { .name ="sh" , .get = sh_cpufreq_get,
@@ -166,7 +161,7 @@ static struct cpufreq_driver sh_cpufreq_driver = { .verify = sh_cpufreq_verify, .init = sh_cpufreq_cpu_init, .exit = sh_cpufreq_cpu_exit, - .attr = sh_freq_attr, + .attr = cpufreq_generic_attr, };static int __init sh_cpufreq_module_init (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 32/92 cpufreq: sparc: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/sparc-us2e-cpufreq.c | 8 +------- drivers/cpufreq/sparc-us3-cpufreq.c | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-)
drivers/cpufreq/sparc-us2e-cpufreq.c +1 -7
@@ -295,12 +295,6 @@ static int us2e_freq_target(struct cpufreq_policy *policy,return 0 ; } -static int us2e_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, - &us2e_freq_table[policy->cpu].table[0 ]); -} -static int __init us2e_freq_cpu_init (struct cpufreq_policy *policy) {unsigned int cpu = policy->cpu;
@@ -363,7 +357,7 @@ static int __init us2e_freq_init(void) goto err_out; driver->init = us2e_freq_cpu_init; - driver->verify = us2e_freq_verify; + driver->verify = cpufreq_generic_frequency_table_verify; driver->target = us2e_freq_target; driver->get = us2e_freq_get; driver->exit = us2e_freq_cpu_exit;
drivers/cpufreq/sparc-us3-cpufreq.c +1 -7
@@ -156,12 +156,6 @@ static int us3_freq_target(struct cpufreq_policy *policy,return 0 ; } -static int us3_freq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, - &us3_freq_table[policy->cpu].table[0 ]); -} -static int __init us3_freq_cpu_init (struct cpufreq_policy *policy) {unsigned int cpu = policy->cpu;
@@ -224,7 +218,7 @@ static int __init us3_freq_init(void) goto err_out; driver->init = us3_freq_cpu_init; - driver->verify = us3_freq_verify; + driver->verify = cpufreq_generic_frequency_table_verify; driver->target = us3_freq_target; driver->get = us3_freq_get; driver->exit = us3_freq_cpu_exit;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 33/92 cpufreq: spear: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/spear-cpufreq.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-)
drivers/cpufreq/spear-cpufreq.c +3 -19
@@ -30,11 +30,6 @@ static struct {u32 cnt; } spear_cpufreq; -static int spear_cpufreq_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, spear_cpufreq.freq_tbl); -} -static unsigned int spear_cpufreq_get (unsigned int cpu) {return clk_get_rate (spear_cpufreq.clk) /1000 ;
@@ -192,26 +187,15 @@ static int spear_cpufreq_init(struct cpufreq_policy *policy)return 0 ; } -static int spear_cpufreq_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *spear_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver spear_cpufreq_driver = { .name ="cpufreq-spear" , .flags =CPUFREQ_STICKY , - .verify = spear_cpufreq_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = spear_cpufreq_target, .get = spear_cpufreq_get, .init = spear_cpufreq_init, - .exit = spear_cpufreq_exit, - .attr = spear_cpufreq_attr, + .exit = cpufreq_generic_exit, + .attr = cpufreq_generic_attr, };static int spear_cpufreq_driver_init (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 34/92 cpufreq: speedstep: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/speedstep-centrino.c | 22 ++-------------------- drivers/cpufreq/speedstep-ich.c | 30 +++--------------------------- drivers/cpufreq/speedstep-smi.c | 30 +++--------------------------- 3 files changed, 8 insertions(+), 74 deletions(-)
drivers/cpufreq/speedstep-centrino.c +2 -20
@@ -420,19 +420,6 @@ static int centrino_cpu_exit(struct cpufreq_policy *policy) }/** -* centrino_verify - verifies a new CPUFreq policy -* @policy: new policy -* -* Limit must be within this model's frequency range at least one -* border included. -*/ -static int centrino_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, -per_cpu (centrino_model, policy->cpu)->op_points); -} - -/** * centrino_setpolicy - set a new CPUFreq policy * @policy: new policy * @target_freq: the target frequency
@@ -553,20 +540,15 @@ out:return retval; } -static struct freq_attr * centrino_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver centrino_driver = { .name ="centrino" ,/* should be speedstep-centrino, but there's a 16 char limit */ .init = centrino_cpu_init, .exit = centrino_cpu_exit, - .verify = centrino_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = centrino_target, .get = get_cur_freq, - .attr = centrino_attr, + .attr = cpufreq_generic_attr, };/*
drivers/cpufreq/speedstep-ich.c +3 -27
@@ -289,18 +289,6 @@ static int speedstep_target(struct cpufreq_policy *policy, } -/** -* speedstep_verify - verifies a new CPUFreq policy -* @policy: new policy -* -* Limit must be within speedstep_low_freq and speedstep_high_freq, with -* at least one border included. -*/ -static int speedstep_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &speedstep_freqs[0 ]); -} -struct get_freqs {struct cpufreq_policy *policy;int ret;
@@ -352,26 +340,14 @@ static int speedstep_cpu_init(struct cpufreq_policy *policy) } -static int speedstep_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} - -static struct freq_attr *speedstep_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; - -static struct cpufreq_driver speedstep_driver = { .name ="speedstep-ich" , - .verify = speedstep_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = speedstep_target, .init = speedstep_cpu_init, - .exit = speedstep_cpu_exit, + .exit = cpufreq_generic_exit, .get = speedstep_get, - .attr = speedstep_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id ss_smi_ids[] = {
drivers/cpufreq/speedstep-smi.c +3 -27
@@ -264,19 +264,6 @@ static int speedstep_target(struct cpufreq_policy *policy, } -/** -* speedstep_verify - verifies a new CPUFreq policy -* @policy: new policy -* -* Limit must be within speedstep_low_freq and speedstep_high_freq, with -* at least one border included. -*/ -static int speedstep_verify (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, &speedstep_freqs[0 ]); -} - -static int speedstep_cpu_init (struct cpufreq_policy *policy) {int result;
@@ -332,12 +319,6 @@ static int speedstep_cpu_init(struct cpufreq_policy *policy)return cpufreq_table_validate_and_show (policy, speedstep_freqs); } -static int speedstep_cpu_exit (struct cpufreq_policy *policy) -{ -cpufreq_frequency_table_put_attr (policy->cpu); -return 0 ; -} -static unsigned int speedstep_get (unsigned int cpu) {if (cpu)
@@ -356,20 +337,15 @@ static int speedstep_resume(struct cpufreq_policy *policy)return result; } -static struct freq_attr *speedstep_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver speedstep_driver = { .name ="speedstep-smi" , - .verify = speedstep_verify, + .verify = cpufreq_generic_frequency_table_verify, .target = speedstep_target, .init = speedstep_cpu_init, - .exit = speedstep_cpu_exit, + .exit = cpufreq_generic_exit, .get = speedstep_get, .resume = speedstep_resume, - .attr = speedstep_attr, + .attr = cpufreq_generic_attr, };static const struct x86_cpu_id ss_smi_ids[] = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 35/92 cpufreq: tegra: Use generic cpufreq routines
In reply to Viresh KumarMost of the CPUFreq drivers do similar things in .exit() and .verify() routines and .attr. So its better if we have generic routines for them which can be used by cpufreq drivers then.
This patch uses these generic routines for this driver.
--- drivers/cpufreq/tegra-cpufreq.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
drivers/cpufreq/tegra-cpufreq.c +2 -12
@@ -51,11 +51,6 @@ static unsigned long target_cpu_speed[NUM_CPUS];static DEFINE_MUTEX (tegra_cpu_lock);static bool is_suspended; -static int tegra_verify_speed (struct cpufreq_policy *policy) -{ -return cpufreq_frequency_table_verify (policy, freq_table); -} -static unsigned int tegra_getspeed (unsigned int cpu) {unsigned long rate;
@@ -237,19 +232,14 @@ static int tegra_cpu_exit(struct cpufreq_policy *policy)return 0 ; } -static struct freq_attr *tegra_cpufreq_attr[] = { - &cpufreq_freq_attr_scaling_available_freqs, -NULL , -}; -static struct cpufreq_driver tegra_cpufreq_driver = { - .verify = tegra_verify_speed, + .verify = cpufreq_generic_frequency_table_verify, .target = tegra_target, .get = tegra_getspeed, .init = tegra_cpu_init, .exit = tegra_cpu_exit, .name ="tegra" , - .attr = tegra_cpufreq_attr, + .attr = cpufreq_generic_attr, };static int __init tegra_cpufreq_init (void )
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 36/92 cpufreq: call cpufreq_driver->get() after calling ->init()
In reply to Viresh KumarAlmost all drivers set policy->cur with current cpu frequency in their ->init() part. This can be done for all of them at core level and so they wouldn't need to do it.
This patch adds supporting code in cpufreq core for calling get() after we have called init() for a policy.
--- drivers/cpufreq/cpufreq.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
drivers/cpufreq/cpufreq.c +11 -0
@@ -1053,6 +1053,14 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif, goto err_set_policy_cpu; } +if (cpufreq_driver->get) { + policy->cur = cpufreq_driver->get (policy->cpu); +if (!policy->cur) { +pr_err ("%s: ->get() failed\n" , __func__); + goto err_get_freq; + } + } +/* related cpus should atleast have policy->cpus */ cpumask_or (policy->related_cpus, policy->related_cpus, policy->cpus);
@@ -1107,6 +1115,9 @@ err_out_unregister:per_cpu (cpufreq_cpu_data, j) =NULL ;write_unlock_irqrestore (&cpufreq_driver_lock, flags); +err_get_freq: +if (cpufreq_driver->exit) + cpufreq_driver->exit (policy); err_set_policy_cpu:cpufreq_policy_free (policy); nomem_out:
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 37/92 cpufreq: acpi: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/acpi-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/acpi-cpufreq.c +0 -1
@@ -842,7 +842,6 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)break ;case ACPI_ADR_SPACE_FIXED_HARDWARE : acpi_cpufreq_driver.get = get_cur_freq_on_cpu; - policy->cur =get_cur_freq_on_cpu (cpu);break ;default :break ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Re: [PATCH V2 Resend 37/92] cpufreq: acpi: don't initialize part of policy that is set by core too
Quoted 16 lines · Viresh Kumar
Many common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/acpi-cpufreq.c | 1 - 1 file changed, 1 deletion(-)drivers/cpufreq/acpi-cpufreq.c +0
-0
drivers/cpufreq/acpi-cpufreq.c static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) · line 847
Quoted 7 lines
drivers/cpufreq/acpi-cpufreq.c +0
-1@@ -842,7 +842,6 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)break ;case ACPI_ADR_SPACE_FIXED_HARDWARE : acpi_cpufreq_driver.get = get_cur_freq_on_cpu; - policy->cur =get_cur_freq_on_cpu (cpu);break ;default :break ;
I'm wondering what happens if space_id is ACPI_ADR_SPACE_SYSTEM_IO? I suppose that the core will set policy->cur first and then it will be overwritten here?
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Viresh Kumar
maintainerRe: [PATCH V2 Resend 37/92] cpufreq: acpi: don't initialize part of policy that is set by core too
Quoted 24 lines · Rafael J. Wysocki
Quoted 23 lines · Viresh Kumar
Many common initializations of struct policy are moved to core now and hence
this driver doesn't need to do it. This patch removes such code.Most recent of those changes is to call ->get() in the core after calling ->init().
Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/acpi-cpufreq.c | 1 - 1 file changed, 1 deletion(-)drivers/cpufreq/acpi-cpufreq.c +0
-1@@ -842,7 +842,6 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)break ;case ACPI_ADR_SPACE_FIXED_HARDWARE : acpi_cpufreq_driver.get = get_cur_freq_on_cpu; - policy->cur =get_cur_freq_on_cpu (cpu);
Quoted 8 lines
Quoted 3 lines
drivers/cpufreq/acpi-cpufreq.c +0
-0break ;default :break;
I'm wondering what happens if
space_idisACPI_ADR_SPACE_SYSTEM_IO? I suppose
that the core will setpolicy->curfirst and then it will be overwritten here?
No. First ->init() is called and then core sets policy->cur. And it sets it only if there is a valid ->get() available.. Which wouldn't be available in case of ACPI_ADR_SPACE_SYSTEM_IO..
Re: [PATCH V2 Resend 37/92] cpufreq: acpi: don't initialize part of policy that is set by core too
Quoted 34 lines · Viresh Kumar
Quoted 24 lines · Rafael J. Wysocki
Quoted 23 lines · Viresh Kumar
Many common initializations of struct policy are moved to core now and hence
this driver doesn't need to do it. This patch removes such code.Most recent of those changes is to call ->get() in the core after calling ->init().
Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/acpi-cpufreq.c | 1 - 1 file changed, 1 deletion(-)drivers/cpufreq/acpi-cpufreq.c +0
-1@@ -842,7 +842,6 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)break ;case ACPI_ADR_SPACE_FIXED_HARDWARE : acpi_cpufreq_driver.get = get_cur_freq_on_cpu; - policy->cur =get_cur_freq_on_cpu (cpu);Quoted 8 lines
Quoted 3 lines
drivers/cpufreq/acpi-cpufreq.c +0
-0break ;default :break;
I'm wondering what happens if
space_idisACPI_ADR_SPACE_SYSTEM_IO? I suppose
that the core will setpolicy->curfirst and then it will be overwritten here?
Quoted 3 lines
No. First ->init() is called and then core sets
policy->cur. And it sets it only if there is a valid ->get() available.. Which wouldn't be available in case ofACPI_ADR_SPACE_SYSTEM_IO..
OK
Care to send a patch adding a comment under the ACPI_ADR_SPACE_SYSTEM_IO case explaining that policy->cur it sets won't be clobbered by the core because etc.?
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Viresh Kumar
maintainerPATCH RESEND v2 38/92 cpufreq: arm_big_little: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/arm_big_little.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/arm_big_little.c +0 -2
@@ -171,8 +171,6 @@ static int bL_cpufreq_init(struct cpufreq_policy *policy)else policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - policy->cur =bL_cpufreq_get (policy->cpu); -cpumask_copy (policy->cpus,topology_core_cpumask (policy->cpu));dev_info (cpu_dev,"%s: CPU %d initialized\n" , __func__, policy->cpu);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 39/92 cpufreq: at32ap: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/at32ap-cpufreq.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
drivers/cpufreq/at32ap-cpufreq.c +4 -8
@@ -77,7 +77,7 @@ static int at32_set_target(struct cpufreq_policy *policy,static int __init at32_cpufreq_driver_init (struct cpufreq_policy *policy) { -unsigned int frequency, rate; +unsigned int frequency, rate, min_freq;int retval, steps, i;if (policy->cpu !=0 )
@@ -90,12 +90,9 @@ static int __init at32_cpufreq_driver_init(struct cpufreq_policy *policy) goto out_err; } - policy->cpuinfo.min_freq = (clk_round_rate (cpuclk,1 ) +500 ) /1000 ; - policy->cpuinfo.max_freq = (clk_round_rate (cpuclk, ~0UL ) +500 ) /1000 ; + min_freq = (clk_round_rate (cpuclk,1 ) +500 ) /1000 ; + frequency = (clk_round_rate (cpuclk, ~0UL ) +500 ) /1000 ; policy->cpuinfo.transition_latency =0 ; - policy->cur =at32_get_speed (0 ); - policy->min = policy->cpuinfo.min_freq; - policy->max = policy->cpuinfo.max_freq;/* * AVR32 CPU frequency rate scales in power of two between maximum and
@@ -104,7 +101,7 @@ static int __init at32_cpufreq_driver_init(struct cpufreq_policy *policy)* Further validate that the frequency is usable, and append it to the * frequency table. */ - steps =fls (policy->cpuinfo.max_freq / policy->cpuinfo.min_freq) +1 ; + steps =fls (frequency / min_freq) +1 ; freq_table =kzalloc (steps *sizeof (struct cpufreq_frequency_table ),GFP_KERNEL );if (!freq_table) {
@@ -112,7 +109,6 @@ static int __init at32_cpufreq_driver_init(struct cpufreq_policy *policy) goto out_err_put_clk; } - frequency = policy->cpuinfo.max_freq;for (i =0 ; i < (steps -1 ); i++) { rate =clk_round_rate (cpuclk, frequency *1000 ) /1000 ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 40/92 cpufreq: blackfin: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/blackfin-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/blackfin-cpufreq.c +0 -1
@@ -204,7 +204,6 @@ static int __bfin_cpu_init(struct cpufreq_policy *policy) policy->cpuinfo.transition_latency =50000 ;/* 50us assumed */ - policy->cur = cclk;return cpufreq_table_validate_and_show (policy, bfin_freq_table); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 41/92 cpufreq: cpu0: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/cpufreq-cpu0.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/cpufreq-cpu0.c +0 -1
@@ -131,7 +131,6 @@ static int cpu0_cpufreq_init(struct cpufreq_policy *policy) } policy->cpuinfo.transition_latency = transition_latency; - policy->cur =clk_get_rate (cpu_clk) /1000 ;/* * The driver only supports the SMP configuartion where all processors
Signature · 1 line
1.7.12.rc2.18.g61b472e
Re: [PATCH V2 Resend 41/92] cpufreq: cpu0: don't initialize part of policy that is set by core too
Quoted 8 lines · Viresh Kumar
Many common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
Cc Shawn Guo <[email protected]>Signed-off-by Viresh Kumar <[email protected]>
For cpu0 and imx6q changes,
Viresh Kumar
maintainerPATCH RESEND v2 42/92 cpufreq: nforce2: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/cpufreq-nforce2.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/cpufreq-nforce2.c +0 -1
@@ -362,7 +362,6 @@ static int nforce2_cpu_init(struct cpufreq_policy *policy) policy->min = policy->cpuinfo.min_freq = min_fsb * fid *100 ; policy->max = policy->cpuinfo.max_freq = max_fsb * fid *100 ; policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - policy->cur =nforce2_get (policy->cpu);return 0 ; }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 43/92 cpufreq: cris: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/cris-artpec3-cpufreq.c | 1 - drivers/cpufreq/cris-etraxfs-cpufreq.c | 1 - 2 files changed, 2 deletions(-)
drivers/cpufreq/cris-artpec3-cpufreq.c +0 -1
@@ -73,7 +73,6 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy) {/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - policy->cur =cris_freq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, cris_freq_table); }
drivers/cpufreq/cris-etraxfs-cpufreq.c +0 -1
@@ -72,7 +72,6 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy) {/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - policy->cur =cris_freq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, cris_freq_table); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Re: [PATCH V2 Resend 43/92] cpufreq: cris: don't initialize part of policy that is set by core too
Quoted 5 lines · Viresh Kumar
Many common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
You should already have gotten my Acked-by: for this series, but here it is again:
Quoted 34 lines
Cc Mikael Starvik <[email protected]>Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/cris-artpec3-cpufreq.c | 1 - drivers/cpufreq/cris-etraxfs-cpufreq.c | 1 - 2 files changed, 2 deletions(-)drivers/cpufreq/cris-artpec3-cpufreq.c +0
-1@@ -73,7 +73,6 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy) {/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - policy->cur =cris_freq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, cris_freq_table); }drivers/cpufreq/cris-etraxfs-cpufreq.c +0
-1@@ -72,7 +72,6 @@ static int cris_freq_cpu_init(struct cpufreq_policy *policy) {/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - policy->cur =cris_freq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, cris_freq_table); }Signature · 1 line
1.7.12.rc2.18.g61b472e
/^JN - Jesper Nilsson
Signature · 1 line
Jesper Nilsson -- [email protected]
Viresh Kumar
maintainerPATCH RESEND v2 44/92 cpufreq: davinci: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/davinci-cpufreq.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/davinci-cpufreq.c +0 -2
@@ -138,8 +138,6 @@ static int davinci_cpu_init(struct cpufreq_policy *policy)return result; } - policy->cur =davinci_getspeed (0 ); - result =cpufreq_table_validate_and_show (policy, freq_table);if (result) { pr_err("%s: cpufreq_table_validate_and_show() failed",
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 45/92 cpufreq: dbx500: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/dbx500-cpufreq.c | 5 ----- 1 file changed, 5 deletions(-)
drivers/cpufreq/dbx500-cpufreq.c +0 -5
@@ -83,11 +83,6 @@ static int dbx500_cpufreq_init(struct cpufreq_policy *policy)return res; } - policy->min = policy->cpuinfo.min_freq; - policy->max = policy->cpuinfo.max_freq; - policy->cur =dbx500_cpufreq_getspeed (policy->cpu); - policy->governor =CPUFREQ_DEFAULT_GOVERNOR ; -/* * FIXME : Need to take time measurement across the target() * function with no/some/all drivers in the notification
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 46/92 cpufreq: e_powersaver: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/e_powersaver.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/e_powersaver.c +0 -1
@@ -395,7 +395,6 @@ static int eps_cpu_init(struct cpufreq_policy *policy) } policy->cpuinfo.transition_latency =140000 ;/* 844mV -> 700mV in ns */ - policy->cur = fsb * current_multiplier; ret =cpufreq_table_validate_and_show (policy, ¢aur->freq_table[0 ]);if (ret) {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 47/92 cpufreq: elanfreq: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/elanfreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/elanfreq.c +0 -1
@@ -207,7 +207,6 @@ static int elanfreq_cpu_init(struct cpufreq_policy *policy)/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - policy->cur =elanfreq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, elanfreq_table); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 48/92 cpufreq: exynos: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/exynos-cpufreq.c | 2 -- drivers/cpufreq/exynos5440-cpufreq.c | 1 - 2 files changed, 3 deletions(-)
drivers/cpufreq/exynos-cpufreq.c +0 -2
@@ -241,8 +241,6 @@ static struct notifier_block exynos_cpufreq_nb = {static int exynos_cpufreq_cpu_init (struct cpufreq_policy *policy) { - policy->cur = policy->min = policy->max =exynos_getspeed (policy->cpu); -/* set the transition latency value */ policy->cpuinfo.transition_latency =100000 ;
drivers/cpufreq/exynos5440-cpufreq.c +0 -1
@@ -326,7 +326,6 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)return ret; } - policy->cur = dvfs_info->cur_frequency; policy->cpuinfo.transition_latency = dvfs_info->latency;cpumask_setall (policy->cpus);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 49/92 cpufreq: gx: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/gx-suspmod.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
drivers/cpufreq/gx-suspmod.c +1 -4
@@ -401,7 +401,7 @@ static int cpufreq_gx_target(struct cpufreq_policy *policy,static int cpufreq_gx_cpu_init (struct cpufreq_policy *policy) { -unsigned int maxfreq, curfreq; +unsigned int maxfreq;if (!policy || policy->cpu !=0 )return -ENODEV ;
@@ -415,10 +415,8 @@ static int cpufreq_gx_cpu_init(struct cpufreq_policy *policy) maxfreq =30000 * gx_freq_mult[getCx86 (CX86_DIR1 ) &0x0f ]; stock_freq = maxfreq; - curfreq =gx_get_cpuspeed (0 );pr_debug ("cpu max frequency is %d.\n" , maxfreq); -pr_debug ("cpu current frequency is %dkHz.\n" , curfreq);/* setup basic struct for cpufreq API */ policy->cpu =0 ;
@@ -428,7 +426,6 @@ static int cpufreq_gx_cpu_init(struct cpufreq_policy *policy)else policy->min = maxfreq /POLICY_MIN_DIV ; policy->max = maxfreq; - policy->cur = curfreq; policy->cpuinfo.min_freq = maxfreq / max_duration; policy->cpuinfo.max_freq = maxfreq; policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 50/92 cpufreq: ia64-acpi: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/ia64-acpi-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/ia64-acpi-cpufreq.c +0 -1
@@ -305,7 +305,6 @@ acpi_cpufreq_cpu_init ( data->acpi_data.states[i].transition_latency *1000 ; } } - policy->cur =processor_get_freq (data, policy->cpu);/* table init */ for (i =0 ; i <= data->acpi_data.state_count; i++)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 51/92 cpufreq: imx6q: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/imx6q-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/imx6q-cpufreq.c +0 -1
@@ -163,7 +163,6 @@ static int imx6q_cpufreq_init(struct cpufreq_policy *policy) } policy->cpuinfo.transition_latency = transition_latency; - policy->cur =clk_get_rate (arm_clk) /1000 ;cpumask_setall (policy->cpus);return 0 ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 52/92 cpufreq: integrator: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init(). And so we don't need to set policy->cur from driver anymore.
Over that it sets policy->min and max correctly. They were earlier set to current frequency of CPU but they should be set to max and min freq of cpu.
--- drivers/cpufreq/integrator-cpufreq.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/cpufreq/integrator-cpufreq.c +2 -3
@@ -186,10 +186,9 @@ static int integrator_cpufreq_init(struct cpufreq_policy *policy) {/* set default policy and cpuinfo */ - policy->cpuinfo.max_freq =160000 ; - policy->cpuinfo.min_freq =12000 ; + policy->max = policy->cpuinfo.max_freq =160000 ; + policy->min = policy->cpuinfo.min_freq =12000 ; policy->cpuinfo.transition_latency =1000000 ;/* 1 ms, assumed */ - policy->cur = policy->min = policy->max =integrator_get (policy->cpu);return 0 ; }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 53/92 cpufreq: kirkwood: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/kirkwood-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/kirkwood-cpufreq.c +0 -1
@@ -122,7 +122,6 @@ static int kirkwood_cpufreq_cpu_init(struct cpufreq_policy *policy) {/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =5000 ;/* 5uS */ - policy->cur =kirkwood_cpufreq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, kirkwood_freq_table); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 54/92 cpufreq: longhaul: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/longhaul.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/longhaul.c +0 -1
@@ -913,7 +913,6 @@ static int longhaul_cpu_init(struct cpufreq_policy *policy)longhaul_setup_voltagescaling (); policy->cpuinfo.transition_latency =200000 ;/* nsec */ - policy->cur =calc_speed (longhaul_get_cpu_mult ());return cpufreq_table_validate_and_show (policy, longhaul_table); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 55/92 cpufreq: loongson2: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/loongson2_cpufreq.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/loongson2_cpufreq.c +0 -2
@@ -131,8 +131,6 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy)return ret; } - policy->cur =loongson2_cpufreq_get (policy->cpu); -return cpufreq_table_validate_and_show (policy, &loongson2_clockmod_table[0 ]); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 56/92 cpufreq: maple: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/maple-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/maple-cpufreq.c +0 -1
@@ -166,7 +166,6 @@ static unsigned int maple_cpufreq_get_speed(unsigned int cpu)static int maple_cpufreq_cpu_init (struct cpufreq_policy *policy) { policy->cpuinfo.transition_latency =12000 ; - policy->cur = maple_cpu_freqs[maple_scom_query_freq ()].frequency;/* secondary CPUs are tied to the primary one by the * cpufreq core if in the secondary policy we tell it that * it actually must be one policy together with all others. */
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 57/92 cpufreq: omap: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/omap-cpufreq.c | 4 ---- 1 file changed, 4 deletions(-)
drivers/cpufreq/omap-cpufreq.c +0 -4
@@ -171,8 +171,6 @@ static int omap_cpu_init(struct cpufreq_policy *policy) goto fail_ck; } - policy->cur =omap_getspeed (policy->cpu); -if (!freq_table) result =opp_init_cpufreq_table (mpu_dev, &freq_table);
@@ -188,8 +186,6 @@ static int omap_cpu_init(struct cpufreq_policy *policy)if (result) goto fail_table; - policy->cur =omap_getspeed (policy->cpu); -/* * On OMAP SMP configuartion, both processors share the voltage * and clock. So both CPUs needs to be scaled together and hence
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 58/92 cpufreq: p4: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/p4-clockmod.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/p4-clockmod.c +0 -1
@@ -230,7 +230,6 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy)/* the transition latency is set to be 1 higher than the maximum * transition latency of the ondemand governor */ policy->cpuinfo.transition_latency =10000001 ; - policy->cur = stock_freq;return cpufreq_table_validate_and_show (policy, &p4clockmod_table[0 ]); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 59/92 cpufreq: pcc: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/pcc-cpufreq.c | 7 ------- 1 file changed, 7 deletions(-)
drivers/cpufreq/pcc-cpufreq.c +0 -7
@@ -559,13 +559,6 @@ static int pcc_cpufreq_cpu_init(struct cpufreq_policy *policy)ioread32 (&pcch_hdr->nominal) *1000 ; policy->min = policy->cpuinfo.min_freq =ioread32 (&pcch_hdr->minimum_frequency) *1000 ; - policy->cur =pcc_get_freq (cpu); - -if (!policy->cur) { -pr_debug ("init: Unable to get current CPU frequency\n" ); - result = -EINVAL ; - goto out; - }pr_debug ("init: policy->max is %d, policy->min is %d\n" , policy->max, policy->min);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 60/92 cpufreq: pmac: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/pmac32-cpufreq.c | 1 - drivers/cpufreq/pmac64-cpufreq.c | 1 - 2 files changed, 2 deletions(-)
drivers/cpufreq/pmac32-cpufreq.c +0 -1
@@ -396,7 +396,6 @@ static int pmac_cpufreq_cpu_init(struct cpufreq_policy *policy)return -ENODEV ; policy->cpuinfo.transition_latency = transition_latency; - policy->cur = cur_freq;return cpufreq_table_validate_and_show (policy, pmac_cpu_freqs); }
drivers/cpufreq/pmac64-cpufreq.c +0 -1
@@ -348,7 +348,6 @@ static unsigned int g5_cpufreq_get_speed(unsigned int cpu)static int g5_cpufreq_cpu_init (struct cpufreq_policy *policy) { policy->cpuinfo.transition_latency = transition_latency; - policy->cur = g5_cpu_freqs[g5_query_freq ()].frequency;/* secondary CPUs are tied to the primary one by the * cpufreq core if in the secondary policy we tell it that * it actually must be one policy together with all others. */
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 61/92 cpufreq: powernow: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/powernow-k6.c | 1 - drivers/cpufreq/powernow-k7.c | 2 -- drivers/cpufreq/powernow-k8.c | 3 --- 3 files changed, 6 deletions(-)
drivers/cpufreq/powernow-k6.c +0 -1
@@ -151,7 +151,6 @@ static int powernow_k6_cpu_init(struct cpufreq_policy *policy)/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =200000 ; - policy->cur = busfreq * max_multiplier;return cpufreq_table_validate_and_show (policy, clock_ratio); }
drivers/cpufreq/powernow-k7.c +0 -2
@@ -673,8 +673,6 @@ static int powernow_cpu_init(struct cpufreq_policy *policy) policy->cpuinfo.transition_latency =cpufreq_scale (2000000UL , fsb, latency); - policy->cur =powernow_get (0 ); -return cpufreq_table_validate_and_show (policy, powernow_table); }
drivers/cpufreq/powernow-k8.c +0 -3
@@ -1141,9 +1141,6 @@ static int powernowk8_cpu_init(struct cpufreq_policy *pol)cpumask_copy (pol->cpus,cpu_core_mask (pol->cpu)); data->available_cores = pol->cpus; - pol->cur =find_khz_freq_from_fid (data->currfid); -pr_debug ("policy current frequency %d kHz\n" , pol->cur); -/* min/max the cpu is capable of */ if (cpufreq_table_validate_and_show (pol, data->powernow_table)) { printk(KERN_ERR FW_BUG PFX "invalid powernow_table\n");
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 62/92 cpufreq: ppc: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/ppc-corenet-cpufreq.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/ppc-corenet-cpufreq.c +0 -2
@@ -217,8 +217,6 @@ static int corenet_cpufreq_cpu_init(struct cpufreq_policy *policy)per_cpu (cpu_data, i) = data; policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - policy->cur =corenet_cpufreq_get_speed (policy->cpu); -of_node_put (np);return 0 ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 63/92 cpufreq: pxa: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/pxa2xx-cpufreq.c | 2 -- drivers/cpufreq/pxa3xx-cpufreq.c | 7 +++---- 2 files changed, 3 insertions(+), 6 deletions(-)
drivers/cpufreq/pxa2xx-cpufreq.c +0 -2
@@ -397,8 +397,6 @@ static int pxa_cpufreq_init(struct cpufreq_policy *policy)/* set default policy and cpuinfo */ policy->cpuinfo.transition_latency =1000 ;/* FIXME: 1 ms, assumed */ - policy->cur =get_clk_frequency_khz (0 );/* current freq */ - policy->min = policy->max = policy->cur;/* Generate pxa25x the run cpufreq_frequency_table struct */ for (i =0 ; i < NUM_PXA25x_RUN_FREQS; i++) {
drivers/cpufreq/pxa3xx-cpufreq.c +3 -4
@@ -201,11 +201,10 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)int ret = -EINVAL ;/* set default policy and cpuinfo */ - policy->cpuinfo.min_freq =104000 ; - policy->cpuinfo.max_freq = (cpu_is_pxa320 ()) ?806000 :624000 ; + policy->min = policy->cpuinfo.min_freq =104000 ; + policy->max = policy->cpuinfo.max_freq = + (cpu_is_pxa320 ()) ?806000 :624000 ; policy->cpuinfo.transition_latency =1000 ;/* FIXME: 1 ms, assumed */ - policy->max =pxa3xx_get_clk_frequency_khz (0 ); - policy->cur = policy->min = policy->max;if (cpu_is_pxa300 () ||cpu_is_pxa310 ()) ret = setup_freqs_table(policy, pxa300_freqs,
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 64/92 cpufreq: s3c: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/s3c2416-cpufreq.c | 2 -- drivers/cpufreq/s3c24xx-cpufreq.c | 5 ----- drivers/cpufreq/s3c64xx-cpufreq.c | 2 -- 3 files changed, 9 deletions(-)
drivers/cpufreq/s3c2416-cpufreq.c +0 -2
@@ -476,8 +476,6 @@ static int __init s3c2416_cpufreq_driver_init(struct cpufreq_policy *policy) freq++; } - policy->cur =clk_get_rate (s3c_freq->armclk) /1000 ; -/* Datasheet says PLL stabalisation time must be at least 300us, * so but add some fudge. (reference in LOCKCON0 register description) */
drivers/cpufreq/s3c24xx-cpufreq.c +0 -5
@@ -378,11 +378,6 @@ static int s3c_cpufreq_init(struct cpufreq_policy *policy)if (policy->cpu !=0 )return -EINVAL ; - policy->cur =s3c_cpufreq_get (0 ); - policy->min = policy->cpuinfo.min_freq =0 ; - policy->max = policy->cpuinfo.max_freq = cpu_cur.info->max.fclk /1000 ; - policy->governor =CPUFREQ_DEFAULT_GOVERNOR ; -/* feed the latency information from the cpu driver */ policy->cpuinfo.transition_latency = cpu_cur.info->latency;
drivers/cpufreq/s3c64xx-cpufreq.c +0 -2
@@ -235,8 +235,6 @@ static int s3c64xx_cpufreq_driver_init(struct cpufreq_policy *policy) freq++; } - policy->cur =clk_get_rate (armclk) /1000 ; -/* Datasheet says PLL stabalisation time (if we were to use * the PLLs, which we don't currently) is ~300us worst case, * but add some fudge.
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 65/92 cpufreq: s5pv210: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/s5pv210-cpufreq.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/s5pv210-cpufreq.c +0 -2
@@ -543,8 +543,6 @@ static int __init s5pv210_cpu_init(struct cpufreq_policy *policy) s5pv210_dram_conf[1 ].refresh = (__raw_readl (S5P_VA_DMC1 +0x30 ) *1000 ); s5pv210_dram_conf[1 ].freq =clk_get_rate (dmc1_clk); - policy->cur = policy->min = policy->max =s5pv210_getspeed (0 ); - policy->cpuinfo.transition_latency =40000 ;return cpufreq_table_validate_and_show (policy, s5pv210_freq_table);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 66/92 cpufreq: sa11x0: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/sa1100-cpufreq.c | 1 - drivers/cpufreq/sa1110-cpufreq.c | 1 - 2 files changed, 2 deletions(-)
drivers/cpufreq/sa1100-cpufreq.c +0 -1
@@ -220,7 +220,6 @@ static int __init sa1100_cpu_init(struct cpufreq_policy *policy) {if (policy->cpu !=0 )return -EINVAL ; - policy->cur =sa11x0_getspeed (0 ); policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ;return cpufreq_table_validate_and_show (policy, sa11x0_freq_table);
drivers/cpufreq/sa1110-cpufreq.c +0 -1
@@ -334,7 +334,6 @@ static int __init sa1110_cpu_init(struct cpufreq_policy *policy) {if (policy->cpu !=0 )return -EINVAL ; - policy->cur =sa11x0_getspeed (0 ); policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ;return cpufreq_table_validate_and_show (policy, sa11x0_freq_table);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 67/92 cpufreq: sc520_freq: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/sc520_freq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/sc520_freq.c +0 -1
@@ -109,7 +109,6 @@ static int sc520_freq_cpu_init(struct cpufreq_policy *policy)/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - policy->cur =sc520_freq_get_cpu_frequency (0 );return cpufreq_table_validate_and_show (policy, sc520_freq_table); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 68/92 cpufreq: sh: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/sh-cpufreq.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/sh-cpufreq.c +0 -2
@@ -114,8 +114,6 @@ static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy)return PTR_ERR (cpuclk); } - policy->cur =sh_cpufreq_get (cpu); - freq_table = cpuclk->nr_freqs ? cpuclk->freq_table :NULL ;if (freq_table) {int result;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 69/92 cpufreq: spear: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/spear-cpufreq.c | 2 -- 1 file changed, 2 deletions(-)
drivers/cpufreq/spear-cpufreq.c +0 -2
@@ -180,8 +180,6 @@ static int spear_cpufreq_init(struct cpufreq_policy *policy) } policy->cpuinfo.transition_latency = spear_cpufreq.transition_latency; - policy->cur =spear_cpufreq_get (0 ); -cpumask_setall (policy->cpus);return 0 ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 70/92 cpufreq: speedstep: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/speedstep-centrino.c | 5 ----- drivers/cpufreq/speedstep-ich.c | 15 +-------------- drivers/cpufreq/speedstep-smi.c | 13 ------------- 3 files changed, 1 insertion(+), 32 deletions(-)
drivers/cpufreq/speedstep-centrino.c +0 -5
@@ -343,7 +343,6 @@ static unsigned int get_cur_freq(unsigned int cpu)static int centrino_cpu_init (struct cpufreq_policy *policy) {struct cpuinfo_x86 *cpu = &cpu_data (policy->cpu); -unsigned freq;unsigned l, h;int i;
@@ -394,12 +393,8 @@ static int centrino_cpu_init(struct cpufreq_policy *policy) } } - freq =get_cur_freq (policy->cpu); policy->cpuinfo.transition_latency =10000 ;/* 10uS transition latency */ - policy->cur = freq; - -pr_debug ("centrino_cpu_init: cur=%dkHz\n" , policy->cur);return cpufreq_table_validate_and_show (policy,per_cpu (centrino_model, policy->cpu)->op_points);
drivers/cpufreq/speedstep-ich.c +1 -14
@@ -308,7 +308,7 @@ static void get_freqs_on_cpu(void *_get_freqs)static int speedstep_cpu_init (struct cpufreq_policy *policy) { -unsigned int policy_cpu, speed; +unsigned int policy_cpu;struct get_freqs gf;/* only run on CPU to be set, or on its sibling */
@@ -323,19 +323,6 @@ static int speedstep_cpu_init(struct cpufreq_policy *policy)if (gf.ret)return gf.ret; -/* get current speed setting */ - speed =speedstep_get (policy_cpu); -if (!speed) -return -EIO ; - -pr_debug ("currently at %s speed setting - %i MHz\n" , - (speed == speedstep_freqs[SPEEDSTEP_LOW ].frequency) - ?"low" :"high" , - (speed /1000 )); - -/* cpuinfo and default policy values */ - policy->cur = speed; -return cpufreq_table_validate_and_show (policy, speedstep_freqs); }
drivers/cpufreq/speedstep-smi.c +0 -13
@@ -267,7 +267,6 @@ static int speedstep_target(struct cpufreq_policy *policy,static int speedstep_cpu_init (struct cpufreq_policy *policy) {int result; -unsigned int speed, state;unsigned int *low, *high;/* capability check */
@@ -303,19 +302,7 @@ static int speedstep_cpu_init(struct cpufreq_policy *policy)pr_debug ("workaround worked.\n" ); } -/* get current speed setting */ - state =speedstep_get_state (); - speed = speedstep_freqs[state].frequency; - -pr_debug ("currently at %s speed setting - %i MHz\n" , - (speed == speedstep_freqs[SPEEDSTEP_LOW ].frequency) - ?"low" :"high" , - (speed /1000 )); - -/* cpuinfo and default policy values */ policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - policy->cur = speed; -return cpufreq_table_validate_and_show (policy, speedstep_freqs); }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 71/92 cpufreq: tegra: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/tegra-cpufreq.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/cpufreq/tegra-cpufreq.c +1 -2
@@ -211,8 +211,7 @@ static int tegra_cpu_init(struct cpufreq_policy *policy)clk_prepare_enable (cpu_clk);cpufreq_table_validate_and_show (policy, freq_table); - policy->cur =tegra_getspeed (policy->cpu); - target_cpu_speed[policy->cpu] = policy->cur; + target_cpu_speed[policy->cpu] =tegra_getspeed (policy->cpu);/* FIXME: what's the actual transition time? */ policy->cpuinfo.transition_latency =300 *1000 ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 72/92 cpufreq: unicore2: don't initialize part of policy that is set by core too
In reply to Viresh KumarMany common initializations of struct policy are moved to core now and hence this driver doesn't need to do it. This patch removes such code.
Most recent of those changes is to call ->get() in the core after calling ->init().
--- drivers/cpufreq/unicore2-cpufreq.c | 1 - 1 file changed, 1 deletion(-)
drivers/cpufreq/unicore2-cpufreq.c +0 -1
@@ -68,7 +68,6 @@ static int __init ucv2_cpu_init(struct cpufreq_policy *policy) {if (policy->cpu !=0 )return -EINVAL ; - policy->cur =ucv2_getspeed (0 ); policy->min = policy->cpuinfo.min_freq =250000 ; policy->max = policy->cpuinfo.max_freq =1000000 ; policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ;
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 73/92 cpufreq: create cpufreq_generic_init() routine
In reply to Viresh KumarMany CPUFreq drivers for SMP system (where all cores share same clock lines), do similar stuff in their ->init() part.
This patch creates a generic routine in cpufreq core which can be used by these so that we can remove some redundant code.
--- drivers/cpufreq/Kconfig | 1 + drivers/cpufreq/cpufreq.c | 31 +++++++++++++++++++++++++++++++ include/linux/cpufreq.h | 3 +++ 3 files changed, 35 insertions(+)
drivers/cpufreq/Kconfig +1 -0
@@ -2,6 +2,7 @@ menu "CPU Frequency scaling" config CPU_FREQ bool "CPU Frequency scaling" + select CPU_FREQ_TABLE help CPU Frequency scaling allows you to change the clock speed of CPUs on the fly. This is a nice method to save power, because
drivers/cpufreq/cpufreq.c +31 -0
@@ -183,6 +183,37 @@ u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy) }EXPORT_SYMBOL_GPL (get_cpu_idle_time); +/* +* This is a generic cpufreq init() routine which can be used by cpufreq +* drivers of SMP systems. It will do following: +* - validate & show freq table passed +* - set policies transition latency +* - policy->cpus with all possible CPUs +*/ +int cpufreq_generic_init (struct cpufreq_policy *policy, +struct cpufreq_frequency_table *table, +unsigned int transition_latency) +{ +int ret; + + ret =cpufreq_table_validate_and_show (policy, table); +if (ret) { +pr_err ("%s: invalid frequency table: %d\n" , __func__, ret); +return ret; + } + + policy->cpuinfo.transition_latency = transition_latency; + +/* +* The driver only supports the SMP configuartion where all processors +* share the clock and voltage and clock. +*/ +cpumask_setall (policy->cpus); + +return 0 ; +} +EXPORT_SYMBOL_GPL (cpufreq_generic_init); +struct cpufreq_policy *cpufreq_cpu_get (unsigned int cpu) {struct cpufreq_policy *policy =NULL ;
include/linux/cpufreq.h +3 -0
@@ -415,6 +415,9 @@ void cpufreq_frequency_table_put_attr(unsigned int cpu);int cpufreq_table_validate_and_show (struct cpufreq_policy *policy,struct cpufreq_frequency_table *table); +int cpufreq_generic_init (struct cpufreq_policy *policy, +struct cpufreq_frequency_table *table, +unsigned int transition_latency);static inline int cpufreq_generic_exit (struct cpufreq_policy *policy) {cpufreq_frequency_table_put_attr (policy->cpu);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 74/92 cpufreq: remove CONFIG_CPU_FREQ_TABLE
In reply to Viresh KumarCONFIG_CPU_FREQ_TABLE will be always enabled when cpufreq framework is used, as cpufreq core depends on it. So, we don't need this CONFIG option anymore as it is not configurable. Remove CONFIG_CPU_FREQ_TABLE and update its users.
--- arch/arm/mach-davinci/Kconfig | 1 - arch/arm/mach-pxa/Kconfig | 3 --- arch/arm/mach-ux500/Kconfig | 1 - arch/blackfin/Kconfig | 1 - arch/cris/Kconfig | 2 -- drivers/cpufreq/Kconfig | 12 ------------ drivers/cpufreq/Kconfig.arm | 11 ----------- drivers/cpufreq/Kconfig.powerpc | 6 ------ drivers/cpufreq/Kconfig.x86 | 13 ------------- drivers/cpufreq/Makefile | 5 +---- drivers/cpufreq/cpufreq.c | 2 -- drivers/thermal/Kconfig | 1 - 12 files changed, 1 insertion(+), 57 deletions(-)
arch/arm/mach-davinci/Kconfig +0 -1
@@ -40,7 +40,6 @@ config ARCH_DAVINCI_DA850 bool "DA850/OMAP-L138/AM18x based system" select ARCH_DAVINCI_DA8XX select ARCH_HAS_CPUFREQ - select CPU_FREQ_TABLE select CP_INTC config ARCH_DAVINCI_DA8XX
arch/arm/mach-pxa/Kconfig +0 -3
@@ -615,14 +615,12 @@ endmenu config PXA25x bool select CPU_XSCALE - select CPU_FREQ_TABLE if CPU_FREQ help Select code specific to PXA21x/25x/26x variants config PXA27x bool select CPU_XSCALE - select CPU_FREQ_TABLE if CPU_FREQ help Select code specific to PXA27x variants
@@ -635,7 +633,6 @@ config CPU_PXA26x config PXA3xx bool select CPU_XSC3 - select CPU_FREQ_TABLE if CPU_FREQ help Select code specific to PXA3xx variants
arch/arm/mach-ux500/Kconfig +0 -1
@@ -34,7 +34,6 @@ config UX500_SOC_COMMON config UX500_SOC_DB8500 bool - select CPU_FREQ_TABLE if CPU_FREQ select MFD_DB8500_PRCMU select PINCTRL_DB8500 select PINCTRL_DB8540
arch/blackfin/Kconfig +0 -1
@@ -1429,7 +1429,6 @@ source "drivers/cpufreq/Kconfig" config BFIN_CPU_FREQ bool depends on CPU_FREQ - select CPU_FREQ_TABLE default y config CPU_VOLTAGE
arch/cris/Kconfig +0 -2
@@ -130,13 +130,11 @@ config SVINTO_SIM config ETRAXFS bool "ETRAX-FS-V32" - select CPU_FREQ_TABLE if CPU_FREQ help Support CRIS V32. config CRIS_MACH_ARTPEC3 bool "ARTPEC-3" - select CPU_FREQ_TABLE if CPU_FREQ help Support Axis ARTPEC-3.
drivers/cpufreq/Kconfig +0 -12
@@ -2,7 +2,6 @@ menu "CPU Frequency scaling" config CPU_FREQ bool "CPU Frequency scaling" - select CPU_FREQ_TABLE help CPU Frequency scaling allows you to change the clock speed of CPUs on the fly. This is a nice method to save power, because
@@ -18,15 +17,11 @@ config CPU_FREQ if CPU_FREQ -config CPU_FREQ_TABLE - tristate - config CPU_FREQ_GOV_COMMON bool config CPU_FREQ_STAT tristate "CPU frequency translation statistics" - select CPU_FREQ_TABLE default y help This driver exports CPU frequency statistics information through sysfs
@@ -144,7 +139,6 @@ config CPU_FREQ_GOV_USERSPACE config CPU_FREQ_GOV_ONDEMAND tristate "'ondemand' cpufreq policy governor" - select CPU_FREQ_TABLE select CPU_FREQ_GOV_COMMON help 'ondemand' - This driver adds a dynamic cpufreq policy governor.
@@ -188,7 +182,6 @@ config CPU_FREQ_GOV_CONSERVATIVE config GENERIC_CPUFREQ_CPU0 tristate "Generic CPU0 cpufreq driver" depends on HAVE_CLK && REGULATOR && PM_OPP && OF - select CPU_FREQ_TABLE help This adds a generic cpufreq driver for CPU0 frequency management. It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
@@ -224,7 +217,6 @@ depends on IA64 config IA64_ACPI_CPUFREQ tristate "ACPI Processor P-States driver" - select CPU_FREQ_TABLE depends on ACPI_PROCESSOR help This driver adds a CPUFreq driver which utilizes the ACPI
@@ -241,7 +233,6 @@ depends on MIPS config LOONGSON2_CPUFREQ tristate "Loongson2 CPUFreq Driver" - select CPU_FREQ_TABLE help This option adds a CPUFreq driver for loongson processors which support software configurable cpu frequency.
@@ -263,7 +254,6 @@ menu "SPARC CPU frequency scaling drivers" depends on SPARC64 config SPARC_US3_CPUFREQ tristate "UltraSPARC-III CPU Frequency driver" - select CPU_FREQ_TABLE help This adds the CPUFreq driver for UltraSPARC-III processors.
@@ -273,7 +263,6 @@ config SPARC_US3_CPUFREQ config SPARC_US2E_CPUFREQ tristate "UltraSPARC-IIe CPU Frequency driver" - select CPU_FREQ_TABLE help This adds the CPUFreq driver for UltraSPARC-IIe processors.
@@ -286,7 +275,6 @@ menu "SH CPU Frequency scaling" depends on SUPERH config SH_CPU_FREQ tristate "SuperH CPU Frequency driver" - select CPU_FREQ_TABLE help This adds the cpufreq driver for SuperH. Any CPU that supports clock rate rounding through the clock framework can use this
drivers/cpufreq/Kconfig.arm +0 -11
@@ -5,7 +5,6 @@ config ARM_BIG_LITTLE_CPUFREQ tristate "Generic ARM big LITTLE CPUfreq driver" depends on ARM_CPU_TOPOLOGY && PM_OPP && HAVE_CLK - select CPU_FREQ_TABLE help This enables the Generic CPUfreq driver for ARM big.LITTLE platforms.
@@ -18,7 +17,6 @@ config ARM_DT_BL_CPUFREQ config ARM_EXYNOS_CPUFREQ bool - select CPU_FREQ_TABLE config ARM_EXYNOS4210_CPUFREQ bool "SAMSUNG EXYNOS4210"
@@ -58,7 +56,6 @@ config ARM_EXYNOS5440_CPUFREQ depends on SOC_EXYNOS5440 depends on HAVE_CLK && PM_OPP && OF default y - select CPU_FREQ_TABLE help This adds the CPUFreq driver for Samsung EXYNOS5440 SoC. The nature of exynos5440 clock controller is
@@ -85,7 +82,6 @@ config ARM_IMX6Q_CPUFREQ tristate "Freescale i.MX6Q cpufreq support" depends on SOC_IMX6Q depends on REGULATOR_ANATOP - select CPU_FREQ_TABLE help This adds cpufreq driver support for Freescale i.MX6Q SOC.
@@ -101,7 +97,6 @@ config ARM_INTEGRATOR config ARM_KIRKWOOD_CPUFREQ def_bool ARCH_KIRKWOOD && OF - select CPU_FREQ_TABLE help This adds the CPUFreq driver for Marvell Kirkwood SoCs.
@@ -110,7 +105,6 @@ config ARM_OMAP2PLUS_CPUFREQ bool "TI OMAP2+" depends on ARCH_OMAP2PLUS default ARCH_OMAP2PLUS - select CPU_FREQ_TABLE config ARM_S3C_CPUFREQ bool
@@ -165,7 +159,6 @@ config ARM_S3C2412_CPUFREQ config ARM_S3C2416_CPUFREQ bool "S3C2416 CPU Frequency scaling support" depends on CPU_S3C2416 - select CPU_FREQ_TABLE help This adds the CPUFreq driver for the Samsung S3C2416 and S3C2450 SoC. The S3C2416 supports changing the rate of the
@@ -196,7 +189,6 @@ config ARM_S3C2440_CPUFREQ config ARM_S3C64XX_CPUFREQ bool "Samsung S3C64XX" depends on CPU_S3C6410 - select CPU_FREQ_TABLE default y help This adds the CPUFreq driver for Samsung S3C6410 SoC.
@@ -206,7 +198,6 @@ config ARM_S3C64XX_CPUFREQ config ARM_S5PV210_CPUFREQ bool "Samsung S5PV210 and S5PC110" depends on CPU_S5PV210 - select CPU_FREQ_TABLE default y help This adds the CPUFreq driver for Samsung S5PV210 and
@@ -223,7 +214,6 @@ config ARM_SA1110_CPUFREQ config ARM_SPEAR_CPUFREQ bool "SPEAr CPUFreq support" depends on PLAT_SPEAR - select CPU_FREQ_TABLE default y help This adds the CPUFreq driver support for SPEAr SOCs.
@@ -231,7 +221,6 @@ config ARM_SPEAR_CPUFREQ config ARM_TEGRA_CPUFREQ bool "TEGRA CPUFreq support" depends on ARCH_TEGRA - select CPU_FREQ_TABLE default y help This adds the CPUFreq driver support for TEGRA SOCs.
drivers/cpufreq/Kconfig.powerpc +0 -6
@@ -1,7 +1,6 @@ config CPU_FREQ_CBE tristate "CBE frequency scaling" depends on CBE_RAS && PPC_CELL - select CPU_FREQ_TABLE default m help This adds the cpufreq driver for Cell BE processors.
@@ -20,7 +19,6 @@ config CPU_FREQ_CBE_PMI config CPU_FREQ_MAPLE bool "Support for Maple 970FX Evaluation Board" depends on PPC_MAPLE - select CPU_FREQ_TABLE help This adds support for frequency switching on Maple 970FX Evaluation Board and compatible boards (IBM JS2x blades).
@@ -28,7 +26,6 @@ config CPU_FREQ_MAPLE config PPC_CORENET_CPUFREQ tristate "CPU frequency scaling driver for Freescale E500MC SoCs" depends on PPC_E500MC && OF && COMMON_CLK - select CPU_FREQ_TABLE select CLK_PPC_CORENET help This adds the CPUFreq driver support for Freescale e500mc,
@@ -38,7 +35,6 @@ config PPC_CORENET_CPUFREQ config CPU_FREQ_PMAC bool "Support for Apple PowerBooks" depends on ADB_PMU && PPC32 - select CPU_FREQ_TABLE help This adds support for frequency switching on Apple PowerBooks, this currently includes some models of iBook & Titanium
@@ -47,7 +43,6 @@ config CPU_FREQ_PMAC config CPU_FREQ_PMAC64 bool "Support for some Apple G5s" depends on PPC_PMAC && PPC64 - select CPU_FREQ_TABLE help This adds support for frequency switching on Apple iMac G5, and some of the more recent desktop G5 machines as well.
@@ -55,7 +50,6 @@ config CPU_FREQ_PMAC64 config PPC_PASEMI_CPUFREQ bool "Support for PA Semi PWRficient" depends on PPC_PASEMI - select CPU_FREQ_TABLE default y help This adds the support for frequency switching on PA Semi
drivers/cpufreq/Kconfig.x86 +0 -13
@@ -31,7 +31,6 @@ config X86_PCC_CPUFREQ config X86_ACPI_CPUFREQ tristate "ACPI Processor P-States driver" - select CPU_FREQ_TABLE depends on ACPI_PROCESSOR help This driver adds a CPUFreq driver which utilizes the ACPI
@@ -60,7 +59,6 @@ config X86_ACPI_CPUFREQ_CPB config ELAN_CPUFREQ tristate "AMD Elan SC400 and SC410" - select CPU_FREQ_TABLE depends on MELAN ---help--- This adds the CPUFreq driver for AMD Elan SC400 and SC410
@@ -76,7 +74,6 @@ config ELAN_CPUFREQ config SC520_CPUFREQ tristate "AMD Elan SC520" - select CPU_FREQ_TABLE depends on MELAN ---help--- This adds the CPUFreq driver for AMD Elan SC520 processor.
@@ -88,7 +85,6 @@ config SC520_CPUFREQ config X86_POWERNOW_K6 tristate "AMD Mobile K6-2/K6-3 PowerNow!" - select CPU_FREQ_TABLE depends on X86_32 help This adds the CPUFreq driver for mobile AMD K6-2+ and mobile
@@ -100,7 +96,6 @@ config X86_POWERNOW_K6 config X86_POWERNOW_K7 tristate "AMD Mobile Athlon/Duron PowerNow!" - select CPU_FREQ_TABLE depends on X86_32 help This adds the CPUFreq driver for mobile AMD K7 mobile processors.
@@ -118,7 +113,6 @@ config X86_POWERNOW_K7_ACPI config X86_POWERNOW_K8 tristate "AMD Opteron/Athlon64 PowerNow!" - select CPU_FREQ_TABLE depends on ACPI && ACPI_PROCESSOR && X86_ACPI_CPUFREQ help This adds the CPUFreq driver for K8/early Opteron/Athlon64 processors.
@@ -132,7 +126,6 @@ config X86_POWERNOW_K8 config X86_AMD_FREQ_SENSITIVITY tristate "AMD frequency sensitivity feedback powersave bias" depends on CPU_FREQ_GOV_ONDEMAND && X86_ACPI_CPUFREQ && CPU_SUP_AMD - select CPU_FREQ_TABLE help This adds AMD-specific powersave bias function to the ondemand governor, which allows it to make more power-conscious frequency
@@ -160,7 +153,6 @@ config X86_GX_SUSPMOD config X86_SPEEDSTEP_CENTRINO tristate "Intel Enhanced SpeedStep (deprecated)" - select CPU_FREQ_TABLE select X86_SPEEDSTEP_CENTRINO_TABLE if X86_32 depends on X86_32 || (X86_64 && ACPI_PROCESSOR) help
@@ -190,7 +182,6 @@ config X86_SPEEDSTEP_CENTRINO_TABLE config X86_SPEEDSTEP_ICH tristate "Intel Speedstep on ICH-M chipsets (ioport interface)" - select CPU_FREQ_TABLE depends on X86_32 help This adds the CPUFreq driver for certain mobile Intel Pentium III
@@ -204,7 +195,6 @@ config X86_SPEEDSTEP_ICH config X86_SPEEDSTEP_SMI tristate "Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)" - select CPU_FREQ_TABLE depends on X86_32 help This adds the CPUFreq driver for certain mobile Intel Pentium III
@@ -217,7 +207,6 @@ config X86_SPEEDSTEP_SMI config X86_P4_CLOCKMOD tristate "Intel Pentium 4 clock modulation" - select CPU_FREQ_TABLE help This adds the CPUFreq driver for Intel Pentium 4 / XEON processors. When enabled it will lower CPU temperature by skipping
@@ -259,7 +248,6 @@ config X86_LONGRUN config X86_LONGHAUL tristate "VIA Cyrix III Longhaul" - select CPU_FREQ_TABLE depends on X86_32 && ACPI_PROCESSOR help This adds the CPUFreq driver for VIA Samuel/CyrixIII,
@@ -272,7 +260,6 @@ config X86_LONGHAUL config X86_E_POWERSAVER tristate "VIA C7 Enhanced PowerSaver (DANGEROUS)" - select CPU_FREQ_TABLE depends on X86_32 && ACPI_PROCESSOR help This adds the CPUFreq driver for VIA C7 processors. However, this driver
drivers/cpufreq/Makefile +1 -4
@@ -1,5 +1,5 @@ # CPUfreq core -obj-$(CONFIG_CPU_FREQ) += cpufreq.o +obj-$(CONFIG_CPU_FREQ) += cpufreq.o freq_table.o # CPUfreq stats obj-$(CONFIG_CPU_FREQ_STAT) += cpufreq_stats.o
@@ -11,9 +11,6 @@ obj-$(CONFIG_CPU_FREQ_GOV_ONDEMAND) += cpufreq_ondemand.o obj-$(CONFIG_CPU_FREQ_GOV_CONSERVATIVE) += cpufreq_conservative.o obj-$(CONFIG_CPU_FREQ_GOV_COMMON) += cpufreq_governor.o -# CPUfreq cross-arch helpers -obj-$(CONFIG_CPU_FREQ_TABLE) += freq_table.o - obj-$(CONFIG_GENERIC_CPUFREQ_CPU0) += cpufreq-cpu0.o ##################################################################################
drivers/cpufreq/cpufreq.c +0 -2
@@ -997,9 +997,7 @@ static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)up_write (&per_cpu (cpu_policy_rwsem, policy->last_cpu)); -#ifdef CONFIG_CPU_FREQ_TABLE cpufreq_frequency_table_update_policy_cpu (policy); -#endif blocking_notifier_call_chain (&cpufreq_policy_notifier_list,CPUFREQ_UPDATE_POLICY_CPU , policy); }
drivers/thermal/Kconfig +0 -1
@@ -78,7 +78,6 @@ config THERMAL_GOV_USER_SPACE config CPU_THERMAL bool "generic cpu cooling support" depends on CPU_FREQ - select CPU_FREQ_TABLE help This implements the generic cpu cooling mechanism through frequency reduction. An ACPI version of this already exists
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 75/92 cpufreq: cpu0: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/cpufreq-cpu0.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-)
drivers/cpufreq/cpufreq-cpu0.c +1 -18
@@ -122,24 +122,7 @@ post_notify:static int cpu0_cpufreq_init (struct cpufreq_policy *policy) { -int ret; - - ret =cpufreq_table_validate_and_show (policy, freq_table); -if (ret) { -pr_err ("invalid frequency table: %d\n" , ret); -return ret; - } - - policy->cpuinfo.transition_latency = transition_latency; - -/* -* The driver only supports the SMP configuartion where all processors -* share the clock and voltage and clock. Use cpufreq affected_cpus -* interface to have all CPUs scaled together. -*/ -cpumask_setall (policy->cpus); - -return 0 ; +return cpufreq_generic_init (policy, freq_table, transition_latency); }static struct cpufreq_driver cpu0_cpufreq_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 76/92 cpufreq: cris: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/cris-artpec3-cpufreq.c | 6 +----- drivers/cpufreq/cris-etraxfs-cpufreq.c | 5 +---- 2 files changed, 2 insertions(+), 9 deletions(-)
drivers/cpufreq/cris-artpec3-cpufreq.c +1 -5
@@ -71,13 +71,9 @@ static int cris_freq_target(struct cpufreq_policy *policy,static int cris_freq_cpu_init (struct cpufreq_policy *policy) { -/* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - -return cpufreq_table_validate_and_show (policy, cris_freq_table); +return cpufreq_generic_init (policy, cris_freq_table,1000000 ); } -static struct cpufreq_driver cris_freq_driver = { .get = cris_freq_get_cpu_frequency, .verify = cpufreq_generic_frequency_table_verify,
drivers/cpufreq/cris-etraxfs-cpufreq.c +1 -4
@@ -70,10 +70,7 @@ static int cris_freq_target(struct cpufreq_policy *policy,static int cris_freq_cpu_init (struct cpufreq_policy *policy) { -/* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - -return cpufreq_table_validate_and_show (policy, cris_freq_table); +return cpufreq_generic_init (policy, cris_freq_table,1000000 ); }static struct cpufreq_driver cris_freq_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Re: [PATCH V2 Resend 76/92] cpufreq: cris: use cpufreq_generic_init() routine
Quoted 2 lines · Viresh Kumar
Use generic
cpufreq_generic_init()routine instead of replicating the same code here.
You should already have gotten my Acked-by: for this series, but here it is again:
Quoted 45 lines
Cc Mikael Starvik <[email protected]>Signed-off-by Viresh Kumar <[email protected]>--- drivers/cpufreq/cris-artpec3-cpufreq.c | 6 +----- drivers/cpufreq/cris-etraxfs-cpufreq.c | 5 +---- 2 files changed, 2 insertions(+), 9 deletions(-)drivers/cpufreq/cris-artpec3-cpufreq.c +1
-5@@ -71,13 +71,9 @@ static int cris_freq_target(struct cpufreq_policy *policy,static int cris_freq_cpu_init (struct cpufreq_policy *policy) { -/* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - -return cpufreq_table_validate_and_show (policy, cris_freq_table); +return cpufreq_generic_init (policy, cris_freq_table,1000000 ); } -static struct cpufreq_driver cris_freq_driver = { .get = cris_freq_get_cpu_frequency, .verify = cpufreq_generic_frequency_table_verify,drivers/cpufreq/cris-etraxfs-cpufreq.c +1
-4@@ -70,10 +70,7 @@ static int cris_freq_target(struct cpufreq_policy *policy,static int cris_freq_cpu_init (struct cpufreq_policy *policy) { -/* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency =1000000 ;/* 1ms */ - -return cpufreq_table_validate_and_show (policy, cris_freq_table); +return cpufreq_generic_init (policy, cris_freq_table,1000000 ); }static struct cpufreq_driver cris_freq_driver = {Signature · 1 line
1.7.12.rc2.18.g61b472e
/^JN - Jesper Nilsson
Signature · 1 line
Jesper Nilsson -- [email protected]
Viresh Kumar
maintainerPATCH RESEND v2 77/92 cpufreq: davinci: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/davinci-cpufreq.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)
drivers/cpufreq/davinci-cpufreq.c +1 -9
@@ -138,21 +138,13 @@ static int davinci_cpu_init(struct cpufreq_policy *policy)return result; } - result =cpufreq_table_validate_and_show (policy, freq_table); -if (result) { -pr_err ("%s: cpufreq_table_validate_and_show() failed" , - __func__); -return result; - } -/* * Time measurement across the target() function yields ~1500-1800us * time taken with no drivers on notification list. * Setting the latency to 2000 us to accommodate addition of drivers * to pre/post change notification list. */ - policy->cpuinfo.transition_latency =2000 *1000 ; -return 0 ; +return cpufreq_generic_init (policy, freq_table,2000 *1000 ); }static struct cpufreq_driver davinci_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 78/92 cpufreq: dbx500: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/dbx500-cpufreq.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-)
drivers/cpufreq/dbx500-cpufreq.c +1 -20
@@ -74,26 +74,7 @@ static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu)static int dbx500_cpufreq_init (struct cpufreq_policy *policy) { -int res; - -/* get policy fields based on the table */ - res =cpufreq_table_validate_and_show (policy, freq_table); -if (res) { -pr_err ("dbx500-cpufreq: Failed to read policy table\n" ); -return res; - } - -/* -* FIXME : Need to take time measurement across the target() -* function with no/some/all drivers in the notification -* list. -*/ - policy->cpuinfo.transition_latency =20 *1000 ;/* in ns */ - -/* policy sharing between dual CPUs */ -cpumask_setall (policy->cpus); - -return 0 ; +return cpufreq_generic_init (policy, freq_table,20 *1000 ); }static struct cpufreq_driver dbx500_cpufreq_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 79/92 cpufreq: exynos: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/exynos-cpufreq.c | 7 +------ drivers/cpufreq/exynos5440-cpufreq.c | 14 ++------------ 2 files changed, 3 insertions(+), 18 deletions(-)
drivers/cpufreq/exynos-cpufreq.c +1 -6
@@ -241,12 +241,7 @@ static struct notifier_block exynos_cpufreq_nb = {static int exynos_cpufreq_cpu_init (struct cpufreq_policy *policy) { -/* set the transition latency value */ - policy->cpuinfo.transition_latency =100000 ; - -cpumask_setall (policy->cpus); - -return cpufreq_table_validate_and_show (policy, exynos_info->freq_table); +return cpufreq_generic_init (policy, exynos_info->freq_table,100000 ); }static struct cpufreq_driver exynos_driver = {
drivers/cpufreq/exynos5440-cpufreq.c +2 -12
@@ -318,18 +318,8 @@ static void exynos_sort_descend_freq_table(void)static int exynos_cpufreq_cpu_init (struct cpufreq_policy *policy) { -int ret; - - ret =cpufreq_table_validate_and_show (policy, dvfs_info->freq_table); -if (ret) { -dev_err (dvfs_info->dev,"Invalid frequency table: %d\n" , ret); -return ret; - } - - policy->cpuinfo.transition_latency = dvfs_info->latency; -cpumask_setall (policy->cpus); - -return 0 ; +return cpufreq_generic_init (policy, dvfs_info->freq_table, + dvfs_info->latency); }static struct cpufreq_driver exynos_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 80/92 cpufreq: imx6q: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/imx6q-cpufreq.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-)
drivers/cpufreq/imx6q-cpufreq.c +1 -12
@@ -154,18 +154,7 @@ post_notify:static int imx6q_cpufreq_init (struct cpufreq_policy *policy) { -int ret; - - ret =cpufreq_table_validate_and_show (policy, freq_table); -if (ret) { -dev_err (cpu_dev,"invalid frequency table: %d\n" , ret); -return ret; - } - - policy->cpuinfo.transition_latency = transition_latency; -cpumask_setall (policy->cpus); - -return 0 ; +return cpufreq_generic_init (policy, freq_table, transition_latency); }static struct cpufreq_driver imx6q_cpufreq_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 81/92 cpufreq: kirkwood: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/kirkwood-cpufreq.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
drivers/cpufreq/kirkwood-cpufreq.c +1 -4
@@ -120,10 +120,7 @@ static int kirkwood_cpufreq_target(struct cpufreq_policy *policy,/* Module init and exit code */ static int kirkwood_cpufreq_cpu_init (struct cpufreq_policy *policy) { -/* cpuinfo and default policy values */ - policy->cpuinfo.transition_latency =5000 ;/* 5uS */ - -return cpufreq_table_validate_and_show (policy, kirkwood_freq_table); +return cpufreq_generic_init (policy, kirkwood_freq_table,5000 ); }static struct cpufreq_driver kirkwood_cpufreq_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 82/92 cpufreq: loongson2: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here. This driver wasn't setting transition_latency and so is getting set to 0 by default. Lets mark it explicitly by calling the generic routine with transition_latency as 0.
--- drivers/cpufreq/loongson2_cpufreq.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/cpufreq/loongson2_cpufreq.c +1 -2
@@ -131,8 +131,7 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy)return ret; } -return cpufreq_table_validate_and_show (policy, - &loongson2_clockmod_table[0 ]); +return cpufreq_generic_init (policy, &loongson2_clockmod_table[0 ],0 ); }static int loongson2_cpufreq_exit (struct cpufreq_policy *policy)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 83/92 cpufreq: maple: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/maple-cpufreq.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
drivers/cpufreq/maple-cpufreq.c +1 -8
@@ -165,16 +165,9 @@ static unsigned int maple_cpufreq_get_speed(unsigned int cpu)static int maple_cpufreq_cpu_init (struct cpufreq_policy *policy) { - policy->cpuinfo.transition_latency =12000 ; -/* secondary CPUs are tied to the primary one by the -* cpufreq core if in the secondary policy we tell it that -* it actually must be one policy together with all others. */ -cpumask_setall (policy->cpus); - -return cpufreq_table_validate_and_show (policy, maple_cpu_freqs); +return cpufreq_generic_init (policy, maple_cpu_freqs,12000 ); } -static struct cpufreq_driver maple_cpufreq_driver = { .name ="maple" , .flags =CPUFREQ_CONST_LOOPS ,
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 84/92 cpufreq: omap: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
This also rearranges the code a bit to make it more sensible. Also removes some unnecessary checks.
--- drivers/cpufreq/omap-cpufreq.c | 41 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 30 deletions(-)
drivers/cpufreq/omap-cpufreq.c +11 -30
@@ -160,50 +160,31 @@ static inline void freq_table_free(void)static int omap_cpu_init (struct cpufreq_policy *policy) { -int result =0 ; +int result; mpu_clk =clk_get (NULL ,"cpufreq_ck" );if (IS_ERR (mpu_clk))return PTR_ERR (mpu_clk); -if (policy->cpu >=NR_CPUS ) { - result = -EINVAL ; - goto fail_ck; - } - -if (!freq_table) +if (!freq_table) { result =opp_init_cpufreq_table (mpu_dev, &freq_table); - -if (result) { -dev_err (mpu_dev,"%s: cpu%d: failed creating freq table[%d]\n" , +if (result) { +dev_err (mpu_dev, +"%s: cpu%d: failed creating freq table[%d]\n" , __func__, policy->cpu, result); - goto fail_ck; + goto fail; + } }atomic_inc_return (&freq_table_users); - result =cpufreq_table_validate_and_show (policy, freq_table); -if (result) - goto fail_table; - -/* -* On OMAP SMP configuartion, both processors share the voltage -* and clock. So both CPUs needs to be scaled together and hence -* needs software co-ordination. Use cpufreq affected_cpus -* interface to handle this scenario. Additional is_smp() check -* is to keep SMP_ON_UP build working. -*/ -if (is_smp ()) -cpumask_setall (policy->cpus); -/* FIXME: what's the actual transition time? */ - policy->cpuinfo.transition_latency =300 *1000 ; - -return 0 ; + result =cpufreq_generic_init (policy, freq_table,300 *1000 ); +if (!result) +return 0 ; -fail_table:freq_table_free (); -fail_ck: +fail:clk_put (mpu_clk);return result; }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 85/92 cpufreq: pasemi: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/pasemi-cpufreq.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
drivers/cpufreq/pasemi-cpufreq.c +1 -8
@@ -204,20 +204,13 @@ static int pas_cpufreq_cpu_init(struct cpufreq_policy *policy)pr_debug ("%d: %d\n" , i, pas_freqs[i].frequency); } - policy->cpuinfo.transition_latency =get_gizmo_latency (); - cur_astate =get_cur_astate (policy->cpu);pr_debug ("current astate is at %d\n" ,cur_astate); policy->cur = pas_freqs[cur_astate].frequency; -cpumask_copy (policy->cpus, cpu_online_mask); - ppc_proc_freq = policy->cur *1000ul ; -/* this ensures that policy->cpuinfo_min and policy->cpuinfo_max -* are set correctly -*/ -return cpufreq_table_validate_and_show (policy, pas_freqs); +return cpufreq_generic_init (policy, pas_freqs,get_gizmo_latency ()); out_unmap_sdcpwr:iounmap (sdcpwr_mapbase);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 86/92 cpufreq: pmac32: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/pmac32-cpufreq.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
drivers/cpufreq/pmac32-cpufreq.c +1 -6
@@ -392,12 +392,7 @@ static int pmac_cpufreq_target( struct cpufreq_policy *policy,static int pmac_cpufreq_cpu_init (struct cpufreq_policy *policy) { -if (policy->cpu !=0 ) -return -ENODEV ; - - policy->cpuinfo.transition_latency = transition_latency; - -return cpufreq_table_validate_and_show (policy, pmac_cpu_freqs); +return cpufreq_generic_init (policy, pmac_cpu_freqs, transition_latency); }static u32 read_gpio (struct device_node *np)
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 87/92 cpufreq: pmac64: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/pmac64-cpufreq.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
drivers/cpufreq/pmac64-cpufreq.c +1 -8
@@ -347,16 +347,9 @@ static unsigned int g5_cpufreq_get_speed(unsigned int cpu)static int g5_cpufreq_cpu_init (struct cpufreq_policy *policy) { - policy->cpuinfo.transition_latency = transition_latency; -/* secondary CPUs are tied to the primary one by the -* cpufreq core if in the secondary policy we tell it that -* it actually must be one policy together with all others. */ -cpumask_copy (policy->cpus, cpu_online_mask); - -return cpufreq_table_validate_and_show (policy, g5_cpu_freqs); +return cpufreq_generic_init (policy, g5_cpu_freqs, transition_latency); } -static struct cpufreq_driver g5_cpufreq_driver = { .name ="powermac" , .flags =CPUFREQ_CONST_LOOPS ,
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 88/92 cpufreq: s3c: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/s3c2416-cpufreq.c | 6 ++---- drivers/cpufreq/s3c24xx-cpufreq.c | 13 +------------ drivers/cpufreq/s3c64xx-cpufreq.c | 5 ++--- 3 files changed, 5 insertions(+), 19 deletions(-)
drivers/cpufreq/s3c2416-cpufreq.c +2 -4
@@ -479,10 +479,8 @@ static int __init s3c2416_cpufreq_driver_init(struct cpufreq_policy *policy)/* Datasheet says PLL stabalisation time must be at least 300us, * so but add some fudge. (reference in LOCKCON0 register description) */ - policy->cpuinfo.transition_latency = (500 *1000 ) + - s3c_freq->regulator_latency; - - ret =cpufreq_table_validate_and_show (policy, s3c_freq->freq_table); + ret =cpufreq_generic_init (policy, s3c_freq->freq_table, + (500 *1000 ) + s3c_freq->regulator_latency);if (ret) goto err_freq_table;
drivers/cpufreq/s3c24xx-cpufreq.c +1 -12
@@ -373,18 +373,7 @@ struct clk *s3c_cpufreq_clk_get(struct device *dev, const char *name)static int s3c_cpufreq_init (struct cpufreq_policy *policy) { -printk (KERN_INFO "%s: initialising policy %p\n" , __func__, policy); - -if (policy->cpu !=0 ) -return -EINVAL ; - -/* feed the latency information from the cpu driver */ - policy->cpuinfo.transition_latency = cpu_cur.info->latency; - -if (ftab) -return cpufreq_table_validate_and_show (policy, ftab); - -return 0 ; +return cpufreq_generic_init (policy, ftab, cpu_cur.info->latency); }static int __init s3c_cpufreq_initclks (void )
drivers/cpufreq/s3c64xx-cpufreq.c +2 -3
@@ -239,9 +239,8 @@ static int s3c64xx_cpufreq_driver_init(struct cpufreq_policy *policy)* the PLLs, which we don't currently) is ~300us worst case, * but add some fudge. */ - policy->cpuinfo.transition_latency = (500 *1000 ) + regulator_latency; - - ret =cpufreq_table_validate_and_show (policy, s3c64xx_freq_table); + ret =cpufreq_generic_init (policy, s3c64xx_freq_table, + (500 *1000 ) + regulator_latency);if (ret !=0 ) {pr_err ("Failed to configure frequency table: %d\n" , ret);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 89/92 cpufreq: s5pv210: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/s5pv210-cpufreq.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/cpufreq/s5pv210-cpufreq.c +1 -3
@@ -543,9 +543,7 @@ static int __init s5pv210_cpu_init(struct cpufreq_policy *policy) s5pv210_dram_conf[1 ].refresh = (__raw_readl (S5P_VA_DMC1 +0x30 ) *1000 ); s5pv210_dram_conf[1 ].freq =clk_get_rate (dmc1_clk); - policy->cpuinfo.transition_latency =40000 ; - -return cpufreq_table_validate_and_show (policy, s5pv210_freq_table); +return cpufreq_generic_init (policy, s5pv210_freq_table,40000 ); out_dmc1:clk_put (dmc0_clk);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 90/92 cpufreq: sa11x0: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/sa1100-cpufreq.c | 6 +----- drivers/cpufreq/sa1110-cpufreq.c | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-)
drivers/cpufreq/sa1100-cpufreq.c +1 -5
@@ -218,11 +218,7 @@ static int sa1100_target(struct cpufreq_policy *policy,static int __init sa1100_cpu_init (struct cpufreq_policy *policy) { -if (policy->cpu !=0 ) -return -EINVAL ; - policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - -return cpufreq_table_validate_and_show (policy, sa11x0_freq_table); +return cpufreq_generic_init (policy, sa11x0_freq_table,CPUFREQ_ETERNAL ); }static struct cpufreq_driver sa1100_driver__refdata = {
drivers/cpufreq/sa1110-cpufreq.c +1 -5
@@ -332,11 +332,7 @@ static int sa1110_target(struct cpufreq_policy *policy,static int __init sa1110_cpu_init (struct cpufreq_policy *policy) { -if (policy->cpu !=0 ) -return -EINVAL ; - policy->cpuinfo.transition_latency =CPUFREQ_ETERNAL ; - -return cpufreq_table_validate_and_show (policy, sa11x0_freq_table); +return cpufreq_generic_init (policy, sa11x0_freq_table,CPUFREQ_ETERNAL ); }/* sa1110_driver needs __refdata because it must remain after init registers
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 91/92 cpufreq: spear: use cpufreq_generic_init() routine
Use generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/spear-cpufreq.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
drivers/cpufreq/spear-cpufreq.c +2 -12
@@ -171,18 +171,8 @@ static int spear_cpufreq_target(struct cpufreq_policy *policy,static int spear_cpufreq_init (struct cpufreq_policy *policy) { -int ret; - - ret =cpufreq_table_validate_and_show (policy, spear_cpufreq.freq_tbl); -if (ret) { -pr_err ("cpufreq_table_validate_and_show() failed" ); -return ret; - } - - policy->cpuinfo.transition_latency = spear_cpufreq.transition_latency; -cpumask_setall (policy->cpus); - -return 0 ; +return cpufreq_generic_init (policy, spear_cpufreq.freq_tbl, + spear_cpufreq.transition_latency); }static struct cpufreq_driver spear_cpufreq_driver = {
Signature · 1 line
1.7.12.rc2.18.g61b472e
Viresh Kumar
maintainerPATCH RESEND v2 92/92 cpufreq: tegra: use cpufreq_generic_init() routine
In reply to Viresh KumarUse generic cpufreq_generic_init() routine instead of replicating the same code here.
--- drivers/cpufreq/tegra-cpufreq.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
drivers/cpufreq/tegra-cpufreq.c +9 -4
@@ -204,19 +204,23 @@ static struct notifier_block tegra_cpu_pm_notifier = {static int tegra_cpu_init (struct cpufreq_policy *policy) { +int ret; +if (policy->cpu >=NUM_CPUS )return -EINVAL ;clk_prepare_enable (emc_clk);clk_prepare_enable (cpu_clk); -cpufreq_table_validate_and_show (policy, freq_table); target_cpu_speed[policy->cpu] =tegra_getspeed (policy->cpu);/* FIXME: what's the actual transition time? */ - policy->cpuinfo.transition_latency =300 *1000 ; - -cpumask_copy (policy->cpus, cpu_possible_mask); + ret =cpufreq_generic_init (policy, freq_table,300 *1000 ); +if (ret) { +clk_disable_unprepare (cpu_clk); +clk_disable_unprepare (emc_clk); +return ret; + }if (policy->cpu ==0 )register_pm_notifier (&tegra_cpu_pm_notifier);
@@ -227,6 +231,7 @@ static int tegra_cpu_init(struct cpufreq_policy *policy)static int tegra_cpu_exit (struct cpufreq_policy *policy) {cpufreq_frequency_table_put_attr (policy->cpu); +clk_disable_unprepare (cpu_clk);clk_disable_unprepare (emc_clk);return 0 ; }
Signature · 1 line
1.7.12.rc2.18.g61b472e
Quoted 12 lines · Viresh Kumar
Hi Rafael,
As discussed earlier, Part I is now part of your linux-next branch and so sending Part II for inclusion in bleeding-edge..
These are mostly oriented towards using generic .attr, .init(), .exit() and .verify() and are so clubbed together.
These doesn't conflict mostly with the other 11 cpufreq core cleanup patches that are floating around:
http://www.spinics.net/lists/cpufreq/msg07920.html
Quoted 8 lines
Only a minor conflict with following patch of that series for
arm_big_little.cfile:
http://www.spinics.net/lists/cpufreq/msg07929.htmlYou can resolve it easily, pretty straight forward.
These are based of your linux-next branch:
ba93c78 Merge branch 'pm-cpufreq-next' into linux-next
So I've just added this to bleeding-edge, but I have a couple complaints.
First off, this is three patch sets in one. The first part is the generic .attr(), exit() and .verify() one, the second part is the duplicated initialization and the third one is about cpufreq_generic_init(). They really should have been posted and reviewed separately.
And while I'm basically OK with the first and the third part, I'm concerned about the second one, because it has potential to introduce some subtle initialization issues (initializing something twice is not a bug per se, although it is inefficient, but failing to initialize that or initializing it with an incorrect value *is* a bug).
Second, can you please make your own patch sets apply on top of each other next time?
Besides, I'm not going to apply any patchset with more than 40 patches in it in one go any more unless I'm seriously convinced that this is the only way to go.
Thanks!
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Viresh Kumar
maintainerQuoted 1 line · Rafael J. Wysocki
So I've just added this to bleeding-edge, but I have a couple complaints.
Thanks..
Quoted 4 lines
First off, this is three patch sets in one. The first part is the generic .attr(),
exit()and .verify() one, the second part is the duplicated initialization and the third one is aboutcpufreq_generic_init(). They really should have been posted and reviewed separately.
They were posted and reviewed separately earlier.. Only this time I have merged them together for applying..
Quoted 6 lines
And while I'm basically OK with the first and the third part, I'm concerned about the second one, because it has potential to introduce some subtle initialization issues (initializing something twice is not a bug per se, although it is inefficient, but failing to initialize that or initializing it
with an incorrect value *is* a bug).
I agree.. Lets see if it breaks anything... I will get it fixed as soon as possible.. (BTW, there was a fixup for the last series that you missed to apply: fixup! cpufreq: sa11x0: Expose frequency table)
Quoted 2 lines
Second, can you please make your own patch sets apply on top of each other next time?
I wasn't sure if you are going to apply the 11 patch patchset before this one or not.. and hence have applied it directly on top of linux-next..
Quoted 4 lines
Besides, I'm not going to apply any patchset with more than 40 patches in it
in one go any more unless I'm seriously convinced that this is the only way to go.
Okay.. I will take care of this next time..
Quoted 20 lines · Viresh Kumar
Quoted 1 line · Rafael J. Wysocki
So I've just added this to bleeding-edge, but I have a couple complaints.
Thanks..
Quoted 4 lines
First off, this is three patch sets in one. The first part is the generic .attr(),
exit()and .verify() one, the second part is the duplicated initialization and the third one is aboutcpufreq_generic_init(). They really should have been posted and reviewed separately.They were posted and reviewed separately earlier.. Only this time I have merged them together for applying..
Quoted 6 lines
And while I'm basically OK with the first and the third part, I'm concerned about the second one, because it has potential to introduce some subtle initialization issues (initializing something twice is not a bug per se, although it is inefficient, but failing to initialize that or initializing it
with an incorrect value *is* a bug).
Quoted 3 lines
I agree.. Lets see if it breaks anything... I will get it fixed as soon as possible.. (BTW, there was a fixup for the last series that you missed to apply: fixup! cpufreq: sa11x0: Expose frequency table)
Any links?
Viresh Kumar
maintainerQuoted 26 lines · Rafael J. Wysocki
Quoted 25 lines · Viresh Kumar
Quoted 2 lines · Rafael J. Wysocki
So I've just added this to bleeding-edge, but I have a couple complaints.
Thanks..
Quoted 5 lines
First off, this is three patch sets in one. The first part is the generic
.attr(),exit()and .verify() one, the second part is the duplicated initialization and the third one is aboutcpufreq_generic_init(). They really should have been posted and reviewed separately.They were posted and reviewed separately earlier.. Only this time I have merged them together for applying..
Quoted 9 lines
And while I'm basically OK with the first and the third part, I'm concerned
about the second one, because it has potential to introduce some subtle initialization issues (initializing something twice is not a bug per se,
although it is inefficient, but failing to initialize that or initializing
it
with an incorrect value *is* a bug).
Quoted 6 lines
Quoted 4 lines
I agree.. Lets see if it breaks anything... I will get it fixed as soon as
possible.. (BTW, there was a fixup for the last series that you missed to apply: fixup! cpufreq: sa11x0: Expose frequency table)Any links?
https://lkml.org/lkml/2013/10/4/7
Attached again..
From d2e1eb969ebdb66e3cc199fbbbe2e2a1a8e2960b Mon Sep 17 00:00:00 2001
Message-Id: <d2e1eb969ebdb66e3cc199fbbbe2e2a1a8e2960b.1381541098.git.viresh.kumar@linaro.org>
From: Viresh Kumar <[email protected]>
Date: Fri, 4 Oct 2013 10:48:16 +0530
Subject: [PATCH] fixup! cpufreq: sa11x0: Expose frequency table
--- arch/arm/mach-sa1100/generic.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
arch/arm/mach-sa1100/generic.h +1 -2
@@ -3,6 +3,7 @@* * Author: Nicolas Pitre */ +#include <linux/cpufreq.h> #include <linux/reboot.h> extern void sa1100_timer_init (void );
@@ -19,8 +20,6 @@ extern void sa11x0_init_late(void);extern void sa1110_mb_enable (void );extern void sa1110_mb_disable (void ); -struct cpufreq_policy ; -extern struct cpufreq_frequency_table sa11x0_freq_table[];extern unsigned int sa11x0_freq_to_ppcr (unsigned int khz);extern int sa11x0_verify_speed (struct cpufreq_policy *policy);
Signature · 1 line
1.7.12.rc2.18.g61b472e
Quoted 27 lines · Viresh Kumar
Quoted 26 lines · Rafael J. Wysocki
Quoted 25 lines · Viresh Kumar
Quoted 2 lines · Rafael J. Wysocki
So I've just added this to bleeding-edge, but I have a couple complaints.
Thanks..
Quoted 5 lines
First off, this is three patch sets in one. The first part is the generic
.attr(),exit()and .verify() one, the second part is the duplicated initialization and the third one is aboutcpufreq_generic_init(). They really should have been posted and reviewed separately.They were posted and reviewed separately earlier.. Only this time I have merged them together for applying..
Quoted 9 lines
And while I'm basically OK with the first and the third part, I'm concerned
about the second one, because it has potential to introduce some subtle initialization issues (initializing something twice is not a bug per se,
although it is inefficient, but failing to initialize that or initializing
it
with an incorrect value *is* a bug).
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
I agree.. Lets see if it breaks anything... I will get it fixed as soon as
possible.. (BTW, there was a fixup for the last series that you missed to apply: fixup! cpufreq: sa11x0: Expose frequency table)Any links?
OK, so which commit introduced the breakage?
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Viresh Kumar
maintainerQuoted 36 lines · Rafael J. Wysocki
Quoted 35 lines · Viresh Kumar
Quoted 34 lines · Rafael J. Wysocki
Quoted 32 lines · Viresh Kumar
Quoted 2 lines · Rafael J. Wysocki
So I've just added this to bleeding-edge, but I have a couple complaints.
Thanks..
Quoted 6 lines
First off, this is three patch sets in one. The first part is the generic
.attr(),exit()and .verify() one, the second part is the duplicated initialization and the third one is aboutcpufreq_generic_init(). They
really should have been posted and reviewed separately.They were posted and reviewed separately earlier.. Only this time I have merged them together for applying..
Quoted 10 lines
And while I'm basically OK with the first and the third part, I'm concerned
about the second one, because it has potential to introduce some subtle
initialization issues (initializing something twice is not a bug per se,
although it is inefficient, but failing to initialize that or initializing
it
with an incorrect value *is* a bug).I agree.. Lets see if it breaks anything... I will get it fixed as soon
as
possible.. (BTW, there was a fixup for the last series that you missed to apply: fixup! cpufreq: sa11x0: Expose frequency table)
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
Any links?
OK, so which commit introduced the breakage?
I thought you will pick it from the link :)
22c8b4f cpufreq: sa11x0: Expose frequency table
Rafael J. Wysocki
AppliedQuoted 39 lines · Viresh Kumar
Quoted 38 lines · Rafael J. Wysocki
Quoted 37 lines · Viresh Kumar
Quoted 35 lines · Rafael J. Wysocki
Quoted 27 lines · Viresh Kumar
Quoted 2 lines · Rafael J. Wysocki
So I've just added this to bleeding-edge, but I have a couple complaints.
Thanks..
Quoted 6 lines
First off, this is three patch sets in one. The first part is the generic
.attr(),exit()and .verify() one, the second part is the duplicated initialization and the third one is aboutcpufreq_generic_init(). They
really should have been posted and reviewed separately.They were posted and reviewed separately earlier.. Only this time I have merged them together for applying..
Quoted 10 lines
And while I'm basically OK with the first and the third part, I'm concerned
about the second one, because it has potential to introduce some subtle
initialization issues (initializing something twice is not a bug per se,
although it is inefficient, but failing to initialize that or initializing
it
with an incorrect value *is* a bug).Quoted 5 lines
I agree.. Lets see if it breaks anything... I will get it fixed as soon
as
possible.. (BTW, there was a fixup for the last series that you missed to apply: fixup! cpufreq: sa11x0: Expose frequency table)Any links?
Quoted 7 lines
Quoted 3 lines
Quoted 1 line
OK, so which commit introduced the breakage?
I thought you will pick it from the link :)
22c8b4f cpufreq: sa11x0: Expose frequency table
Applied.
Next time please respin the original patch instead of posting "fixups", because that is less than helpful.
Thanks!
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Viresh Kumar
maintainerQuoted 3 lines · Rafael J. Wysocki
Applied.
Next time please respin the original patch instead of posting "fixups",
Sure
Quoted 1 line
because that is less than helpful.
I though you will merge it with offending commit and so posted fixup. I will post separate commits in future and will leave this to you to merge or apply separately.
Thanks.