aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-ux500/timer.c9
-rw-r--r--drivers/clocksource/clksrc-dbx500-prcmu.c6
-rw-r--r--include/linux/clksrc-dbx500-prcmu.h6
3 files changed, 12 insertions, 9 deletions
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index 08c55a53cb83..aea467d04ff7 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -5,6 +5,7 @@
5 * Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson 5 * Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson
6 */ 6 */
7#include <linux/io.h> 7#include <linux/io.h>
8#include <linux/errno.h>
8#include <linux/clksrc-dbx500-prcmu.h> 9#include <linux/clksrc-dbx500-prcmu.h>
9 10
10#include <asm/localtimer.h> 11#include <asm/localtimer.h>
@@ -16,18 +17,20 @@
16 17
17static void __init ux500_timer_init(void) 18static void __init ux500_timer_init(void)
18{ 19{
20 void __iomem *prcmu_timer_base;
21
19 if (cpu_is_u5500()) { 22 if (cpu_is_u5500()) {
20#ifdef CONFIG_LOCAL_TIMERS 23#ifdef CONFIG_LOCAL_TIMERS
21 twd_base = __io_address(U5500_TWD_BASE); 24 twd_base = __io_address(U5500_TWD_BASE);
22#endif 25#endif
23 mtu_base = __io_address(U5500_MTU0_BASE); 26 mtu_base = __io_address(U5500_MTU0_BASE);
24 clksrc_dbx500_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE); 27 prcmu_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE);
25 } else if (cpu_is_u8500()) { 28 } else if (cpu_is_u8500()) {
26#ifdef CONFIG_LOCAL_TIMERS 29#ifdef CONFIG_LOCAL_TIMERS
27 twd_base = __io_address(U8500_TWD_BASE); 30 twd_base = __io_address(U8500_TWD_BASE);
28#endif 31#endif
29 mtu_base = __io_address(U8500_MTU0_BASE); 32 mtu_base = __io_address(U8500_MTU0_BASE);
30 clksrc_dbx500_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE); 33 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
31 } else { 34 } else {
32 ux500_unknown_soc(); 35 ux500_unknown_soc();
33 } 36 }
@@ -50,7 +53,7 @@ static void __init ux500_timer_init(void)
50 */ 53 */
51 54
52 nmdk_timer_init(); 55 nmdk_timer_init();
53 clksrc_dbx500_prcmu_init(); 56 clksrc_dbx500_prcmu_init(prcmu_timer_base);
54} 57}
55 58
56static void ux500_timer_reset(void) 59static void ux500_timer_reset(void)
diff --git a/drivers/clocksource/clksrc-dbx500-prcmu.c b/drivers/clocksource/clksrc-dbx500-prcmu.c
index 0ac5093a053a..59feefe0e3e6 100644
--- a/drivers/clocksource/clksrc-dbx500-prcmu.c
+++ b/drivers/clocksource/clksrc-dbx500-prcmu.c
@@ -31,7 +31,7 @@
31 31
32#define SCHED_CLOCK_MIN_WRAP 131072 /* 2^32 / 32768 */ 32#define SCHED_CLOCK_MIN_WRAP 131072 /* 2^32 / 32768 */
33 33
34void __iomem *clksrc_dbx500_timer_base; 34static void __iomem *clksrc_dbx500_timer_base;
35 35
36static cycle_t clksrc_dbx500_prcmu_read(struct clocksource *cs) 36static cycle_t clksrc_dbx500_prcmu_read(struct clocksource *cs)
37{ 37{
@@ -79,8 +79,10 @@ static void notrace clksrc_dbx500_prcmu_update_sched_clock(void)
79} 79}
80#endif 80#endif
81 81
82void __init clksrc_dbx500_prcmu_init(void) 82void __init clksrc_dbx500_prcmu_init(void __iomem *base)
83{ 83{
84 clksrc_dbx500_timer_base = base;
85
84 /* 86 /*
85 * The A9 sub system expects the timer to be configured as 87 * The A9 sub system expects the timer to be configured as
86 * a continous looping timer. 88 * a continous looping timer.
diff --git a/include/linux/clksrc-dbx500-prcmu.h b/include/linux/clksrc-dbx500-prcmu.h
index d1e95042408b..4fb8119c49e4 100644
--- a/include/linux/clksrc-dbx500-prcmu.h
+++ b/include/linux/clksrc-dbx500-prcmu.h
@@ -11,12 +11,10 @@
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/io.h> 12#include <linux/io.h>
13 13
14extern void __iomem *clksrc_dbx500_timer_base;
15
16#ifdef CONFIG_CLKSRC_DBX500_PRCMU 14#ifdef CONFIG_CLKSRC_DBX500_PRCMU
17void __init clksrc_dbx500_prcmu_init(void); 15void __init clksrc_dbx500_prcmu_init(void __iomem *base);
18#else 16#else
19void __init clksrc_dbx500_prcmu_init(void) {} 17static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {}
20#endif 18#endif
21 19
22#endif 20#endif