summaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-samsung
diff options
context:
space:
mode:
authorRomain Naour <romain.naour@openwide.fr>2013-01-09 18:47:04 -0800
committerKukjin Kim <kgene.kim@samsung.com>2013-03-05 20:16:38 +0900
commit7f78b6eb5f51731fd7d6e272b5adc1d030f0791f (patch)
treeefb624c83c58059865fc8fa51b15bbdd341c2e6a /arch/arm/plat-samsung
parentc1fcd403ced3ad0d63418cc1120e1562283b16ce (diff)
downloadop-kernel-dev-7f78b6eb5f51731fd7d6e272b5adc1d030f0791f.zip
op-kernel-dev-7f78b6eb5f51731fd7d6e272b5adc1d030f0791f.tar.gz
ARM: S3C24XX: Add samsung-time support for s3c24xx
Signed-off-by: Naour Romain <romain.naour@openwide.fr> Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com> [heiko@sntech.de: tested on a s3c2416 based machine] Reviewed-and-Tested-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/plat-samsung')
-rw-r--r--arch/arm/plat-samsung/include/plat/cpu.h2
-rw-r--r--arch/arm/plat-samsung/include/plat/samsung-time.h11
-rw-r--r--arch/arm/plat-samsung/samsung-time.c12
3 files changed, 18 insertions, 7 deletions
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h
index 37703ef..100c296 100644
--- a/arch/arm/plat-samsung/include/plat/cpu.h
+++ b/arch/arm/plat-samsung/include/plat/cpu.h
@@ -192,7 +192,7 @@ extern void s3c24xx_init_uartdevs(char *name,
struct s3c24xx_uart_resources *res,
struct s3c2410_uartcfg *cfg, int no);
-/* timer for 2410/2440 */
+/* timer for s5pc100 only */
extern void s3c24xx_timer_init(void);
diff --git a/arch/arm/plat-samsung/include/plat/samsung-time.h b/arch/arm/plat-samsung/include/plat/samsung-time.h
index c686f6a..21198ac 100644
--- a/arch/arm/plat-samsung/include/plat/samsung-time.h
+++ b/arch/arm/plat-samsung/include/plat/samsung-time.h
@@ -30,7 +30,18 @@ struct samsung_timer_source {
/* Be able to sleep for atleast 4 seconds (usually more) */
#define SAMSUNG_TIMER_MIN_RANGE 4
+#ifdef CONFIG_ARCH_S3C24XX
+#define TCNT_MAX 0xffff
+#define TSCALER_DIV 25
+#define TDIV 50
+#define TSIZE 16
+#else
#define TCNT_MAX 0xffffffff
+#define TSCALER_DIV 2
+#define TDIV 2
+#define TSIZE 32
+#endif
+
#define NON_PERIODIC 0
#define PERIODIC 1
diff --git a/arch/arm/plat-samsung/samsung-time.c b/arch/arm/plat-samsung/samsung-time.c
index aa8aa80..f899cbc 100644
--- a/arch/arm/plat-samsung/samsung-time.c
+++ b/arch/arm/plat-samsung/samsung-time.c
@@ -2,7 +2,7 @@
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
- * SAMSUNG - Common hr-timer support
+ * samsung - Common hr-timer support (s3c and s5p)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -267,8 +267,8 @@ static void __init samsung_clockevent_init(void)
tscaler = clk_get_parent(tdiv_event);
- clk_set_rate(tscaler, pclk / 2);
- clk_set_rate(tdiv_event, pclk / 2);
+ clk_set_rate(tscaler, pclk / TSCALER_DIV);
+ clk_set_rate(tdiv_event, pclk / TDIV);
clk_set_parent(tin_event, tdiv_event);
clock_rate = clk_get_rate(tin_event);
@@ -329,7 +329,7 @@ static void __init samsung_clocksource_init(void)
pclk = clk_get_rate(timerclk);
- clk_set_rate(tdiv_source, pclk / 2);
+ clk_set_rate(tdiv_source, pclk / TDIV);
clk_set_parent(tin_source, tdiv_source);
clock_rate = clk_get_rate(tin_source);
@@ -337,10 +337,10 @@ static void __init samsung_clocksource_init(void)
samsung_time_setup(timer_source.source_id, TCNT_MAX);
samsung_time_start(timer_source.source_id, PERIODIC);
- setup_sched_clock(samsung_read_sched_clock, 32, clock_rate);
+ setup_sched_clock(samsung_read_sched_clock, TSIZE, clock_rate);
if (clocksource_mmio_init(samsung_timer_reg(), "samsung_clocksource_timer",
- clock_rate, 250, 32, clocksource_mmio_readl_down))
+ clock_rate, 250, TSIZE, clocksource_mmio_readl_down))
panic("samsung_clocksource_timer: can't register clocksource\n");
}
OpenPOWER on IntegriCloud