diff options
author | wanzongshun <mcuos.com@gmail.com> | 2009-07-14 10:10:43 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-07-17 08:38:17 -0400 |
commit | db58e90fdbe9d12b431ae8d8e856961ce75d74f0 (patch) | |
tree | 3367a0abc6e955ecb16cbc8f33873a015b70230c /arch/arm/mach-w90x900/clock.c | |
parent | d2c241955095b129459985a8c02d85b70984b945 (diff) |
[ARM] 5602/1: Add sub clock api for w90p910 platform
Add sub clock api for w90p910 platform.
Signed-off-by: Wan ZongShun <mcuos.com@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-w90x900/clock.c')
-rw-r--r-- | arch/arm/mach-w90x900/clock.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/mach-w90x900/clock.c b/arch/arm/mach-w90x900/clock.c index f420613cd395..49cf1fbc14eb 100644 --- a/arch/arm/mach-w90x900/clock.c +++ b/arch/arm/mach-w90x900/clock.c | |||
@@ -25,6 +25,8 @@ | |||
25 | 25 | ||
26 | #include "clock.h" | 26 | #include "clock.h" |
27 | 27 | ||
28 | #define SUBCLK 0x24 | ||
29 | |||
28 | static DEFINE_SPINLOCK(clocks_lock); | 30 | static DEFINE_SPINLOCK(clocks_lock); |
29 | 31 | ||
30 | int clk_enable(struct clk *clk) | 32 | int clk_enable(struct clk *clk) |
@@ -68,6 +70,22 @@ void w90x900_clk_enable(struct clk *clk, int enable) | |||
68 | __raw_writel(clken, W90X900_VA_CLKPWR); | 70 | __raw_writel(clken, W90X900_VA_CLKPWR); |
69 | } | 71 | } |
70 | 72 | ||
73 | void w90x900_subclk_enable(struct clk *clk, int enable) | ||
74 | { | ||
75 | unsigned int clocks = clk->cken; | ||
76 | unsigned long clken; | ||
77 | |||
78 | clken = __raw_readl(W90X900_VA_CLKPWR + SUBCLK); | ||
79 | |||
80 | if (enable) | ||
81 | clken |= clocks; | ||
82 | else | ||
83 | clken &= ~clocks; | ||
84 | |||
85 | __raw_writel(clken, W90X900_VA_CLKPWR + SUBCLK); | ||
86 | } | ||
87 | |||
88 | |||
71 | void clks_register(struct clk_lookup *clks, size_t num) | 89 | void clks_register(struct clk_lookup *clks, size_t num) |
72 | { | 90 | { |
73 | int i; | 91 | int i; |