diff options
-rw-r--r-- | arch/arm/mach-ux500/timer.c | 9 | ||||
-rw-r--r-- | drivers/clocksource/clksrc-dbx500-prcmu.c | 6 | ||||
-rw-r--r-- | include/linux/clksrc-dbx500-prcmu.h | 6 |
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 | ||
17 | static void __init ux500_timer_init(void) | 18 | static 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 | ||
56 | static void ux500_timer_reset(void) | 59 | static 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 | ||
34 | void __iomem *clksrc_dbx500_timer_base; | 34 | static void __iomem *clksrc_dbx500_timer_base; |
35 | 35 | ||
36 | static cycle_t clksrc_dbx500_prcmu_read(struct clocksource *cs) | 36 | static 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 | ||
82 | void __init clksrc_dbx500_prcmu_init(void) | 82 | void __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 | ||
14 | extern void __iomem *clksrc_dbx500_timer_base; | ||
15 | |||
16 | #ifdef CONFIG_CLKSRC_DBX500_PRCMU | 14 | #ifdef CONFIG_CLKSRC_DBX500_PRCMU |
17 | void __init clksrc_dbx500_prcmu_init(void); | 15 | void __init clksrc_dbx500_prcmu_init(void __iomem *base); |
18 | #else | 16 | #else |
19 | void __init clksrc_dbx500_prcmu_init(void) {} | 17 | static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {} |
20 | #endif | 18 | #endif |
21 | 19 | ||
22 | #endif | 20 | #endif |