summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/s5pc1xx
diff options
context:
space:
mode:
authorMinkyu Kang <mk7.kang@samsung.com>2010-08-24 06:51:55 (GMT)
committerMinkyu Kang <mk7.kang@samsung.com>2010-08-30 05:44:16 (GMT)
commitf70409aff3a10e22ff9c66f87e9cbc3de7cbd7f7 (patch)
treec8b7d4b4127f3d908b403d230940a9c122ed44e8 /arch/arm/cpu/armv7/s5pc1xx
parent545dabbeef56ffea33cedee56067edacd9fb90f0 (diff)
downloadu-boot-f70409aff3a10e22ff9c66f87e9cbc3de7cbd7f7.tar.xz
ARMV7: S5P: separate the peripheral clocks
Because of peripheral devices can select clock sources, separate the peripheral clocks. (pwm, uart and so on) It just return the pclk at s5pc1xx SoC, but s5pc210 SoC must be calculated by own clock register setting. Signed-off-by: Minkyu Kang <mk7.kang@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'arch/arm/cpu/armv7/s5pc1xx')
-rw-r--r--arch/arm/cpu/armv7/s5pc1xx/clock.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/arch/arm/cpu/armv7/s5pc1xx/clock.c b/arch/arm/cpu/armv7/s5pc1xx/clock.c
index c9b5485..98a27e5 100644
--- a/arch/arm/cpu/armv7/s5pc1xx/clock.c
+++ b/arch/arm/cpu/armv7/s5pc1xx/clock.c
@@ -38,7 +38,8 @@
#define CONFIG_SYS_CLK_FREQ_C110 24000000
#endif
-unsigned long (*get_pclk)(void);
+unsigned long (*get_uart_clk)(int dev_index);
+unsigned long (*get_pwm_clk)(void);
unsigned long (*get_arm_clk)(void);
unsigned long (*get_pll_clk)(int);
@@ -297,15 +298,33 @@ static unsigned long s5pc100_get_pclk(void)
return get_pclkd1();
}
+/* s5pc1xx: return uart clock frequency */
+static unsigned long s5pc1xx_get_uart_clk(int dev_index)
+{
+ if (cpu_is_s5pc110())
+ return s5pc110_get_pclk();
+ else
+ return s5pc100_get_pclk();
+}
+
+/* s5pc1xx: return pwm clock frequency */
+static unsigned long s5pc1xx_get_pwm_clk(void)
+{
+ if (cpu_is_s5pc110())
+ return s5pc110_get_pclk();
+ else
+ return s5pc100_get_pclk();
+}
+
void s5p_clock_init(void)
{
if (cpu_is_s5pc110()) {
get_pll_clk = s5pc110_get_pll_clk;
get_arm_clk = s5pc110_get_arm_clk;
- get_pclk = s5pc110_get_pclk;
} else {
get_pll_clk = s5pc100_get_pll_clk;
get_arm_clk = s5pc100_get_arm_clk;
- get_pclk = s5pc100_get_pclk;
}
+ get_uart_clk = s5pc1xx_get_uart_clk;
+ get_pwm_clk = s5pc1xx_get_pwm_clk;
}