Hi, Gang
>
>
> This patch updates some aspects of the current implementation of
> cpufreq driver for Loongson2.
>
> 1) A default cpu_wait handler is installed such that the cpu will be
> alive at the lowest possible power level when a cpu_wait call is made;
>
> 2) The number of frequency levels is reduced to 3, and the lowest
> frequency is capped as a half of the full cpu speed. The "nowait" option
> is removed.
>
> Thanks!
Herein, You need to add a more line:
Signed-off-by: Gang Liang <randomizedthinking@gmail.com>
You can generate it automatically with:
$ git commit -s
or
$ git commit --amend -s
If you have configured your name and email address with:
$ git config --global user.name "Gang Liang"
$ git config --global user.email "randomizedthinking@gmail.com"
>
> ---
> arch/mips/include/asm/mach-loongson/loongson.h | 4 +-
> arch/mips/kernel/cpu-probe.c | 21 +++++++++
> arch/mips/kernel/cpufreq/loongson2_clock.c | 52 +++--------------------
> arch/mips/kernel/cpufreq/loongson2_cpufreq.c | 54
> +++++++++---------------
> 4 files changed, 50 insertions(+), 81 deletions(-)
>
> diff --git a/arch/mips/include/asm/mach-loongson/loongson.h
> b/arch/mips/include/asm/mach-loongson/loongson.h
> index 53d0bef..33164b9 100644
> --- a/arch/mips/include/asm/mach-loongson/loongson.h
> +++ b/arch/mips/include/asm/mach-loongson/loongson.h
> @@ -242,8 +242,8 @@ extern int mach_i8259_irq(void);
>
> #ifdef CONFIG_CPU_SUPPORTS_CPUFREQ
> #include <linux/cpufreq.h>
> -extern void loongson2_cpu_wait(void);
> -extern struct cpufreq_frequency_table loongson2_clockmod_table[];
> +/* extern void loongson2_cpu_wait(void); */
> +/* extern struct cpufreq_frequency_table loongson2_clockmod_table[]; */
Why not remove them directly?
>
> /* Chip Config */
> #define LOONGSON_CHIPCFG0 LOONGSON_REG(LOONGSON_REGBASE + 0x80)
> diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
> index be5bb16..5b3072c 100644
> --- a/arch/mips/kernel/cpu-probe.c
> +++ b/arch/mips/kernel/cpu-probe.c
> @@ -25,6 +25,9 @@
> #include <asm/system.h>
> #include <asm/watch.h>
> #include <asm/spram.h>
> +
> +#include <loongson.h>
> +
This may fail when building on non-Loongson platform.
Perhaps we need to add:
#ifdef CONFIG_CPU_LOONGSON2
#include <loongson.h>
#endif
> /*
> * Not all of the MIPS CPUs have the "wait" instruction available. Moreover,
> * the implementation of the "wait" feature differs between CPU families. This
> @@ -51,6 +54,21 @@ static void r39xx_wait(void)
>
> extern void r4k_wait(void);
>
> +DEFINE_SPINLOCK(loongson2_wait_lock);
Perhaps we'd better use the RAW spinlock here:
DEFINE_RAW_SPINLOCK(loongson2_wait_lock);
and the operation should be raw_spin_lock_irqsave/restore...
> +static void loongson2_cpu_wait(void)
> +{
> + u32 cpu_freq;
> + unsigned long flags;
> +
The indent should be a TAB(the same to the others), you can try to
format it with:
indent -linux /path/to/file ...
and please check it with scripts/checkpatch.pl before sending your
next revision.
$ ./scripts/checkpatch.pl --strict /path/to/your_patch
and fix all of the errors and the warnings if possible.
> + /* enter the lowest power mode available while still alive */
> + /* future work: check cpu freq -- do nothing if no change */
> + /* otherwise, change the frequency and propagate the clock rate */
For Comments, you'd better use something like this:
/*
* enter ....
*/
and if you are using vim, you can format it with :gqap.
> + spin_lock_irqsave(&loongson2_wait_lock, flags);
> + cpu_freq = LOONGSON_CHIPCFG0;
> + LOONGSON_CHIPCFG0 = (cpu_freq & ~0x7) | 1;
The indent problem here too.
> + spin_unlock_irqrestore(&loongson2_wait_lock, flags);
> +}
> +
> /*
> * This variant is preferable as it allows testing need_resched and going to
> * sleep depending on the outcome atomically. Unfortunately the "It is
> @@ -212,6 +230,9 @@ void __init check_wait(void)
> if ((c->processor_id & 0x00ff) >= 0x40)
> cpu_wait = r4k_wait;
> break;
> + case CPU_LOONGSON2:
> + cpu_wait = loongson2_cpu_wait;
> + break;
indent problem ;)
> default:
> break;
> }
[...]
Will take a look at the left parts later.
Regards,
Wu Zhangjin
|