-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM: 5634/1: Add static setting cpu frequence for w90p910 platform
Add static setting cpu frequence for w90p910 platform. Signed-off-by: Wan ZongShun <mcuos.com@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
- Loading branch information
wanzongshun
authored and
Russell King
committed
Aug 1, 2009
1 parent
897bd6a
commit ae45b1c
Showing
6 changed files
with
228 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/* | ||
* linux/arch/arm/mach-w90x900/clksel.c | ||
* | ||
* Copyright (c) 2008 Nuvoton technology corporation | ||
* | ||
* Wan ZongShun <mcuos.com@gmail.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation;version 2 of the License. | ||
*/ | ||
|
||
#include <linux/module.h> | ||
#include <linux/kernel.h> | ||
#include <linux/device.h> | ||
#include <linux/list.h> | ||
#include <linux/errno.h> | ||
#include <linux/err.h> | ||
#include <linux/string.h> | ||
#include <linux/clk.h> | ||
#include <linux/mutex.h> | ||
#include <linux/io.h> | ||
|
||
#include <mach/hardware.h> | ||
#include <mach/regs-clock.h> | ||
|
||
#define PLL0 0x00 | ||
#define PLL1 0x01 | ||
#define OTHER 0x02 | ||
#define EXT 0x03 | ||
#define MSOFFSET 0x0C | ||
#define ATAOFFSET 0x0a | ||
#define LCDOFFSET 0x06 | ||
#define AUDOFFSET 0x04 | ||
#define CPUOFFSET 0x00 | ||
|
||
static DEFINE_MUTEX(clksel_sem); | ||
|
||
static void clock_source_select(const char *dev_id, unsigned int clkval) | ||
{ | ||
unsigned int clksel, offset; | ||
|
||
clksel = __raw_readl(REG_CLKSEL); | ||
|
||
if (strcmp(dev_id, "w90p910-ms") == 0) | ||
offset = MSOFFSET; | ||
else if (strcmp(dev_id, "w90p910-atapi") == 0) | ||
offset = ATAOFFSET; | ||
else if (strcmp(dev_id, "w90p910-lcd") == 0) | ||
offset = LCDOFFSET; | ||
else if (strcmp(dev_id, "w90p910-audio") == 0) | ||
offset = AUDOFFSET; | ||
else | ||
offset = CPUOFFSET; | ||
|
||
clksel &= ~(0x03 << offset); | ||
clksel |= (clkval << offset); | ||
|
||
__raw_writel(clksel, REG_CLKSEL); | ||
} | ||
|
||
void w90p910_clock_source(struct device *dev, unsigned char *src) | ||
{ | ||
unsigned int clkval; | ||
const char *dev_id; | ||
|
||
BUG_ON(!src); | ||
clkval = 0; | ||
|
||
mutex_lock(&clksel_sem); | ||
|
||
if (dev) | ||
dev_id = dev_name(dev); | ||
else | ||
dev_id = "cpufreq"; | ||
|
||
if (strcmp(src, "pll0") == 0) | ||
clkval = PLL0; | ||
else if (strcmp(src, "pll1") == 0) | ||
clkval = PLL1; | ||
else if (strcmp(src, "ext") == 0) | ||
clkval = EXT; | ||
else if (strcmp(src, "oth") == 0) | ||
clkval = OTHER; | ||
|
||
clock_source_select(dev_id, clkval); | ||
|
||
mutex_unlock(&clksel_sem); | ||
} | ||
EXPORT_SYMBOL(w90p910_clock_source); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* arch/arm/mach-w90x900/include/mach/regs-ebi.h | ||
* | ||
* Copyright (c) 2009 Nuvoton technology corporation. | ||
* | ||
* Wan ZongShun <mcuos.com@gmail.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation;version 2 of the License. | ||
* | ||
*/ | ||
|
||
#ifndef __ASM_ARCH_REGS_EBI_H | ||
#define __ASM_ARCH_REGS_EBI_H | ||
|
||
/* EBI Control Registers */ | ||
|
||
#define EBI_BA W90X900_VA_EBI | ||
#define REG_EBICON (EBI_BA + 0x00) | ||
#define REG_ROMCON (EBI_BA + 0x04) | ||
#define REG_SDCONF0 (EBI_BA + 0x08) | ||
#define REG_SDCONF1 (EBI_BA + 0x0C) | ||
#define REG_SDTIME0 (EBI_BA + 0x10) | ||
#define REG_SDTIME1 (EBI_BA + 0x14) | ||
#define REG_EXT0CON (EBI_BA + 0x18) | ||
#define REG_EXT1CON (EBI_BA + 0x1C) | ||
#define REG_EXT2CON (EBI_BA + 0x20) | ||
#define REG_EXT3CON (EBI_BA + 0x24) | ||
#define REG_EXT4CON (EBI_BA + 0x28) | ||
#define REG_CKSKEW (EBI_BA + 0x2C) | ||
|
||
#endif /* __ASM_ARCH_REGS_EBI_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters