clocksource: fixup ux500 build problems
Based on a patch from Arnd Bergmann this fixes up the build problem of assigning a non-existing global when the ux500 PRCMU timer is not linked in by passing its base address to the init function. We also add a missing <linux/errno.h> inclusion and staticize the dummy function. Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Родитель
bb219dba0d
Коммит
b1e3be0647
|
@ -5,6 +5,7 @@
|
|||
* Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson
|
||||
*/
|
||||
#include <linux/io.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/clksrc-dbx500-prcmu.h>
|
||||
|
||||
#include <asm/localtimer.h>
|
||||
|
@ -16,18 +17,20 @@
|
|||
|
||||
static void __init ux500_timer_init(void)
|
||||
{
|
||||
void __iomem *prcmu_timer_base;
|
||||
|
||||
if (cpu_is_u5500()) {
|
||||
#ifdef CONFIG_LOCAL_TIMERS
|
||||
twd_base = __io_address(U5500_TWD_BASE);
|
||||
#endif
|
||||
mtu_base = __io_address(U5500_MTU0_BASE);
|
||||
clksrc_dbx500_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE);
|
||||
prcmu_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE);
|
||||
} else if (cpu_is_u8500()) {
|
||||
#ifdef CONFIG_LOCAL_TIMERS
|
||||
twd_base = __io_address(U8500_TWD_BASE);
|
||||
#endif
|
||||
mtu_base = __io_address(U8500_MTU0_BASE);
|
||||
clksrc_dbx500_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
|
||||
prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
|
||||
} else {
|
||||
ux500_unknown_soc();
|
||||
}
|
||||
|
@ -50,7 +53,7 @@ static void __init ux500_timer_init(void)
|
|||
*/
|
||||
|
||||
nmdk_timer_init();
|
||||
clksrc_dbx500_prcmu_init();
|
||||
clksrc_dbx500_prcmu_init(prcmu_timer_base);
|
||||
}
|
||||
|
||||
static void ux500_timer_reset(void)
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
#define SCHED_CLOCK_MIN_WRAP 131072 /* 2^32 / 32768 */
|
||||
|
||||
void __iomem *clksrc_dbx500_timer_base;
|
||||
static void __iomem *clksrc_dbx500_timer_base;
|
||||
|
||||
static cycle_t clksrc_dbx500_prcmu_read(struct clocksource *cs)
|
||||
{
|
||||
|
@ -79,8 +79,10 @@ static void notrace clksrc_dbx500_prcmu_update_sched_clock(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
void __init clksrc_dbx500_prcmu_init(void)
|
||||
void __init clksrc_dbx500_prcmu_init(void __iomem *base)
|
||||
{
|
||||
clksrc_dbx500_timer_base = base;
|
||||
|
||||
/*
|
||||
* The A9 sub system expects the timer to be configured as
|
||||
* a continous looping timer.
|
||||
|
|
|
@ -11,12 +11,10 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
extern void __iomem *clksrc_dbx500_timer_base;
|
||||
|
||||
#ifdef CONFIG_CLKSRC_DBX500_PRCMU
|
||||
void __init clksrc_dbx500_prcmu_init(void);
|
||||
void __init clksrc_dbx500_prcmu_init(void __iomem *base);
|
||||
#else
|
||||
void __init clksrc_dbx500_prcmu_init(void) {}
|
||||
static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче