Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95cf1468 authored by Ralf Baechle's avatar Ralf Baechle
Browse files

MIPS: Loongson 2: Sort out clock managment.



For unexplainable reasons the Loongson 2 clock API was implemented in a
module so fixing this involved shifting large amounts of code around.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 4b00951f
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -50,15 +50,4 @@ void clk_recalc_rate(struct clk *);
int clk_register(struct clk *);
void clk_unregister(struct clk *);

/* the exported API, in addition to clk_set_rate */
/**
 * clk_set_rate_ex - set the clock rate for a clock source, with additional parameter
 * @clk: clock source
 * @rate: desired clock rate in Hz
 * @algo_id: algorithm id to be passed down to ops->set_rate
 *
 * Returns success (0) or negative errno.
 */
int clk_set_rate_ex(struct clk *clk, unsigned long rate, int algo_id);

#endif				/* __ASM_MIPS_CLOCK_H */
+0 −1
Original line number Diff line number Diff line
@@ -245,7 +245,6 @@ static inline void do_perfcnt_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[];

/* Chip Config */
+1 −1
Original line number Diff line number Diff line
@@ -2,4 +2,4 @@
# Makefile for the Linux/MIPS cpufreq.
#

obj-$(CONFIG_LOONGSON2_CPUFREQ) += loongson2_cpufreq.o loongson2_clock.o
obj-$(CONFIG_LOONGSON2_CPUFREQ) += loongson2_cpufreq.o
+20 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@

#include <asm/clock.h>

#include <loongson.h>
#include <asm/mach-loongson/loongson.h>

static uint nowait;

@@ -181,6 +181,25 @@ static struct platform_driver platform_driver = {
	.id_table = platform_device_ids,
};

/*
 * This is the simple version of Loongson-2 wait, Maybe we need do this in
 * interrupt disabled context.
 */

static DEFINE_SPINLOCK(loongson2_wait_lock);

static void loongson2_cpu_wait(void)
{
	unsigned long flags;
	u32 cpu_freq;

	spin_lock_irqsave(&loongson2_wait_lock, flags);
	cpu_freq = LOONGSON_CHIPCFG0;
	LOONGSON_CHIPCFG0 &= ~0x7;      /* Put CPU into wait mode */
	LOONGSON_CHIPCFG0 = cpu_freq;   /* Restore CPU state */
	spin_unlock_irqrestore(&loongson2_wait_lock, flags);
}

static int __init cpufreq_init(void)
{
	int ret;
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ config LEMOTE_MACH2F
	select CSRC_R4K if ! MIPS_EXTERNAL_TIMER
	select DMA_NONCOHERENT
	select GENERIC_ISA_DMA_SUPPORT_BROKEN
	select HAVE_CLK
	select HW_HAS_PCI
	select I8259
	select IRQ_CPU
Loading