Message ID | oro8uxgfey.fsf@livre.home (mailing list archive) |
---|---|
State | Mainlined, archived |
Headers | show |
Series | [Loongson2F] adjust cpufreq uses of LOONGSON_CHIPCFG | expand |
On Tue, Jan 21, 2020 at 1:39 PM Alexandre Oliva <lxoliva@fsfla.org> wrote: > > The post-fork cleanup of loongson2ef from loongson64 changed > LOONGSON_CHIPCFG from a single-argument functional macro to a > non-functional macro with an mmio address in loongson2ef, but > loongson2_cpufreq still uses the notation of a functional macro call > expecting it to be an lvalue. Fixed based on loongson_suspend_enter. > > Signed-off-by: Alexandre Oliva <lxoliva@fsfla.org> > Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> > Cc: linux-mips@vger.kernel.org > Cc: paul.burton@mips.com > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Queued up as 5.6 material under modified subject ("cpufreq: loongson2_cpufreq: adjust cpufreq uses of LOONGSON_CHIPCFG"), thanks! > --- > drivers/cpufreq/loongson2_cpufreq.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/cpufreq/loongson2_cpufreq.c b/drivers/cpufreq/loongson2_cpufreq.c > index 84f0eee..ace2d46 100644 > --- a/drivers/cpufreq/loongson2_cpufreq.c > +++ b/drivers/cpufreq/loongson2_cpufreq.c > @@ -144,9 +144,11 @@ static void loongson2_cpu_wait(void) > u32 cpu_freq; > > spin_lock_irqsave(&loongson2_wait_lock, flags); > - cpu_freq = LOONGSON_CHIPCFG(0); > - LOONGSON_CHIPCFG(0) &= ~0x7; /* Put CPU into wait mode */ > - LOONGSON_CHIPCFG(0) = cpu_freq; /* Restore CPU state */ > + cpu_freq = readl(LOONGSON_CHIPCFG); > + /* Put CPU into wait mode */ > + writel(readl(LOONGSON_CHIPCFG) & ~0x7, LOONGSON_CHIPCFG); > + /* Restore CPU state */ > + writel(cpu_freq, LOONGSON_CHIPCFG); > spin_unlock_irqrestore(&loongson2_wait_lock, flags); > local_irq_enable(); > } > -- > 2.7.4 > > -- > Alexandre Oliva, freedom fighter he/him https://FSFLA.org/blogs/lxo > Free Software Evangelist Stallman was right, but he's left :( > GNU Toolchain Engineer FSMatrix: It was he who freed the first of us > FSF & FSFLA board member The Savior shall return (true);
diff --git a/drivers/cpufreq/loongson2_cpufreq.c b/drivers/cpufreq/loongson2_cpufreq.c index 84f0eee..ace2d46 100644 --- a/drivers/cpufreq/loongson2_cpufreq.c +++ b/drivers/cpufreq/loongson2_cpufreq.c @@ -144,9 +144,11 @@ static void loongson2_cpu_wait(void) u32 cpu_freq; spin_lock_irqsave(&loongson2_wait_lock, flags); - cpu_freq = LOONGSON_CHIPCFG(0); - LOONGSON_CHIPCFG(0) &= ~0x7; /* Put CPU into wait mode */ - LOONGSON_CHIPCFG(0) = cpu_freq; /* Restore CPU state */ + cpu_freq = readl(LOONGSON_CHIPCFG); + /* Put CPU into wait mode */ + writel(readl(LOONGSON_CHIPCFG) & ~0x7, LOONGSON_CHIPCFG); + /* Restore CPU state */ + writel(cpu_freq, LOONGSON_CHIPCFG); spin_unlock_irqrestore(&loongson2_wait_lock, flags); local_irq_enable(); }