diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-02 07:44:16 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-02 07:44:16 -0800 | 
| commit | aebb2afd5420c860b7fbc3882a323ef1247fbf16 (patch) | |
| tree | 05ee0efcebca5ec421de44de7a6d6271088c64a8 /arch/mips/kernel/cpufreq/loongson2_cpufreq.c | |
| parent | 8eae508b7c6ff502a71d0293b69e97c5505d5840 (diff) | |
| parent | edb15d83a875a1f4b1576188844db5c330c3267d (diff) | |
| download | olio-linux-3.10-aebb2afd5420c860b7fbc3882a323ef1247fbf16.tar.xz olio-linux-3.10-aebb2afd5420c860b7fbc3882a323ef1247fbf16.zip  | |
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS updates from Ralf Baechle:
 o Add basic support for the Mediatek/Ralink Wireless SoC family.
 o The Qualcomm Atheros platform is extended by support for the new
   QCA955X SoC series as well as a bunch of patches that get the code
   ready for OF support.
 o Lantiq and BCM47XX platform have a few improvements and bug fixes.
 o MIPS has sent a few patches that get the kernel ready for the
   upcoming microMIPS support.
 o The rest of the series is made up of small bug fixes and cleanups
   that relate to various parts of the MIPS code.  The biggy in there is
   a whitespace cleanup.  After I was sent another set of whitespace
   cleanup patches I decided it was the time to clean the whitespace
   "issues" for once and and that touches many files below arch/mips/.
Fix up silly conflicts, mostly due to whitespace cleanups.
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (105 commits)
  MIPS: Quit exporting kernel internel break codes to uapi/asm/break.h
  MIPS: remove broken conditional inside vpe loader code
  MIPS: SMTC: fix implicit declaration of set_vi_handler
  MIPS: early_printk: drop __init annotations
  MIPS: Probe for and report hardware virtualization support.
  MIPS: ath79: add support for the Qualcomm Atheros AP136-010 board
  MIPS: ath79: add USB controller registration code for the QCA955X SoCs
  MIPS: ath79: add PCI controller registration code for the QCA955X SoCs
  MIPS: ath79: add WMAC registration code for the QCA955X SoCs
  MIPS: ath79: register UART for the QCA955X SoCs
  MIPS: ath79: add QCA955X specific glue to ath79_device_reset_{set, clear}
  MIPS: ath79: add GPIO setup code for the QCA955X SoCs
  MIPS: ath79: add IRQ handling code for the QCA955X SoCs
  MIPS: ath79: add clock setup code for the QCA955X SoCs
  MIPS: ath79: add SoC detection code for the QCA955X SoCs
  MIPS: ath79: add early printk support for the QCA955X SoCs
  MIPS: ath79: fix WMAC IRQ resource assignment
  mips: reserve elfcorehdr
  mips: Make sure kernel memory is in iomem
  MIPS: ath79: use dynamically allocated USB platform devices
  ...
Diffstat (limited to 'arch/mips/kernel/cpufreq/loongson2_cpufreq.c')
| -rw-r--r-- | arch/mips/kernel/cpufreq/loongson2_cpufreq.c | 19 | 
1 files changed, 14 insertions, 5 deletions
diff --git a/arch/mips/kernel/cpufreq/loongson2_cpufreq.c b/arch/mips/kernel/cpufreq/loongson2_cpufreq.c index e7c98e2b78b..3237c5235f9 100644 --- a/arch/mips/kernel/cpufreq/loongson2_cpufreq.c +++ b/arch/mips/kernel/cpufreq/loongson2_cpufreq.c @@ -107,6 +107,8 @@ static int loongson2_cpufreq_target(struct cpufreq_policy *policy,  static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy)  {  	int i; +	unsigned long rate; +	int ret;  	if (!cpu_online(policy->cpu))  		return -ENODEV; @@ -117,15 +119,22 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy)  		return PTR_ERR(cpuclk);  	} -	cpuclk->rate = cpu_clock_freq / 1000; -	if (!cpuclk->rate) +	rate = cpu_clock_freq / 1000; +	if (!rate) { +		clk_put(cpuclk);  		return -EINVAL; +	} +	ret = clk_set_rate(cpuclk, rate); +	if (ret) { +		clk_put(cpuclk); +		return ret; +	}  	/* clock table init */  	for (i = 2;  	     (loongson2_clockmod_table[i].frequency != CPUFREQ_TABLE_END);  	     i++) -		loongson2_clockmod_table[i].frequency = (cpuclk->rate * i) / 8; +		loongson2_clockmod_table[i].frequency = (rate * i) / 8;  	policy->cur = loongson2_cpufreq_get(policy->cpu); @@ -195,8 +204,8 @@ static void loongson2_cpu_wait(void)  	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 */ +	LOONGSON_CHIPCFG0 &= ~0x7;	/* Put CPU into wait mode */ +	LOONGSON_CHIPCFG0 = cpu_freq;	/* Restore CPU state */  	spin_unlock_irqrestore(&loongson2_wait_lock, flags);  }  |