diff options
| author | Jon Hunter <jon-hunter@ti.com> | 2013-04-01 13:47:29 -0500 | 
|---|---|---|
| committer | Jon Hunter <jon-hunter@ti.com> | 2013-04-01 13:47:29 -0500 | 
| commit | 2d61aecee8f32259920cdf90a452fa26ffc64e9f (patch) | |
| tree | 2311b6b4c12b946164e8cfb3422cebdfecf08f37 | |
| parent | 71856843fb1d8ee455a4c1a60696c74afa4809e5 (diff) | |
| parent | 6bb27d7349db51b50c40534710fe164ca0d58902 (diff) | |
| download | olio-linux-3.10-2d61aecee8f32259920cdf90a452fa26ffc64e9f.tar.xz olio-linux-3.10-2d61aecee8f32259920cdf90a452fa26ffc64e9f.zip  | |
Merge commit '6bb27d7349db51b50c40534710fe164ca0d58902' into omap-timer-for-v3.10
524 files changed, 880 insertions, 1508 deletions
diff --git a/arch/arm/include/asm/mach/arch.h b/arch/arm/include/asm/mach/arch.h index 917d4fcfd9b..308ad7d6f98 100644 --- a/arch/arm/include/asm/mach/arch.h +++ b/arch/arm/include/asm/mach/arch.h @@ -12,7 +12,6 @@  struct tag;  struct meminfo; -struct sys_timer;  struct pt_regs;  struct smp_operations;  #ifdef CONFIG_SMP @@ -48,7 +47,7 @@ struct machine_desc {  	void			(*map_io)(void);/* IO mapping function	*/  	void			(*init_early)(void);  	void			(*init_irq)(void); -	struct sys_timer	*timer;		/* system tick timer	*/ +	void			(*init_time)(void);  	void			(*init_machine)(void);  	void			(*init_late)(void);  #ifdef CONFIG_MULTI_IRQ_HANDLER diff --git a/arch/arm/include/asm/mach/time.h b/arch/arm/include/asm/mach/time.h index 6ca945f534a..90c12e1e695 100644 --- a/arch/arm/include/asm/mach/time.h +++ b/arch/arm/include/asm/mach/time.h @@ -10,36 +10,6 @@  #ifndef __ASM_ARM_MACH_TIME_H  #define __ASM_ARM_MACH_TIME_H -/* - * This is our kernel timer structure. - * - * - init - *   Initialise the kernels jiffy timer source, claim interrupt - *   using setup_irq.  This is called early on during initialisation - *   while interrupts are still disabled on the local CPU. - * - suspend - *   Suspend the kernel jiffy timer source, if necessary.  This - *   is called with interrupts disabled, after all normal devices - *   have been suspended.  If no action is required, set this to - *   NULL. - * - resume - *   Resume the kernel jiffy timer source, if necessary.  This - *   is called with interrupts disabled before any normal devices - *   are resumed.  If no action is required, set this to NULL. - * - offset - *   Return the timer offset in microseconds since the last timer - *   interrupt.  Note: this must take account of any unprocessed - *   timer interrupt which may be pending. - */ -struct sys_timer { -	void			(*init)(void); -	void			(*suspend)(void); -	void			(*resume)(void); -#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET -	unsigned long		(*offset)(void); -#endif -}; -  extern void timer_tick(void);  struct timespec; diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 09be0c3c906..955d92d265e 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c @@ -21,7 +21,6 @@  #include <linux/timex.h>  #include <linux/errno.h>  #include <linux/profile.h> -#include <linux/syscore_ops.h>  #include <linux/timer.h>  #include <linux/irq.h> @@ -31,11 +30,6 @@  #include <asm/mach/arch.h>  #include <asm/mach/time.h> -/* - * Our system timer. - */ -static struct sys_timer *system_timer; -  #if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \      defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE)  /* this needs a better home */ @@ -69,16 +63,6 @@ unsigned long profile_pc(struct pt_regs *regs)  EXPORT_SYMBOL(profile_pc);  #endif -#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET -u32 arch_gettimeoffset(void) -{ -	if (system_timer->offset != NULL) -		return system_timer->offset() * 1000; - -	return 0; -} -#endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */ -  #ifndef CONFIG_GENERIC_CLOCKEVENTS  /*   * Kernel system timer support. @@ -129,43 +113,8 @@ int __init register_persistent_clock(clock_access_fn read_boot,  	return -EINVAL;  } -#if defined(CONFIG_PM) && !defined(CONFIG_GENERIC_CLOCKEVENTS) -static int timer_suspend(void) -{ -	if (system_timer->suspend) -		system_timer->suspend(); - -	return 0; -} - -static void timer_resume(void) -{ -	if (system_timer->resume) -		system_timer->resume(); -} -#else -#define timer_suspend NULL -#define timer_resume NULL -#endif - -static struct syscore_ops timer_syscore_ops = { -	.suspend	= timer_suspend, -	.resume		= timer_resume, -}; - -static int __init timer_init_syscore_ops(void) -{ -	register_syscore_ops(&timer_syscore_ops); - -	return 0; -} - -device_initcall(timer_init_syscore_ops); -  void __init time_init(void)  { -	system_timer = machine_desc->timer; -	system_timer->init(); +	machine_desc->init_time();  	sched_clock_postinit();  } - diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c index cafe98836c8..180b3024bec 100644 --- a/arch/arm/mach-at91/at91rm9200_time.c +++ b/arch/arm/mach-at91/at91rm9200_time.c @@ -274,8 +274,3 @@ void __init at91rm9200_timer_init(void)  	/* register clocksource */  	clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK);  } - -struct sys_timer at91rm9200_timer = { -	.init		= at91rm9200_timer_init, -}; - diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c index 358412f1f5f..3a4bc2e1a65 100644 --- a/arch/arm/mach-at91/at91sam926x_time.c +++ b/arch/arm/mach-at91/at91sam926x_time.c @@ -104,12 +104,38 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)  	}  } +static void at91sam926x_pit_suspend(struct clock_event_device *cedev) +{ +	/* Disable timer */ +	pit_write(AT91_PIT_MR, 0); +} + +static void at91sam926x_pit_reset(void) +{ +	/* Disable timer and irqs */ +	pit_write(AT91_PIT_MR, 0); + +	/* Clear any pending interrupts, wait for PIT to stop counting */ +	while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0) +		cpu_relax(); + +	/* Start PIT but don't enable IRQ */ +	pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); +} + +static void at91sam926x_pit_resume(struct clock_event_device *cedev) +{ +	at91sam926x_pit_reset(); +} +  static struct clock_event_device pit_clkevt = {  	.name		= "pit",  	.features	= CLOCK_EVT_FEAT_PERIODIC,  	.shift		= 32,  	.rating		= 100,  	.set_mode	= pit_clkevt_mode, +	.suspend	= at91sam926x_pit_suspend, +	.resume		= at91sam926x_pit_resume,  }; @@ -150,19 +176,6 @@ static struct irqaction at91sam926x_pit_irq = {  	.irq		= NR_IRQS_LEGACY + AT91_ID_SYS,  }; -static void at91sam926x_pit_reset(void) -{ -	/* Disable timer and irqs */ -	pit_write(AT91_PIT_MR, 0); - -	/* Clear any pending interrupts, wait for PIT to stop counting */ -	while (PIT_CPIV(pit_read(AT91_PIT_PIVR)) != 0) -		cpu_relax(); - -	/* Start PIT but don't enable IRQ */ -	pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); -} -  #ifdef CONFIG_OF  static struct of_device_id pit_timer_ids[] = {  	{ .compatible = "atmel,at91sam9260-pit" }, @@ -211,7 +224,7 @@ static int __init of_at91sam926x_pit_init(void)  /*   * Set up both clocksource and clockevent support.   */ -static void __init at91sam926x_pit_init(void) +void __init at91sam926x_pit_init(void)  {  	unsigned long	pit_rate;  	unsigned	bits; @@ -250,12 +263,6 @@ static void __init at91sam926x_pit_init(void)  	clockevents_register_device(&pit_clkevt);  } -static void at91sam926x_pit_suspend(void) -{ -	/* Disable timer */ -	pit_write(AT91_PIT_MR, 0); -} -  void __init at91sam926x_ioremap_pit(u32 addr)  {  #if defined(CONFIG_OF) @@ -272,9 +279,3 @@ void __init at91sam926x_ioremap_pit(u32 addr)  	if (!pit_base_addr)  		panic("Impossible to ioremap PIT\n");  } - -struct sys_timer at91sam926x_timer = { -	.init		= at91sam926x_pit_init, -	.suspend	= at91sam926x_pit_suspend, -	.resume		= at91sam926x_pit_reset, -}; diff --git a/arch/arm/mach-at91/at91x40_time.c b/arch/arm/mach-at91/at91x40_time.c index 0e57e440c06..0c07a4459cb 100644 --- a/arch/arm/mach-at91/at91x40_time.c +++ b/arch/arm/mach-at91/at91x40_time.c @@ -42,9 +42,10 @@  #define	AT91_TC_CLK1BASE	0x40  #define	AT91_TC_CLK2BASE	0x80 -static unsigned long at91x40_gettimeoffset(void) +static u32 at91x40_gettimeoffset(void)  { -	return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / (AT91X40_MASTER_CLOCK / 128)); +	return (at91_tc_read(AT91_TC_CLK1BASE + AT91_TC_CV) * 1000000 / +		(AT91X40_MASTER_CLOCK / 128)) * 1000;  }  static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) @@ -64,6 +65,8 @@ void __init at91x40_timer_init(void)  {  	unsigned int v; +	arch_gettimeoffset = at91x40_gettimeoffset; +  	at91_tc_write(AT91_TC_BCR, 0);  	v = at91_tc_read(AT91_TC_BMR);  	v = (v & ~AT91_TC_TC1XC1S) | AT91_TC_TC1XC1S_NONE; @@ -79,9 +82,3 @@ void __init at91x40_timer_init(void)  	at91_tc_write(AT91_TC_CLK1BASE + AT91_TC_CCR, (AT91_TC_SWTRG | AT91_TC_CLKEN));  } - -struct sys_timer at91x40_timer = { -	.init	= at91x40_timer_init, -	.offset	= at91x40_gettimeoffset, -}; - diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c index b99b5752cc1..35ab632bbf6 100644 --- a/arch/arm/mach-at91/board-1arm.c +++ b/arch/arm/mach-at91/board-1arm.c @@ -90,7 +90,7 @@ static void __init onearm_board_init(void)  MACHINE_START(ONEARM, "Ajeco 1ARM single board computer")  	/* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= onearm_init_early, diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c index 854b9797428..f95e31cda4b 100644 --- a/arch/arm/mach-at91/board-afeb-9260v1.c +++ b/arch/arm/mach-at91/board-afeb-9260v1.c @@ -210,7 +210,7 @@ static void __init afeb9260_board_init(void)  MACHINE_START(AFEB9260, "Custom afeb9260 board")  	/* Maintainer: Sergey Lapin <slapin@ossfans.org> */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= afeb9260_init_early, diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c index 28a18ce6d91..ade948b8266 100644 --- a/arch/arm/mach-at91/board-cam60.c +++ b/arch/arm/mach-at91/board-cam60.c @@ -187,7 +187,7 @@ static void __init cam60_board_init(void)  MACHINE_START(CAM60, "KwikByte CAM60")  	/* Maintainer: KwikByte */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= cam60_init_early, diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c index c17bb533a94..92983050a9b 100644 --- a/arch/arm/mach-at91/board-carmeva.c +++ b/arch/arm/mach-at91/board-carmeva.c @@ -157,7 +157,7 @@ static void __init carmeva_board_init(void)  MACHINE_START(CARMEVA, "Carmeva")  	/* Maintainer: Conitec Datasystems */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= carmeva_init_early, diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c index 847432441ec..008527efdbc 100644 --- a/arch/arm/mach-at91/board-cpu9krea.c +++ b/arch/arm/mach-at91/board-cpu9krea.c @@ -374,7 +374,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260")  MACHINE_START(CPUAT9G20, "Eukrea CPU9G20")  #endif  	/* Maintainer: Eric Benard - EUKREA Electromatique */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= cpu9krea_init_early, diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c index 2a7af786874..42f1353a4ba 100644 --- a/arch/arm/mach-at91/board-cpuat91.c +++ b/arch/arm/mach-at91/board-cpuat91.c @@ -178,7 +178,7 @@ static void __init cpuat91_board_init(void)  MACHINE_START(CPUAT91, "Eukrea")  	/* Maintainer: Eric Benard - EUKREA Electromatique */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= cpuat91_init_early, diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c index 48a531e05be..e5fde215225 100644 --- a/arch/arm/mach-at91/board-csb337.c +++ b/arch/arm/mach-at91/board-csb337.c @@ -251,7 +251,7 @@ static void __init csb337_board_init(void)  MACHINE_START(CSB337, "Cogent CSB337")  	/* Maintainer: Bill Gatliff */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= csb337_init_early, diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c index ec0f3abd504..fdf11061c57 100644 --- a/arch/arm/mach-at91/board-csb637.c +++ b/arch/arm/mach-at91/board-csb637.c @@ -132,7 +132,7 @@ static void __init csb637_board_init(void)  MACHINE_START(CSB637, "Cogent CSB637")  	/* Maintainer: Bill Gatliff */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= csb637_init_early, diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c index 881170ce61d..8db30132abe 100644 --- a/arch/arm/mach-at91/board-dt.c +++ b/arch/arm/mach-at91/board-dt.c @@ -49,7 +49,7 @@ static const char *at91_dt_board_compat[] __initdata = {  DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= at91_dt_initialize, diff --git a/arch/arm/mach-at91/board-eb01.c b/arch/arm/mach-at91/board-eb01.c index b489388a6f8..becf0a6a289 100644 --- a/arch/arm/mach-at91/board-eb01.c +++ b/arch/arm/mach-at91/board-eb01.c @@ -44,7 +44,7 @@ static void __init at91eb01_init_early(void)  MACHINE_START(AT91EB01, "Atmel AT91 EB01")  	/* Maintainer: Greg Ungerer <gerg@snapgear.com> */ -	.timer		= &at91x40_timer, +	.init_time	= at91x40_timer_init,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= at91eb01_init_early,  	.init_irq	= at91eb01_init_irq, diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c index 9f5e71c95f0..f9be8161bbf 100644 --- a/arch/arm/mach-at91/board-eb9200.c +++ b/arch/arm/mach-at91/board-eb9200.c @@ -116,7 +116,7 @@ static void __init eb9200_board_init(void)  }  MACHINE_START(ATEB9200, "Embest ATEB9200") -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= eb9200_init_early, diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c index ef69e0ebe94..b2fcd71262b 100644 --- a/arch/arm/mach-at91/board-ecbat91.c +++ b/arch/arm/mach-at91/board-ecbat91.c @@ -181,7 +181,7 @@ static void __init ecb_at91board_init(void)  MACHINE_START(ECBAT91, "emQbit's ECB_AT91")  	/* Maintainer: emQbit.com */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ecb_at91init_early, diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c index 50f3d3795c0..77de410efc9 100644 --- a/arch/arm/mach-at91/board-eco920.c +++ b/arch/arm/mach-at91/board-eco920.c @@ -149,7 +149,7 @@ static void __init eco920_board_init(void)  MACHINE_START(ECO920, "eco920")  	/* Maintainer: Sascha Hauer */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= eco920_init_early, diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c index 5d44eba0f20..737c0856362 100644 --- a/arch/arm/mach-at91/board-flexibity.c +++ b/arch/arm/mach-at91/board-flexibity.c @@ -159,7 +159,7 @@ static void __init flexibity_board_init(void)  MACHINE_START(FLEXIBITY, "Flexibity Connect")  	/* Maintainer: Maxim Osipov */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= flexibity_init_early, diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c index 191d37c16ba..2ea7059b840 100644 --- a/arch/arm/mach-at91/board-foxg20.c +++ b/arch/arm/mach-at91/board-foxg20.c @@ -261,7 +261,7 @@ static void __init foxg20_board_init(void)  MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20")  	/* Maintainer: Sergio Tanzilli */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= foxg20_init_early, diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c index 23a2fa17ab2..c1d61d24779 100644 --- a/arch/arm/mach-at91/board-gsia18s.c +++ b/arch/arm/mach-at91/board-gsia18s.c @@ -574,7 +574,7 @@ static void __init gsia18s_board_init(void)  }  MACHINE_START(GSIA18S, "GS_IA18_S") -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= gsia18s_init_early, diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c index 9a43d1e1a03..88e2f5d2d16 100644 --- a/arch/arm/mach-at91/board-kafa.c +++ b/arch/arm/mach-at91/board-kafa.c @@ -103,7 +103,7 @@ static void __init kafa_board_init(void)  MACHINE_START(KAFA, "Sperry-Sun KAFA")  	/* Maintainer: Sergei Sharonov */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= kafa_init_early, diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c index f168bec2369..0c519d9ebff 100644 --- a/arch/arm/mach-at91/board-kb9202.c +++ b/arch/arm/mach-at91/board-kb9202.c @@ -149,7 +149,7 @@ static void __init kb9202_board_init(void)  MACHINE_START(KB9200, "KB920x")  	/* Maintainer: KwikByte, Inc. */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= kb9202_init_early, diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c index bc7a1c4a1f6..5b4760fe53d 100644 --- a/arch/arm/mach-at91/board-neocore926.c +++ b/arch/arm/mach-at91/board-neocore926.c @@ -378,7 +378,7 @@ static void __init neocore926_board_init(void)  MACHINE_START(NEOCORE926, "ADENEO NEOCORE 926")  	/* Maintainer: ADENEO */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= neocore926_init_early, diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c index 0299554495d..65c0d6b5ecb 100644 --- a/arch/arm/mach-at91/board-pcontrol-g20.c +++ b/arch/arm/mach-at91/board-pcontrol-g20.c @@ -217,7 +217,7 @@ static void __init pcontrol_g20_board_init(void)  MACHINE_START(PCONTROL_G20, "PControl G20")  	/* Maintainer: pgsellmann@portner-elektronik.at */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= pcontrol_g20_init_early, diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c index 4938f1cd5e1..ab2b2ec36c1 100644 --- a/arch/arm/mach-at91/board-picotux200.c +++ b/arch/arm/mach-at91/board-picotux200.c @@ -119,7 +119,7 @@ static void __init picotux200_board_init(void)  MACHINE_START(PICOTUX2XX, "picotux 200")  	/* Maintainer: Kleinhenz Elektronik GmbH */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= picotux200_init_early, diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c index 33b1628467e..aa3bc9b0f15 100644 --- a/arch/arm/mach-at91/board-qil-a9260.c +++ b/arch/arm/mach-at91/board-qil-a9260.c @@ -257,7 +257,7 @@ static void __init ek_board_init(void)  MACHINE_START(QIL_A9260, "CALAO QIL_A9260")  	/* Maintainer: calao-systems */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c index 9e5061bef0d..690541b18cb 100644 --- a/arch/arm/mach-at91/board-rm9200dk.c +++ b/arch/arm/mach-at91/board-rm9200dk.c @@ -219,7 +219,7 @@ static void __init dk_board_init(void)  MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")  	/* Maintainer: SAN People/Atmel */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= dk_init_early, diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c index 58277dbc718..8b17dadc1ab 100644 --- a/arch/arm/mach-at91/board-rm9200ek.c +++ b/arch/arm/mach-at91/board-rm9200ek.c @@ -186,7 +186,7 @@ static void __init ek_board_init(void)  MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK")  	/* Maintainer: SAN People/Atmel */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-rsi-ews.c b/arch/arm/mach-at91/board-rsi-ews.c index 2e8b8339a20..f6d7f1958c7 100644 --- a/arch/arm/mach-at91/board-rsi-ews.c +++ b/arch/arm/mach-at91/board-rsi-ews.c @@ -222,7 +222,7 @@ static void __init rsi_ews_board_init(void)  MACHINE_START(RSI_EWS, "RSI EWS")  	/* Maintainer: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de> */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= rsi_ews_init_early, diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c index b75fbf6003a..43ee4dc43b5 100644 --- a/arch/arm/mach-at91/board-sam9-l9260.c +++ b/arch/arm/mach-at91/board-sam9-l9260.c @@ -218,7 +218,7 @@ static void __init ek_board_init(void)  MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")  	/* Maintainer: Olimex */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c index f0135cd1d85..0b153c87521 100644 --- a/arch/arm/mach-at91/board-sam9260ek.c +++ b/arch/arm/mach-at91/board-sam9260ek.c @@ -343,7 +343,7 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index 13ebaa8e410..b446645c772 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c @@ -612,7 +612,7 @@ MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK")  MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK")  #endif  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index 89b9608742a..3284df05df1 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c @@ -443,7 +443,7 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c index 1b7dd9f688d..f9cd1f2c714 100644 --- a/arch/arm/mach-at91/board-sam9g20ek.c +++ b/arch/arm/mach-at91/board-sam9g20ek.c @@ -409,7 +409,7 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, @@ -419,7 +419,7 @@ MACHINE_END  MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c index e4cc375e3a3..2a94896a137 100644 --- a/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c @@ -502,7 +502,7 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index 377a1097afa..aa265dcf212 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c @@ -320,7 +320,7 @@ static void __init ek_board_init(void)  MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK")  	/* Maintainer: Atmel */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c index 98771500ddb..3aaa9784cf0 100644 --- a/arch/arm/mach-at91/board-snapper9260.c +++ b/arch/arm/mach-at91/board-snapper9260.c @@ -177,7 +177,7 @@ static void __init snapper9260_board_init(void)  }  MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module") -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= snapper9260_init_early, diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c index 48a962b61fa..a033b8df9fb 100644 --- a/arch/arm/mach-at91/board-stamp9g20.c +++ b/arch/arm/mach-at91/board-stamp9g20.c @@ -272,7 +272,7 @@ static void __init stamp9g20evb_board_init(void)  MACHINE_START(PORTUXG20, "taskit PortuxG20")  	/* Maintainer: taskit GmbH */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= stamp9g20_init_early, @@ -282,7 +282,7 @@ MACHINE_END  MACHINE_START(STAMP9G20, "taskit Stamp9G20")  	/* Maintainer: taskit GmbH */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= stamp9g20_init_early, diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c index c1060f96e58..2487d944a1b 100644 --- a/arch/arm/mach-at91/board-usb-a926x.c +++ b/arch/arm/mach-at91/board-usb-a926x.c @@ -355,7 +355,7 @@ static void __init ek_board_init(void)  MACHINE_START(USB_A9263, "CALAO USB_A9263")  	/* Maintainer: calao-systems */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, @@ -365,7 +365,7 @@ MACHINE_END  MACHINE_START(USB_A9260, "CALAO USB_A9260")  	/* Maintainer: calao-systems */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, @@ -375,7 +375,7 @@ MACHINE_END  MACHINE_START(USB_A9G20, "CALAO USB_A92G0")  	/* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */ -	.timer		= &at91sam926x_timer, +	.init_time	= at91sam926x_pit_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= ek_init_early, diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c index 8673aebcb85..be083771df2 100644 --- a/arch/arm/mach-at91/board-yl-9200.c +++ b/arch/arm/mach-at91/board-yl-9200.c @@ -587,7 +587,7 @@ static void __init yl9200_board_init(void)  MACHINE_START(YL9200, "uCdragon YL-9200")  	/* Maintainer: S.Birtles */ -	.timer		= &at91rm9200_timer, +	.init_time	= at91rm9200_timer_init,  	.map_io		= at91_map_io,  	.handle_irq	= at91_aic_handle_irq,  	.init_early	= yl9200_init_early, diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index fc593d615e7..78ab0654865 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h @@ -36,12 +36,11 @@ extern int  __init at91_aic5_of_init(struct device_node *node,   /* Timer */ -struct sys_timer;  extern void at91rm9200_ioremap_st(u32 addr); -extern struct sys_timer at91rm9200_timer; +extern void at91rm9200_timer_init(void);  extern void at91sam926x_ioremap_pit(u32 addr); -extern struct sys_timer at91sam926x_timer; -extern struct sys_timer at91x40_timer; +extern void at91sam926x_pit_init(void); +extern void at91x40_timer_init(void);   /* Clocks */  #ifdef CONFIG_AT91_PMC_UNIT diff --git a/arch/arm/mach-bcm/board_bcm.c b/arch/arm/mach-bcm/board_bcm.c index 3a62f1b1cab..3df68030cf6 100644 --- a/arch/arm/mach-bcm/board_bcm.c +++ b/arch/arm/mach-bcm/board_bcm.c @@ -31,10 +31,6 @@ static void timer_init(void)  {  } -static struct sys_timer timer = { -	.init = timer_init, -}; -  static void __init init_irq(void)  {  	of_irq_init(irq_match); @@ -50,7 +46,7 @@ static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, };  DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor")  	.init_irq = init_irq, -	.timer = &timer, +	.init_time = timer_init,  	.init_machine = board_init,  	.dt_compat = bcm11351_dt_compat,  	.handle_irq = gic_handle_irq, diff --git a/arch/arm/mach-bcm2835/bcm2835.c b/arch/arm/mach-bcm2835/bcm2835.c index f0d739f4b7a..176d2d24782 100644 --- a/arch/arm/mach-bcm2835/bcm2835.c +++ b/arch/arm/mach-bcm2835/bcm2835.c @@ -104,7 +104,7 @@ DT_MACHINE_START(BCM2835, "BCM2835")  	.init_irq = bcm2835_init_irq,  	.handle_irq = bcm2835_handle_irq,  	.init_machine = bcm2835_init, -	.timer = &bcm2835_timer, +	.init_time = bcm2835_timer_init,  	.restart = bcm2835_restart,  	.dt_compat = bcm2835_compat  MACHINE_END diff --git a/arch/arm/mach-clps711x/board-autcpu12.c b/arch/arm/mach-clps711x/board-autcpu12.c index 3fbf43f7258..f38584709df 100644 --- a/arch/arm/mach-clps711x/board-autcpu12.c +++ b/arch/arm/mach-clps711x/board-autcpu12.c @@ -170,7 +170,7 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")  	.nr_irqs	= CLPS711X_NR_IRQS,  	.map_io		= clps711x_map_io,  	.init_irq	= clps711x_init_irq, -	.timer		= &clps711x_timer, +	.init_time	= clps711x_timer_init,  	.init_machine	= autcpu12_init,  	.init_late	= autcpu12_init_late,  	.handle_irq	= clps711x_handle_irq, diff --git a/arch/arm/mach-clps711x/board-cdb89712.c b/arch/arm/mach-clps711x/board-cdb89712.c index 60900ddf97c..baab7da33c9 100644 --- a/arch/arm/mach-clps711x/board-cdb89712.c +++ b/arch/arm/mach-clps711x/board-cdb89712.c @@ -140,7 +140,7 @@ MACHINE_START(CDB89712, "Cirrus-CDB89712")  	.nr_irqs	= CLPS711X_NR_IRQS,  	.map_io		= clps711x_map_io,  	.init_irq	= clps711x_init_irq, -	.timer		= &clps711x_timer, +	.init_time	= clps711x_timer_init,  	.init_machine	= cdb89712_init,  	.handle_irq	= clps711x_handle_irq,  	.restart	= clps711x_restart, diff --git a/arch/arm/mach-clps711x/board-clep7312.c b/arch/arm/mach-clps711x/board-clep7312.c index 0b32a487183..014aa3c19a0 100644 --- a/arch/arm/mach-clps711x/board-clep7312.c +++ b/arch/arm/mach-clps711x/board-clep7312.c @@ -40,7 +40,7 @@ MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")  	.fixup		= fixup_clep7312,  	.map_io		= clps711x_map_io,  	.init_irq	= clps711x_init_irq, -	.timer		= &clps711x_timer, +	.init_time	= clps711x_timer_init,  	.handle_irq	= clps711x_handle_irq,  	.restart	= clps711x_restart,  MACHINE_END diff --git a/arch/arm/mach-clps711x/board-edb7211.c b/arch/arm/mach-clps711x/board-edb7211.c index 71aa5cf2c0d..5f928e9ed2e 100644 --- a/arch/arm/mach-clps711x/board-edb7211.c +++ b/arch/arm/mach-clps711x/board-edb7211.c @@ -173,7 +173,7 @@ MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")  	.reserve	= edb7211_reserve,  	.map_io		= edb7211_map_io,  	.init_irq	= clps711x_init_irq, -	.timer		= &clps711x_timer, +	.init_time	= clps711x_timer_init,  	.init_machine	= edb7211_init,  	.handle_irq	= clps711x_handle_irq,  	.restart	= clps711x_restart, diff --git a/arch/arm/mach-clps711x/board-fortunet.c b/arch/arm/mach-clps711x/board-fortunet.c index 7d012558036..c5675efc8c6 100644 --- a/arch/arm/mach-clps711x/board-fortunet.c +++ b/arch/arm/mach-clps711x/board-fortunet.c @@ -78,7 +78,7 @@ MACHINE_START(FORTUNET, "ARM-FortuNet")  	.fixup		= fortunet_fixup,  	.map_io		= clps711x_map_io,  	.init_irq	= clps711x_init_irq, -	.timer		= &clps711x_timer, +	.init_time	= clps711x_timer_init,  	.handle_irq	= clps711x_handle_irq,  	.restart	= clps711x_restart,  MACHINE_END diff --git a/arch/arm/mach-clps711x/board-p720t.c b/arch/arm/mach-clps711x/board-p720t.c index 1518fc83bab..8d3ee677113 100644 --- a/arch/arm/mach-clps711x/board-p720t.c +++ b/arch/arm/mach-clps711x/board-p720t.c @@ -224,7 +224,7 @@ MACHINE_START(P720T, "ARM-Prospector720T")  	.map_io		= p720t_map_io,  	.init_early	= p720t_init_early,  	.init_irq	= clps711x_init_irq, -	.timer		= &clps711x_timer, +	.init_time	= clps711x_timer_init,  	.init_machine	= p720t_init,  	.init_late	= p720t_init_late,  	.handle_irq	= clps711x_handle_irq, diff --git a/arch/arm/mach-clps711x/common.c b/arch/arm/mach-clps711x/common.c index e046439573e..20ff50f3ccf 100644 --- a/arch/arm/mach-clps711x/common.c +++ b/arch/arm/mach-clps711x/common.c @@ -282,7 +282,7 @@ static void add_fixed_clk(struct clk *clk, const char *name, int rate)  	clk_register_clkdev(clk, name, NULL);  } -static void __init clps711x_timer_init(void) +void __init clps711x_timer_init(void)  {  	int osc, ext, pll, cpu, bus, timl, timh, uart, spi;  	u32 tmp; @@ -345,10 +345,6 @@ static void __init clps711x_timer_init(void)  	setup_irq(IRQ_TC2OI, &clps711x_timer_irq);  } -struct sys_timer clps711x_timer = { -	.init		= clps711x_timer_init, -}; -  void clps711x_restart(char mode, const char *cmd)  {  	soft_restart(0); diff --git a/arch/arm/mach-clps711x/common.h b/arch/arm/mach-clps711x/common.h index b7c0c75c90c..f84a7292c70 100644 --- a/arch/arm/mach-clps711x/common.h +++ b/arch/arm/mach-clps711x/common.h @@ -8,10 +8,8 @@  #define CLPS711X_NR_GPIO	(4 * 8 + 3)  #define CLPS711X_GPIO(prt, bit)	((prt) * 8 + (bit)) -struct sys_timer; -  extern void clps711x_map_io(void);  extern void clps711x_init_irq(void); +extern void clps711x_timer_init(void);  extern void clps711x_handle_irq(struct pt_regs *regs);  extern void clps711x_restart(char mode, const char *cmd); -extern struct sys_timer clps711x_timer; diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c index ae305397003..3c86f910b64 100644 --- a/arch/arm/mach-cns3xxx/cns3420vb.c +++ b/arch/arm/mach-cns3xxx/cns3420vb.c @@ -250,7 +250,7 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")  	.atag_offset	= 0x100,  	.map_io		= cns3420_map_io,  	.init_irq	= cns3xxx_init_irq, -	.timer		= &cns3xxx_timer, +	.init_time	= cns3xxx_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= cns3420_init,  	.restart	= cns3xxx_restart, diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c index 031805b1428..1754f8f4f34 100644 --- a/arch/arm/mach-cns3xxx/core.c +++ b/arch/arm/mach-cns3xxx/core.c @@ -235,17 +235,13 @@ static void __init __cns3xxx_timer_init(unsigned int timer_irq)  	cns3xxx_clockevents_init(timer_irq);  } -static void __init cns3xxx_timer_init(void) +void __init cns3xxx_timer_init(void)  {  	cns3xxx_tmr1 = IOMEM(CNS3XXX_TIMER1_2_3_BASE_VIRT);  	__cns3xxx_timer_init(IRQ_CNS3XXX_TIMER0);  } -struct sys_timer cns3xxx_timer = { -	.init = cns3xxx_timer_init, -}; -  #ifdef CONFIG_CACHE_L2X0  void __init cns3xxx_l2x0_init(void) diff --git a/arch/arm/mach-cns3xxx/core.h b/arch/arm/mach-cns3xxx/core.h index 4894b8c1715..b23b17b4da1 100644 --- a/arch/arm/mach-cns3xxx/core.h +++ b/arch/arm/mach-cns3xxx/core.h @@ -11,7 +11,7 @@  #ifndef __CNS3XXX_CORE_H  #define __CNS3XXX_CORE_H -extern struct sys_timer cns3xxx_timer; +extern void cns3xxx_timer_init(void);  #ifdef CONFIG_CACHE_L2X0  void __init cns3xxx_l2x0_init(void); diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index 95b5e102ceb..e3742716cba 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c @@ -679,7 +679,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")  	.atag_offset	= 0x100,  	.map_io		= da830_evm_map_io,  	.init_irq	= cp_intc_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= da830_evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 0299915575a..3b3356097bb 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -1599,7 +1599,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")  	.atag_offset	= 0x100,  	.map_io		= da850_evm_map_io,  	.init_irq	= cp_intc_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= da850_evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index cdf8d0746e7..147b8e1a440 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c @@ -355,7 +355,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")  	.atag_offset  = 0x100,  	.map_io	      = dm355_evm_map_io,  	.init_irq     = davinci_irq_init, -	.timer	      = &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = dm355_evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c index d41954507fc..dff4ddc5ef8 100644 --- a/arch/arm/mach-davinci/board-dm355-leopard.c +++ b/arch/arm/mach-davinci/board-dm355-leopard.c @@ -274,7 +274,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")  	.atag_offset  = 0x100,  	.map_io	      = dm355_leopard_map_io,  	.init_irq     = davinci_irq_init, -	.timer	      = &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = dm355_leopard_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 5d49c75388c..c2d4958a0cb 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c @@ -616,7 +616,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")  	.atag_offset	= 0x100,  	.map_io		= dm365_evm_map_io,  	.init_irq	= davinci_irq_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= dm365_evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index f5e018de7fa..e4a16f98e6a 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c @@ -825,7 +825,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")  	.atag_offset  = 0x100,  	.map_io	      = davinci_evm_map_io,  	.init_irq     = davinci_irq_init, -	.timer	      = &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = davinci_evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index 6e2f1631df5..de7adff324d 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -818,7 +818,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")  	.atag_offset  = 0x100,  	.map_io       = davinci_map_io,  	.init_irq     = davinci_irq_init, -	.timer        = &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, @@ -829,7 +829,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")  	.atag_offset  = 0x100,  	.map_io       = davinci_map_io,  	.init_irq     = davinci_irq_init, -	.timer        = &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = evm_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c index 43e4a0d663f..b0df578bf74 100644 --- a/arch/arm/mach-davinci/board-mityomapl138.c +++ b/arch/arm/mach-davinci/board-mityomapl138.c @@ -570,7 +570,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")  	.atag_offset	= 0x100,  	.map_io		= mityomapl138_map_io,  	.init_irq	= cp_intc_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= mityomapl138_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c index 3e3e3afebf8..1c98107527f 100644 --- a/arch/arm/mach-davinci/board-neuros-osd2.c +++ b/arch/arm/mach-davinci/board-neuros-osd2.c @@ -237,7 +237,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")  	.atag_offset	= 0x100,  	.map_io		 = davinci_ntosd2_map_io,  	.init_irq	= davinci_irq_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = davinci_ntosd2_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index dc1208e9e66..deb3922612b 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -341,7 +341,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")  	.atag_offset	= 0x100,  	.map_io		= omapl138_hawk_map_io,  	.init_irq	= cp_intc_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= omapl138_hawk_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c index 6957787fa7f..739be7e738f 100644 --- a/arch/arm/mach-davinci/board-sffsdr.c +++ b/arch/arm/mach-davinci/board-sffsdr.c @@ -155,7 +155,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")  	.atag_offset  = 0x100,  	.map_io	      = davinci_sffsdr_map_io,  	.init_irq     = davinci_irq_init, -	.timer	      = &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine = davinci_sffsdr_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/board-tnetv107x-evm.c b/arch/arm/mach-davinci/board-tnetv107x-evm.c index be3099733b1..4f416023d4e 100644 --- a/arch/arm/mach-davinci/board-tnetv107x-evm.c +++ b/arch/arm/mach-davinci/board-tnetv107x-evm.c @@ -280,7 +280,7 @@ MACHINE_START(TNETV107X, "TNETV107X EVM")  	.atag_offset	= 0x100,  	.map_io		= tnetv107x_init,  	.init_irq	= cp_intc_init, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= tnetv107x_evm_board_init,  	.init_late	= davinci_init_late,  	.dma_zone_size	= SZ_128M, diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c index 37c27af18fa..9a7c76efc8f 100644 --- a/arch/arm/mach-davinci/da8xx-dt.c +++ b/arch/arm/mach-davinci/da8xx-dt.c @@ -56,7 +56,7 @@ static const char *da850_boards_compat[] __initdata = {  DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")  	.map_io		= da850_init,  	.init_irq	= da8xx_init_irq, -	.timer		= &davinci_timer, +	.init_time	= davinci_timer_init,  	.init_machine	= da850_init_machine,  	.dt_compat	= da850_boards_compat,  	.init_late	= davinci_init_late, diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h index 046c7238a3d..b124b77c90c 100644 --- a/arch/arm/mach-davinci/include/mach/common.h +++ b/arch/arm/mach-davinci/include/mach/common.h @@ -15,9 +15,7 @@  #include <linux/compiler.h>  #include <linux/types.h> -struct sys_timer; - -extern struct sys_timer davinci_timer; +extern void davinci_timer_init(void);  extern void davinci_irq_init(void);  extern void __iomem *davinci_intc_base; diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index 9847938785c..bad361ec166 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c @@ -337,7 +337,7 @@ static struct clock_event_device clockevent_davinci = {  }; -static void __init davinci_timer_init(void) +void __init davinci_timer_init(void)  {  	struct clk *timer_clk;  	struct davinci_soc_info *soc_info = &davinci_soc_info; @@ -410,11 +410,6 @@ static void __init davinci_timer_init(void)  		timer32_config(&timers[i]);  } -struct sys_timer davinci_timer = { -	.init   = davinci_timer_init, -}; - -  /* reset board using watchdog timer */  void davinci_watchdog_reset(struct platform_device *pdev)  { diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c index 792b4e2e24f..0dc39cf30fd 100644 --- a/arch/arm/mach-dove/cm-a510.c +++ b/arch/arm/mach-dove/cm-a510.c @@ -92,6 +92,6 @@ MACHINE_START(CM_A510, "Compulab CM-A510 Board")  	.map_io		= dove_map_io,  	.init_early	= dove_init_early,  	.init_irq	= dove_init_irq, -	.timer		= &dove_timer, +	.init_time	= dove_timer_init,  	.restart	= dove_restart,  MACHINE_END diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c index 89f4f993cd0..0c7911b3e15 100644 --- a/arch/arm/mach-dove/common.c +++ b/arch/arm/mach-dove/common.c @@ -242,17 +242,13 @@ static int __init dove_find_tclk(void)  	return 166666667;  } -static void __init dove_timer_init(void) +void __init dove_timer_init(void)  {  	dove_tclk = dove_find_tclk();  	orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,  			IRQ_DOVE_BRIDGE, dove_tclk);  } -struct sys_timer dove_timer = { -	.init = dove_timer_init, -}; -  /*****************************************************************************   * Cryptographic Engines and Security Accelerator (CESA)   ****************************************************************************/ @@ -454,7 +450,7 @@ DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)")  	.map_io		= dove_map_io,  	.init_early	= dove_init_early,  	.init_irq	= orion_dt_init_irq, -	.timer		= &dove_timer, +	.init_time	= dove_timer_init,  	.init_machine	= dove_dt_init,  	.restart	= dove_restart,  	.dt_compat	= dove_dt_board_compat, diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h index 1a233404b73..ee59fba4c6d 100644 --- a/arch/arm/mach-dove/common.h +++ b/arch/arm/mach-dove/common.h @@ -14,7 +14,7 @@  struct mv643xx_eth_platform_data;  struct mv_sata_platform_data; -extern struct sys_timer dove_timer; +extern void dove_timer_init(void);  /*   * Basic Dove init functions used early by machine-setup. diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c index bc2867f1134..76e26f949c2 100644 --- a/arch/arm/mach-dove/dove-db-setup.c +++ b/arch/arm/mach-dove/dove-db-setup.c @@ -98,6 +98,6 @@ MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board")  	.map_io		= dove_map_io,  	.init_early	= dove_init_early,  	.init_irq	= dove_init_irq, -	.timer		= &dove_timer, +	.init_time	= dove_timer_init,  	.restart	= dove_restart,  MACHINE_END diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c index f0fe6b5350e..b13cc74114d 100644 --- a/arch/arm/mach-ebsa110/core.c +++ b/arch/arm/mach-ebsa110/core.c @@ -158,7 +158,7 @@ static void __init ebsa110_init_early(void)   * interrupt, then the PIT counter will roll over (ie, be negative).   * This actually works out to be convenient.   */ -static unsigned long ebsa110_gettimeoffset(void) +static u32 ebsa110_gettimeoffset(void)  {  	unsigned long offset, count; @@ -181,7 +181,7 @@ static unsigned long ebsa110_gettimeoffset(void)  	 */  	offset = offset * (1000000 / HZ) / COUNT; -	return offset; +	return offset * 1000;  }  static irqreturn_t @@ -213,8 +213,10 @@ static struct irqaction ebsa110_timer_irq = {  /*   * Set up timer interrupt.   */ -static void __init ebsa110_timer_init(void) +void __init ebsa110_timer_init(void)  { +	arch_gettimeoffset = ebsa110_gettimeoffset; +  	/*  	 * Timer 1, mode 2, LSB/MSB  	 */ @@ -225,11 +227,6 @@ static void __init ebsa110_timer_init(void)  	setup_irq(IRQ_EBSA110_TIMER0, &ebsa110_timer_irq);  } -static struct sys_timer ebsa110_timer = { -	.init		= ebsa110_timer_init, -	.offset		= ebsa110_gettimeoffset, -}; -  static struct plat_serial8250_port serial_platform_data[] = {  	{  		.iobase		= 0x3f8, @@ -328,6 +325,6 @@ MACHINE_START(EBSA110, "EBSA110")  	.map_io		= ebsa110_map_io,  	.init_early	= ebsa110_init_early,  	.init_irq	= ebsa110_init_irq, -	.timer		= &ebsa110_timer, +	.init_time	= ebsa110_timer_init,  	.restart	= ebsa110_restart,  MACHINE_END diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c index 41383bf03d4..82d9c788535 100644 --- a/arch/arm/mach-ep93xx/adssphere.c +++ b/arch/arm/mach-ep93xx/adssphere.c @@ -40,7 +40,7 @@ MACHINE_START(ADSSPHERE, "ADS Sphere board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= adssphere_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index e85bf17f2d2..ee27b4b0ab0 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c @@ -140,11 +140,29 @@ static struct irqaction ep93xx_timer_irq = {  	.handler	= ep93xx_timer_interrupt,  }; -static void __init ep93xx_timer_init(void) +static u32 ep93xx_gettimeoffset(void) +{ +	int offset; + +	offset = __raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time; + +	/* +	 * Timer 4 is based on a 983.04 kHz reference clock, +	 * so dividing by 983040 gives the fraction of a second, +	 * so dividing by 0.983040 converts to uS. +	 * Refactor the calculation to avoid overflow. +	 * Finally, multiply by 1000 to give nS. +	 */ +	return (offset + (53 * offset / 3072)) * 1000; +} + +void __init ep93xx_timer_init(void)  {  	u32 tmode = EP93XX_TIMER123_CONTROL_MODE |  		    EP93XX_TIMER123_CONTROL_CLKSEL; +	arch_gettimeoffset = ep93xx_gettimeoffset; +  	/* Enable periodic HZ timer.  */  	__raw_writel(tmode, EP93XX_TIMER1_CONTROL);  	__raw_writel(TIMER1_RELOAD, EP93XX_TIMER1_LOAD); @@ -158,21 +176,6 @@ static void __init ep93xx_timer_init(void)  	setup_irq(IRQ_EP93XX_TIMER1, &ep93xx_timer_irq);  } -static unsigned long ep93xx_gettimeoffset(void) -{ -	int offset; - -	offset = __raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time; - -	/* Calculate (1000000 / 983040) * offset.  */ -	return offset + (53 * offset / 3072); -} - -struct sys_timer ep93xx_timer = { -	.init		= ep93xx_timer_init, -	.offset		= ep93xx_gettimeoffset, -}; -  /*************************************************************************   * EP93xx IRQ handling diff --git a/arch/arm/mach-ep93xx/edb93xx.c b/arch/arm/mach-ep93xx/edb93xx.c index b8f53d57a29..ac260519c9e 100644 --- a/arch/arm/mach-ep93xx/edb93xx.c +++ b/arch/arm/mach-ep93xx/edb93xx.c @@ -277,7 +277,7 @@ MACHINE_START(EDB9301, "Cirrus Logic EDB9301 Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -291,7 +291,7 @@ MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -305,7 +305,7 @@ MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -319,7 +319,7 @@ MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -333,7 +333,7 @@ MACHINE_START(EDB9307A, "Cirrus Logic EDB9307A Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -347,7 +347,7 @@ MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -361,7 +361,7 @@ MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -375,7 +375,7 @@ MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= edb93xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c index 7fd705b5efe..76c50f42bd7 100644 --- a/arch/arm/mach-ep93xx/gesbc9312.c +++ b/arch/arm/mach-ep93xx/gesbc9312.c @@ -40,7 +40,7 @@ MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= gesbc9312_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h index 33a5122c6dc..a14e1b37bef 100644 --- a/arch/arm/mach-ep93xx/include/mach/platform.h +++ b/arch/arm/mach-ep93xx/include/mach/platform.h @@ -53,7 +53,7 @@ int ep93xx_ide_acquire_gpio(struct platform_device *pdev);  void ep93xx_ide_release_gpio(struct platform_device *pdev);  void ep93xx_init_devices(void); -extern struct sys_timer ep93xx_timer; +extern void ep93xx_timer_init(void);  void ep93xx_restart(char, const char *);  void ep93xx_init_late(void); diff --git a/arch/arm/mach-ep93xx/micro9.c b/arch/arm/mach-ep93xx/micro9.c index 3d7cdab725b..777cd2170f8 100644 --- a/arch/arm/mach-ep93xx/micro9.c +++ b/arch/arm/mach-ep93xx/micro9.c @@ -83,7 +83,7 @@ MACHINE_START(MICRO9, "Contec Micro9-High")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= micro9_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -97,7 +97,7 @@ MACHINE_START(MICRO9M, "Contec Micro9-Mid")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= micro9_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -111,7 +111,7 @@ MACHINE_START(MICRO9L, "Contec Micro9-Lite")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= micro9_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, @@ -125,7 +125,7 @@ MACHINE_START(MICRO9S, "Contec Micro9-Slim")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= micro9_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/simone.c b/arch/arm/mach-ep93xx/simone.c index 0eb3f17a6fa..6ff39ee2ad5 100644 --- a/arch/arm/mach-ep93xx/simone.c +++ b/arch/arm/mach-ep93xx/simone.c @@ -84,7 +84,7 @@ MACHINE_START(SIM_ONE, "Simplemachines Sim.One Board")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= simone_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/snappercl15.c b/arch/arm/mach-ep93xx/snappercl15.c index 50043eef1cf..6434c07dbf9 100644 --- a/arch/arm/mach-ep93xx/snappercl15.c +++ b/arch/arm/mach-ep93xx/snappercl15.c @@ -177,7 +177,7 @@ MACHINE_START(SNAPPER_CL15, "Bluewater Systems Snapper CL15")  	.map_io		= ep93xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer 		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= snappercl15_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c index 3c4c233391d..e4fa0d3760a 100644 --- a/arch/arm/mach-ep93xx/ts72xx.c +++ b/arch/arm/mach-ep93xx/ts72xx.c @@ -247,7 +247,7 @@ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")  	.map_io		= ts72xx_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= ts72xx_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c b/arch/arm/mach-ep93xx/vision_ep9307.c index ba92e25e301..8610ba29399 100644 --- a/arch/arm/mach-ep93xx/vision_ep9307.c +++ b/arch/arm/mach-ep93xx/vision_ep9307.c @@ -365,7 +365,7 @@ MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307")  	.map_io		= vision_map_io,  	.init_irq	= ep93xx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &ep93xx_timer, +	.init_time	= ep93xx_timer_init,  	.init_machine	= vision_init_machine,  	.init_late	= ep93xx_init_late,  	.restart	= ep93xx_restart, diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index 04744f9c120..12f2f1117e9 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h @@ -12,7 +12,7 @@  #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H  #define __ARCH_ARM_MACH_EXYNOS_COMMON_H -extern struct sys_timer exynos4_timer; +extern void exynos4_timer_init(void);  struct map_desc;  void exynos_init_io(struct map_desc *mach_desc, int size); diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c index b938f9fc1dd..2f18130d0d1 100644 --- a/arch/arm/mach-exynos/mach-armlex4210.c +++ b/arch/arm/mach-exynos/mach-armlex4210.c @@ -204,6 +204,6 @@ MACHINE_START(ARMLEX4210, "ARMLEX4210")  	.handle_irq	= gic_handle_irq,  	.init_machine	= armlex4210_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.restart	= exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c index 92757ff817a..160030168b1 100644 --- a/arch/arm/mach-exynos/mach-exynos4-dt.c +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c @@ -110,7 +110,7 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")  	.handle_irq	= gic_handle_irq,  	.init_machine	= exynos4_dt_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.dt_compat	= exynos4_dt_compat,  	.restart        = exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index e99d3d8f2bc..4e074c67cc8 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c @@ -182,7 +182,7 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")  	.handle_irq	= gic_handle_irq,  	.init_machine	= exynos5_dt_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.dt_compat	= exynos5_dt_compat,  	.restart        = exynos5_restart,  	.reserve	= exynos5_reserve, diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index 27d4ed8b116..dccd1d16b83 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c @@ -1382,7 +1382,7 @@ MACHINE_START(NURI, "NURI")  	.handle_irq	= gic_handle_irq,  	.init_machine	= nuri_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.reserve        = &nuri_reserve,  	.restart	= exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 5e34b9c1619..4e115632456 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c @@ -817,7 +817,7 @@ MACHINE_START(ORIGEN, "ORIGEN")  	.handle_irq	= gic_handle_irq,  	.init_machine	= origen_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.reserve	= &origen_reserve,  	.restart	= exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index ae6da40c2aa..e9c9c2995f0 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c @@ -378,7 +378,7 @@ MACHINE_START(SMDK4212, "SMDK4212")  	.map_io		= smdk4x12_map_io,  	.handle_irq	= gic_handle_irq,  	.init_machine	= smdk4x12_machine_init, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.restart	= exynos4_restart,  	.reserve	= &smdk4x12_reserve,  MACHINE_END @@ -393,7 +393,7 @@ MACHINE_START(SMDK4412, "SMDK4412")  	.handle_irq	= gic_handle_irq,  	.init_machine	= smdk4x12_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.restart	= exynos4_restart,  	.reserve	= &smdk4x12_reserve,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index 35548e3c097..b228ab9bda0 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c @@ -425,7 +425,7 @@ MACHINE_START(SMDKV310, "SMDKV310")  	.map_io		= smdkv310_map_io,  	.handle_irq	= gic_handle_irq,  	.init_machine	= smdkv310_machine_init, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.reserve	= &smdkv310_reserve,  	.restart	= exynos4_restart,  MACHINE_END @@ -439,7 +439,7 @@ MACHINE_START(SMDKC210, "SMDKC210")  	.handle_irq	= gic_handle_irq,  	.init_machine	= smdkv310_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &exynos4_timer, +	.init_time	= exynos4_timer_init,  	.reserve	= &smdkv310_reserve,  	.restart	= exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 9e3340f1895..866f29a9bee 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c @@ -1154,7 +1154,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210")  	.handle_irq	= gic_handle_irq,  	.init_machine	= universal_machine_init,  	.init_late	= exynos_init_late, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.reserve        = &universal_reserve,  	.restart	= exynos4_restart,  MACHINE_END diff --git a/arch/arm/mach-exynos/mct.c b/arch/arm/mach-exynos/mct.c index 57668eb68e7..4a89b54fcad 100644 --- a/arch/arm/mach-exynos/mct.c +++ b/arch/arm/mach-exynos/mct.c @@ -478,7 +478,7 @@ static void __init exynos4_timer_resources(void)  #endif /* CONFIG_LOCAL_TIMERS */  } -static void __init exynos_timer_init(void) +void __init exynos4_timer_init(void)  {  	if (soc_is_exynos5440()) {  		arch_timer_of_register(); @@ -494,7 +494,3 @@ static void __init exynos_timer_init(void)  	exynos4_clocksource_init();  	exynos4_clockevent_init();  } - -struct sys_timer exynos4_timer = { -	.init		= exynos_timer_init, -}; diff --git a/arch/arm/mach-footbridge/cats-hw.c b/arch/arm/mach-footbridge/cats-hw.c index 25b453601ac..6987a09ec21 100644 --- a/arch/arm/mach-footbridge/cats-hw.c +++ b/arch/arm/mach-footbridge/cats-hw.c @@ -90,6 +90,6 @@ MACHINE_START(CATS, "Chalice-CATS")  	.fixup		= fixup_cats,  	.map_io		= footbridge_map_io,  	.init_irq	= footbridge_init_irq, -	.timer		= &isa_timer, +	.init_time	= isa_timer_init,  	.restart	= footbridge_restart,  MACHINE_END diff --git a/arch/arm/mach-footbridge/common.h b/arch/arm/mach-footbridge/common.h index c9767b892cb..a846e50a07b 100644 --- a/arch/arm/mach-footbridge/common.h +++ b/arch/arm/mach-footbridge/common.h @@ -1,6 +1,6 @@ -extern struct sys_timer footbridge_timer; -extern struct sys_timer isa_timer; +extern void footbridge_timer_init(void); +extern void isa_timer_init(void);  extern void isa_rtc_init(void); diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c index 3b54196447c..9f14b1d9a0e 100644 --- a/arch/arm/mach-footbridge/dc21285-timer.c +++ b/arch/arm/mach-footbridge/dc21285-timer.c @@ -93,7 +93,7 @@ static struct irqaction footbridge_timer_irq = {  /*   * Set up timer interrupt.   */ -static void __init footbridge_timer_init(void) +void __init footbridge_timer_init(void)  {  	struct clock_event_device *ce = &ckevt_dc21285; @@ -108,7 +108,3 @@ static void __init footbridge_timer_init(void)  	clockevents_register_device(ce);  } - -struct sys_timer footbridge_timer = { -	.init		= footbridge_timer_init, -}; diff --git a/arch/arm/mach-footbridge/ebsa285.c b/arch/arm/mach-footbridge/ebsa285.c index b09551ef89c..b08243500e2 100644 --- a/arch/arm/mach-footbridge/ebsa285.c +++ b/arch/arm/mach-footbridge/ebsa285.c @@ -101,7 +101,7 @@ MACHINE_START(EBSA285, "EBSA285")  	.video_end	= 0x000bffff,  	.map_io		= footbridge_map_io,  	.init_irq	= footbridge_init_irq, -	.timer		= &footbridge_timer, +	.init_time	= footbridge_timer_init,  	.restart	= footbridge_restart,  MACHINE_END diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c index c40bb415f4b..d9301dd5635 100644 --- a/arch/arm/mach-footbridge/isa-timer.c +++ b/arch/arm/mach-footbridge/isa-timer.c @@ -31,14 +31,10 @@ static struct irqaction pit_timer_irq = {  	.dev_id		= &i8253_clockevent,  }; -static void __init isa_timer_init(void) +void __init isa_timer_init(void)  {  	clocksource_i8253_init();  	setup_irq(i8253_clockevent.irq, &pit_timer_irq);  	clockevent_i8253_init(false);  } - -struct sys_timer isa_timer = { -	.init		= isa_timer_init, -}; diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c index d2d14339c6c..90ea23fdce4 100644 --- a/arch/arm/mach-footbridge/netwinder-hw.c +++ b/arch/arm/mach-footbridge/netwinder-hw.c @@ -766,6 +766,6 @@ MACHINE_START(NETWINDER, "Rebel-NetWinder")  	.fixup		= fixup_netwinder,  	.map_io		= footbridge_map_io,  	.init_irq	= footbridge_init_irq, -	.timer		= &isa_timer, +	.init_time	= isa_timer_init,  	.restart	= netwinder_restart,  MACHINE_END diff --git a/arch/arm/mach-footbridge/personal.c b/arch/arm/mach-footbridge/personal.c index e1e9990fa95..7bdeabdcd4d 100644 --- a/arch/arm/mach-footbridge/personal.c +++ b/arch/arm/mach-footbridge/personal.c @@ -18,7 +18,7 @@ MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")  	.atag_offset	= 0x100,  	.map_io		= footbridge_map_io,  	.init_irq	= footbridge_init_irq, -	.timer		= &footbridge_timer, +	.init_time	= footbridge_timer_init,  	.restart	= footbridge_restart,  MACHINE_END diff --git a/arch/arm/mach-gemini/board-nas4220b.c b/arch/arm/mach-gemini/board-nas4220b.c index 5927d3c253a..08bd650c42f 100644 --- a/arch/arm/mach-gemini/board-nas4220b.c +++ b/arch/arm/mach-gemini/board-nas4220b.c @@ -31,10 +31,6 @@  #include "common.h" -static struct sys_timer ib4220b_timer = { -	.init	= gemini_timer_init, -}; -  static struct gpio_led ib4220b_leds[] = {  	{  		.name			= "nas4220b:orange:hdd", @@ -105,6 +101,6 @@ MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")  	.atag_offset	= 0x100,  	.map_io		= gemini_map_io,  	.init_irq	= gemini_init_irq, -	.timer		= &ib4220b_timer, +	.init_time	= gemini_timer_init,  	.init_machine	= ib4220b_init,  MACHINE_END diff --git a/arch/arm/mach-gemini/board-rut1xx.c b/arch/arm/mach-gemini/board-rut1xx.c index cd7437a1cea..fa0a36337f4 100644 --- a/arch/arm/mach-gemini/board-rut1xx.c +++ b/arch/arm/mach-gemini/board-rut1xx.c @@ -71,10 +71,6 @@ static struct platform_device rut1xx_leds = {  	},  }; -static struct sys_timer rut1xx_timer = { -	.init	= gemini_timer_init, -}; -  static void __init rut1xx_init(void)  {  	gemini_gpio_init(); @@ -89,6 +85,6 @@ MACHINE_START(RUT100, "Teltonika RUT100")  	.atag_offset	= 0x100,  	.map_io		= gemini_map_io,  	.init_irq	= gemini_init_irq, -	.timer		= &rut1xx_timer, +	.init_time	= gemini_timer_init,  	.init_machine	= rut1xx_init,  MACHINE_END diff --git a/arch/arm/mach-gemini/board-wbd111.c b/arch/arm/mach-gemini/board-wbd111.c index a367880368f..3321cd6cc1f 100644 --- a/arch/arm/mach-gemini/board-wbd111.c +++ b/arch/arm/mach-gemini/board-wbd111.c @@ -80,10 +80,6 @@ static struct platform_device wbd111_leds_device = {  	},  }; -static struct sys_timer wbd111_timer = { -	.init	= gemini_timer_init, -}; -  static struct mtd_partition wbd111_partitions[] = {  	{  		.name		= "RedBoot", @@ -132,6 +128,6 @@ MACHINE_START(WBD111, "Wiliboard WBD-111")  	.atag_offset	= 0x100,  	.map_io		= gemini_map_io,  	.init_irq	= gemini_init_irq, -	.timer		= &wbd111_timer, +	.init_time	= gemini_timer_init,  	.init_machine	= wbd111_init,  MACHINE_END diff --git a/arch/arm/mach-gemini/board-wbd222.c b/arch/arm/mach-gemini/board-wbd222.c index f382811c131..fe33c825fda 100644 --- a/arch/arm/mach-gemini/board-wbd222.c +++ b/arch/arm/mach-gemini/board-wbd222.c @@ -80,10 +80,6 @@ static struct platform_device wbd222_leds_device = {  	},  }; -static struct sys_timer wbd222_timer = { -	.init	= gemini_timer_init, -}; -  static struct mtd_partition wbd222_partitions[] = {  	{  		.name		= "RedBoot", @@ -132,6 +128,6 @@ MACHINE_START(WBD222, "Wiliboard WBD-222")  	.atag_offset	= 0x100,  	.map_io		= gemini_map_io,  	.init_irq	= gemini_init_irq, -	.timer		= &wbd222_timer, +	.init_time	= gemini_timer_init,  	.init_machine	= wbd222_init,  MACHINE_END diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c index aa1331e86bc..17ef91fa3d5 100644 --- a/arch/arm/mach-h720x/common.c +++ b/arch/arm/mach-h720x/common.c @@ -42,12 +42,12 @@ void __init arch_dma_init(dma_t *dma)  }  /* - * Return usecs since last timer reload + * Return nsecs since last timer reload   * (timercount * (usecs perjiffie)) / (ticks per jiffie)   */ -unsigned long h720x_gettimeoffset(void) +u32 h720x_gettimeoffset(void)  { -	return (CPU_REG (TIMER_VIRT, TM0_COUNT) * tick_usec) / LATCH; +	return ((CPU_REG(TIMER_VIRT, TM0_COUNT) * tick_usec) / LATCH) * 1000;  }  /* diff --git a/arch/arm/mach-h720x/common.h b/arch/arm/mach-h720x/common.h index 2489537d33d..7e738410ca9 100644 --- a/arch/arm/mach-h720x/common.h +++ b/arch/arm/mach-h720x/common.h @@ -13,18 +13,18 @@   *   */ -extern unsigned long h720x_gettimeoffset(void); +extern u32 h720x_gettimeoffset(void);  extern void __init h720x_init_irq(void);  extern void __init h720x_map_io(void);  extern void h720x_restart(char, const char *);  #ifdef CONFIG_ARCH_H7202 -extern struct sys_timer h7202_timer; +extern void h7202_timer_init(void);  extern void __init init_hw_h7202(void);  extern void __init h7202_init_irq(void);  extern void __init h7202_init_time(void);  #endif  #ifdef CONFIG_ARCH_H7201 -extern struct sys_timer h7201_timer; +extern void h7201_timer_init(void);  #endif diff --git a/arch/arm/mach-h720x/cpu-h7201.c b/arch/arm/mach-h720x/cpu-h7201.c index 24df2a349a9..13c74121538 100644 --- a/arch/arm/mach-h720x/cpu-h7201.c +++ b/arch/arm/mach-h720x/cpu-h7201.c @@ -44,8 +44,10 @@ static struct irqaction h7201_timer_irq = {  /*   * Setup TIMER0 as system timer   */ -void __init h7201_init_time(void) +void __init h7201_timer_init(void)  { +	arch_gettimeoffset = h720x_gettimeoffset; +  	CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;  	CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;  	CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START; @@ -53,8 +55,3 @@ void __init h7201_init_time(void)  	setup_irq(IRQ_TIMER0, &h7201_timer_irq);  } - -struct sys_timer h7201_timer = { -	.init		= h7201_init_time, -	.offset		= h720x_gettimeoffset, -}; diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c index c37d570b852..e2ae7e898f9 100644 --- a/arch/arm/mach-h720x/cpu-h7202.c +++ b/arch/arm/mach-h720x/cpu-h7202.c @@ -178,8 +178,10 @@ static struct irqaction h7202_timer_irq = {  /*   * Setup TIMER0 as system timer   */ -void __init h7202_init_time(void) +void __init h7202_timer_init(void)  { +	arch_gettimeoffset = h720x_gettimeoffset; +  	CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;  	CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;  	CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START; @@ -188,11 +190,6 @@ void __init h7202_init_time(void)  	setup_irq(IRQ_TIMER0, &h7202_timer_irq);  } -struct sys_timer h7202_timer = { -	.init		= h7202_init_time, -	.offset		= h720x_gettimeoffset, -}; -  void __init h7202_init_irq (void)  {  	int 	irq; diff --git a/arch/arm/mach-h720x/h7201-eval.c b/arch/arm/mach-h720x/h7201-eval.c index 5fdb20c855e..4fdeb686c0a 100644 --- a/arch/arm/mach-h720x/h7201-eval.c +++ b/arch/arm/mach-h720x/h7201-eval.c @@ -32,7 +32,7 @@ MACHINE_START(H7201, "Hynix GMS30C7201")  	.atag_offset	= 0x1000,  	.map_io		= h720x_map_io,  	.init_irq	= h720x_init_irq, -	.timer		= &h7201_timer, +	.init_time	= h7201_timer_init,  	.dma_zone_size	= SZ_256M,  	.restart	= h720x_restart,  MACHINE_END diff --git a/arch/arm/mach-h720x/h7202-eval.c b/arch/arm/mach-h720x/h7202-eval.c index 169673036c5..f68e967a206 100644 --- a/arch/arm/mach-h720x/h7202-eval.c +++ b/arch/arm/mach-h720x/h7202-eval.c @@ -74,7 +74,7 @@ MACHINE_START(H7202, "Hynix HMS30C7202")  	.atag_offset	= 0x100,  	.map_io		= h720x_map_io,  	.init_irq	= h7202_init_irq, -	.timer		= &h7202_timer, +	.init_time	= h7202_timer_init,  	.init_machine	= init_eval_h7202,  	.dma_zone_size	= SZ_256M,  	.restart	= h720x_restart, diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index e6c06128293..ff7a4fa488d 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c @@ -130,10 +130,6 @@ static void __init highbank_timer_init(void)  	arch_timer_sched_clock_init();  } -static struct sys_timer highbank_timer = { -	.init = highbank_timer_init, -}; -  static void highbank_power_off(void)  {  	highbank_set_pwr_shutdown(); @@ -210,7 +206,7 @@ DT_MACHINE_START(HIGHBANK, "Highbank")  	.smp		= smp_ops(highbank_smp_ops),  	.map_io		= debug_ll_io_init,  	.init_irq	= highbank_init_irq, -	.timer		= &highbank_timer, +	.init_time	= highbank_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= highbank_init,  	.dt_compat	= highbank_match, diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c index e17dfbc4219..03b65e5ea54 100644 --- a/arch/arm/mach-imx/imx25-dt.c +++ b/arch/arm/mach-imx/imx25-dt.c @@ -22,15 +22,6 @@ static void __init imx25_dt_init(void)  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);  } -static void __init imx25_timer_init(void) -{ -	mx25_clocks_init_dt(); -} - -static struct sys_timer imx25_timer = { -	.init = imx25_timer_init, -}; -  static const char * const imx25_dt_board_compat[] __initconst = {  	"fsl,imx25",  	NULL @@ -41,7 +32,7 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")  	.init_early	= imx25_init_early,  	.init_irq	= mx25_init_irq,  	.handle_irq	= imx25_handle_irq, -	.timer		= &imx25_timer, +	.init_time	= imx25_timer_init,  	.init_machine	= imx25_dt_init,  	.dt_compat	= imx25_dt_board_compat,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/imx27-dt.c b/arch/arm/mach-imx/imx27-dt.c index ebfae96543c..c915a490a11 100644 --- a/arch/arm/mach-imx/imx27-dt.c +++ b/arch/arm/mach-imx/imx27-dt.c @@ -39,26 +39,22 @@ static void __init imx27_dt_init(void)  			     imx27_auxdata_lookup, NULL);  } -static void __init imx27_timer_init(void) -{ -	mx27_clocks_init_dt(); -} - -static struct sys_timer imx27_timer = { -	.init = imx27_timer_init, -}; -  static const char * const imx27_dt_board_compat[] __initconst = {  	"fsl,imx27",  	NULL  }; +static void __init imx27_timer_init(void) +{ +	mx27_clocks_init_dt(); +} +  DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")  	.map_io		= mx27_map_io,  	.init_early	= imx27_init_early,  	.init_irq	= mx27_init_irq,  	.handle_irq	= imx27_handle_irq, -	.timer		= &imx27_timer, +	.init_time	= imx27_timer_init,  	.init_machine	= imx27_dt_init,  	.dt_compat	= imx27_dt_board_compat,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c index af476de2570..f9a69096009 100644 --- a/arch/arm/mach-imx/imx31-dt.c +++ b/arch/arm/mach-imx/imx31-dt.c @@ -38,15 +38,6 @@ static void __init imx31_dt_init(void)  			     imx31_auxdata_lookup, NULL);  } -static void __init imx31_timer_init(void) -{ -	mx31_clocks_init_dt(); -} - -static struct sys_timer imx31_timer = { -	.init = imx31_timer_init, -}; -  static const char *imx31_dt_board_compat[] __initdata = {  	"fsl,imx31",  	NULL @@ -57,7 +48,7 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")  	.init_early	= imx31_init_early,  	.init_irq	= mx31_init_irq,  	.handle_irq	= imx31_handle_irq, -	.timer		= &imx31_timer, +	.init_time	= mx31_clocks_init_dt,  	.init_machine	= imx31_dt_init,  	.dt_compat	= imx31_dt_board_compat,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c index 5ffa40c673f..e2926a8863f 100644 --- a/arch/arm/mach-imx/imx51-dt.c +++ b/arch/arm/mach-imx/imx51-dt.c @@ -24,26 +24,22 @@ static void __init imx51_dt_init(void)  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);  } -static void __init imx51_timer_init(void) -{ -	mx51_clocks_init_dt(); -} - -static struct sys_timer imx51_timer = { -	.init = imx51_timer_init, -}; -  static const char *imx51_dt_board_compat[] __initdata = {  	"fsl,imx51",  	NULL  }; +static void __init imx51_timer_init(void) +{ +	mx51_clocks_init_dt(); +} +  DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")  	.map_io		= mx51_map_io,  	.init_early	= imx51_init_early,  	.init_irq	= mx51_init_irq,  	.handle_irq	= imx51_handle_irq, -	.timer		= &imx51_timer, +	.init_time	= imx51_timer_init,  	.init_machine	= imx51_dt_init,  	.init_late	= imx51_init_late,  	.dt_compat	= imx51_dt_board_compat, diff --git a/arch/arm/mach-imx/mach-apf9328.c b/arch/arm/mach-imx/mach-apf9328.c index 5c9bd2c66e6..067580b2969 100644 --- a/arch/arm/mach-imx/mach-apf9328.c +++ b/arch/arm/mach-imx/mach-apf9328.c @@ -137,17 +137,13 @@ static void __init apf9328_timer_init(void)  	mx1_clocks_init(32768);  } -static struct sys_timer apf9328_timer = { -	.init	= apf9328_timer_init, -}; -  MACHINE_START(APF9328, "Armadeus APF9328")  	/* Maintainer: Gwenhael Goavec-Merou, ARMadeus Systems */  	.map_io       = mx1_map_io,  	.init_early   = imx1_init_early,  	.init_irq     = mx1_init_irq,  	.handle_irq   = imx1_handle_irq, -	.timer        = &apf9328_timer, +	.init_time	= apf9328_timer_init,  	.init_machine = apf9328_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c index 59bd6b06a6b..368a6e3f592 100644 --- a/arch/arm/mach-imx/mach-armadillo5x0.c +++ b/arch/arm/mach-imx/mach-armadillo5x0.c @@ -557,10 +557,6 @@ static void __init armadillo5x0_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer armadillo5x0_timer = { -	.init	= armadillo5x0_timer_init, -}; -  MACHINE_START(ARMADILLO5X0, "Armadillo-500")  	/* Maintainer: Alberto Panizzo  */  	.atag_offset = 0x100, @@ -568,7 +564,7 @@ MACHINE_START(ARMADILLO5X0, "Armadillo-500")  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &armadillo5x0_timer, +	.init_time	= armadillo5x0_timer_init,  	.init_machine = armadillo5x0_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-bug.c b/arch/arm/mach-imx/mach-bug.c index 3a39d5aec07..2d00476f7d2 100644 --- a/arch/arm/mach-imx/mach-bug.c +++ b/arch/arm/mach-imx/mach-bug.c @@ -53,16 +53,12 @@ static void __init bug_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer bug_timer = { -	.init = bug_timer_init, -}; -  MACHINE_START(BUG, "BugLabs BUGBase")  	.map_io = mx31_map_io,  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &bug_timer, +	.init_time	= bug_timer_init,  	.init_machine = bug_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c index 12a370646b4..146559311bd 100644 --- a/arch/arm/mach-imx/mach-cpuimx27.c +++ b/arch/arm/mach-imx/mach-cpuimx27.c @@ -309,17 +309,13 @@ static void __init eukrea_cpuimx27_timer_init(void)  	mx27_clocks_init(26000000);  } -static struct sys_timer eukrea_cpuimx27_timer = { -	.init = eukrea_cpuimx27_timer_init, -}; -  MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27")  	.atag_offset = 0x100,  	.map_io = mx27_map_io,  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &eukrea_cpuimx27_timer, +	.init_time	= eukrea_cpuimx27_timer_init,  	.init_machine = eukrea_cpuimx27_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c index 5a31bf8c8f4..771362d1fbe 100644 --- a/arch/arm/mach-imx/mach-cpuimx35.c +++ b/arch/arm/mach-imx/mach-cpuimx35.c @@ -193,10 +193,6 @@ static void __init eukrea_cpuimx35_timer_init(void)  	mx35_clocks_init();  } -static struct sys_timer eukrea_cpuimx35_timer = { -	.init	= eukrea_cpuimx35_timer_init, -}; -  MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35")  	/* Maintainer: Eukrea Electromatique */  	.atag_offset = 0x100, @@ -204,7 +200,7 @@ MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35")  	.init_early = imx35_init_early,  	.init_irq = mx35_init_irq,  	.handle_irq = imx35_handle_irq, -	.timer = &eukrea_cpuimx35_timer, +	.init_time	= eukrea_cpuimx35_timer_init,  	.init_machine = eukrea_cpuimx35_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-cpuimx51sd.c b/arch/arm/mach-imx/mach-cpuimx51sd.c index b727de029c8..9b7393234f6 100644 --- a/arch/arm/mach-imx/mach-cpuimx51sd.c +++ b/arch/arm/mach-imx/mach-cpuimx51sd.c @@ -355,10 +355,6 @@ static void __init eukrea_cpuimx51sd_timer_init(void)  	mx51_clocks_init(32768, 24000000, 22579200, 0);  } -static struct sys_timer mxc_timer = { -	.init	= eukrea_cpuimx51sd_timer_init, -}; -  MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")  	/* Maintainer: Eric Bénard <eric@eukrea.com> */  	.atag_offset = 0x100, @@ -366,7 +362,7 @@ MACHINE_START(EUKREA_CPUIMX51SD, "Eukrea CPUIMX51SD")  	.init_early = imx51_init_early,  	.init_irq = mx51_init_irq,  	.handle_irq = imx51_handle_irq, -	.timer = &mxc_timer, +	.init_time	= eukrea_cpuimx51sd_timer_init,  	.init_machine = eukrea_cpuimx51sd_init,  	.init_late	= imx51_init_late,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c index 75027a5ad8b..4bf45442424 100644 --- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c +++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c @@ -159,10 +159,6 @@ static void __init eukrea_cpuimx25_timer_init(void)  	mx25_clocks_init();  } -static struct sys_timer eukrea_cpuimx25_timer = { -	.init   = eukrea_cpuimx25_timer_init, -}; -  MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25")  	/* Maintainer: Eukrea Electromatique */  	.atag_offset = 0x100, @@ -170,7 +166,7 @@ MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25")  	.init_early = imx25_init_early,  	.init_irq = mx25_init_irq,  	.handle_irq = imx25_handle_irq, -	.timer = &eukrea_cpuimx25_timer, +	.init_time = eukrea_cpuimx25_timer_init,  	.init_machine = eukrea_cpuimx25_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c index 318bd8df7fc..29ac8ee651d 100644 --- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c +++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c @@ -598,10 +598,6 @@ static void __init visstrim_m10_timer_init(void)  	mx27_clocks_init((unsigned long)25000000);  } -static struct sys_timer visstrim_m10_timer = { -	.init	= visstrim_m10_timer_init, -}; -  MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")  	.atag_offset = 0x100,  	.reserve = visstrim_reserve, @@ -609,7 +605,7 @@ MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &visstrim_m10_timer, +	.init_time	= visstrim_m10_timer_init,  	.init_machine = visstrim_m10_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-imx27ipcam.c b/arch/arm/mach-imx/mach-imx27ipcam.c index 53a86011293..1a851aea683 100644 --- a/arch/arm/mach-imx/mach-imx27ipcam.c +++ b/arch/arm/mach-imx/mach-imx27ipcam.c @@ -65,10 +65,6 @@ static void __init mx27ipcam_timer_init(void)  	mx27_clocks_init(25000000);  } -static struct sys_timer mx27ipcam_timer = { -	.init	= mx27ipcam_timer_init, -}; -  MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM")  	/* maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -76,7 +72,7 @@ MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM")  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &mx27ipcam_timer, +	.init_time	= mx27ipcam_timer_init,  	.init_machine = mx27ipcam_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-imx27lite.c b/arch/arm/mach-imx/mach-imx27lite.c index fc8dce93137..3da2e3e44ce 100644 --- a/arch/arm/mach-imx/mach-imx27lite.c +++ b/arch/arm/mach-imx/mach-imx27lite.c @@ -72,17 +72,13 @@ static void __init mx27lite_timer_init(void)  	mx27_clocks_init(26000000);  } -static struct sys_timer mx27lite_timer = { -	.init	= mx27lite_timer_init, -}; -  MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE")  	.atag_offset = 0x100,  	.map_io = mx27_map_io,  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &mx27lite_timer, +	.init_time	= mx27lite_timer_init,  	.init_machine = mx27lite_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-imx53.c b/arch/arm/mach-imx/mach-imx53.c index 860284dea0e..f579c616fee 100644 --- a/arch/arm/mach-imx/mach-imx53.c +++ b/arch/arm/mach-imx/mach-imx53.c @@ -44,26 +44,22 @@ static void __init imx53_dt_init(void)  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);  } -static void __init imx53_timer_init(void) -{ -	mx53_clocks_init_dt(); -} - -static struct sys_timer imx53_timer = { -	.init = imx53_timer_init, -}; -  static const char *imx53_dt_board_compat[] __initdata = {  	"fsl,imx53",  	NULL  }; +static void __init imx53_timer_init(void) +{ +	mx53_clocks_init_dt(); +} +  DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")  	.map_io		= mx53_map_io,  	.init_early	= imx53_init_early,  	.init_irq	= mx53_init_irq,  	.handle_irq	= imx53_handle_irq, -	.timer		= &imx53_timer, +	.init_time	= imx53_timer_init,  	.init_machine	= imx53_dt_init,  	.init_late	= imx53_init_late,  	.dt_compat	= imx53_dt_board_compat, diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 4eb1b3ac794..cd277a0f5b1 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c @@ -241,10 +241,6 @@ static void __init imx6q_timer_init(void)  	imx_print_silicon_rev("i.MX6Q", imx6q_revision());  } -static struct sys_timer imx6q_timer = { -	.init = imx6q_timer_init, -}; -  static const char *imx6q_dt_compat[] __initdata = {  	"fsl,imx6q",  	NULL, @@ -255,7 +251,7 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad (Device Tree)")  	.map_io		= imx6q_map_io,  	.init_irq	= imx6q_init_irq,  	.handle_irq	= imx6q_handle_irq, -	.timer		= &imx6q_timer, +	.init_time	= imx6q_timer_init,  	.init_machine	= imx6q_init_machine,  	.init_late      = imx6q_init_late,  	.dt_compat	= imx6q_dt_compat, diff --git a/arch/arm/mach-imx/mach-kzm_arm11_01.c b/arch/arm/mach-imx/mach-kzm_arm11_01.c index 2e536ea5344..c7bc41d6b46 100644 --- a/arch/arm/mach-imx/mach-kzm_arm11_01.c +++ b/arch/arm/mach-imx/mach-kzm_arm11_01.c @@ -284,17 +284,13 @@ static void __init kzm_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer kzm_timer = { -	.init = kzm_timer_init, -}; -  MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01")  	.atag_offset = 0x100,  	.map_io = kzm_map_io,  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &kzm_timer, +	.init_time	= kzm_timer_init,  	.init_machine = kzm_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx1ads.c b/arch/arm/mach-imx/mach-mx1ads.c index 06b483783e6..9f883e4d6fc 100644 --- a/arch/arm/mach-imx/mach-mx1ads.c +++ b/arch/arm/mach-imx/mach-mx1ads.c @@ -132,10 +132,6 @@ static void __init mx1ads_timer_init(void)  	mx1_clocks_init(32000);  } -static struct sys_timer mx1ads_timer = { -	.init	= mx1ads_timer_init, -}; -  MACHINE_START(MX1ADS, "Freescale MX1ADS")  	/* Maintainer: Sascha Hauer, Pengutronix */  	.atag_offset = 0x100, @@ -143,7 +139,7 @@ MACHINE_START(MX1ADS, "Freescale MX1ADS")  	.init_early = imx1_init_early,  	.init_irq = mx1_init_irq,  	.handle_irq = imx1_handle_irq, -	.timer = &mx1ads_timer, +	.init_time	= mx1ads_timer_init,  	.init_machine = mx1ads_init,  	.restart	= mxc_restart,  MACHINE_END @@ -154,7 +150,7 @@ MACHINE_START(MXLADS, "Freescale MXLADS")  	.init_early = imx1_init_early,  	.init_irq = mx1_init_irq,  	.handle_irq = imx1_handle_irq, -	.timer = &mx1ads_timer, +	.init_time	= mx1ads_timer_init,  	.init_machine = mx1ads_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c index 6adb3136bb0..a06aa4dc37f 100644 --- a/arch/arm/mach-imx/mach-mx21ads.c +++ b/arch/arm/mach-imx/mach-mx21ads.c @@ -318,10 +318,6 @@ static void __init mx21ads_timer_init(void)  	mx21_clocks_init(32768, 26000000);  } -static struct sys_timer mx21ads_timer = { -	.init	= mx21ads_timer_init, -}; -  MACHINE_START(MX21ADS, "Freescale i.MX21ADS")  	/* maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -329,7 +325,7 @@ MACHINE_START(MX21ADS, "Freescale i.MX21ADS")  	.init_early = imx21_init_early,  	.init_irq = mx21_init_irq,  	.handle_irq = imx21_handle_irq, -	.timer = &mx21ads_timer, +	.init_time	= mx21ads_timer_init,  	.init_machine = mx21ads_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c index b1b03aa55bb..8bcda688a00 100644 --- a/arch/arm/mach-imx/mach-mx25_3ds.c +++ b/arch/arm/mach-imx/mach-mx25_3ds.c @@ -257,10 +257,6 @@ static void __init mx25pdk_timer_init(void)  	mx25_clocks_init();  } -static struct sys_timer mx25pdk_timer = { -	.init   = mx25pdk_timer_init, -}; -  MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)")  	/* Maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -268,7 +264,7 @@ MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)")  	.init_early = imx25_init_early,  	.init_irq = mx25_init_irq,  	.handle_irq = imx25_handle_irq, -	.timer = &mx25pdk_timer, +	.init_time	= mx25pdk_timer_init,  	.init_machine = mx25pdk_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c index d0e547fa925..25b3e4c9bc0 100644 --- a/arch/arm/mach-imx/mach-mx27_3ds.c +++ b/arch/arm/mach-imx/mach-mx27_3ds.c @@ -538,10 +538,6 @@ static void __init mx27pdk_timer_init(void)  	mx27_clocks_init(26000000);  } -static struct sys_timer mx27pdk_timer = { -	.init	= mx27pdk_timer_init, -}; -  MACHINE_START(MX27_3DS, "Freescale MX27PDK")  	/* maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -549,7 +545,7 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &mx27pdk_timer, +	.init_time	= mx27pdk_timer_init,  	.init_machine = mx27pdk_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c index 3d036f57f0e..9821b824dca 100644 --- a/arch/arm/mach-imx/mach-mx27ads.c +++ b/arch/arm/mach-imx/mach-mx27ads.c @@ -323,10 +323,6 @@ static void __init mx27ads_timer_init(void)  	mx27_clocks_init(fref);  } -static struct sys_timer mx27ads_timer = { -	.init	= mx27ads_timer_init, -}; -  static struct map_desc mx27ads_io_desc[] __initdata = {  	{  		.virtual = PBC_BASE_ADDRESS, @@ -349,7 +345,7 @@ MACHINE_START(MX27ADS, "Freescale i.MX27ADS")  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &mx27ads_timer, +	.init_time	= mx27ads_timer_init,  	.init_machine = mx27ads_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c index bc301befdd0..1ed916175d4 100644 --- a/arch/arm/mach-imx/mach-mx31_3ds.c +++ b/arch/arm/mach-imx/mach-mx31_3ds.c @@ -762,10 +762,6 @@ static void __init mx31_3ds_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer mx31_3ds_timer = { -	.init	= mx31_3ds_timer_init, -}; -  static void __init mx31_3ds_reserve(void)  {  	/* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ @@ -780,7 +776,7 @@ MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &mx31_3ds_timer, +	.init_time	= mx31_3ds_timer_init,  	.init_machine = mx31_3ds_init,  	.reserve = mx31_3ds_reserve,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c index 8b56f8883f3..daf8889125c 100644 --- a/arch/arm/mach-imx/mach-mx31ads.c +++ b/arch/arm/mach-imx/mach-mx31ads.c @@ -576,10 +576,6 @@ static void __init mx31ads_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer mx31ads_timer = { -	.init	= mx31ads_timer_init, -}; -  MACHINE_START(MX31ADS, "Freescale MX31ADS")  	/* Maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -587,7 +583,7 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")  	.init_early = imx31_init_early,  	.init_irq = mx31ads_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &mx31ads_timer, +	.init_time	= mx31ads_timer_init,  	.init_machine = mx31ads_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx31lilly.c b/arch/arm/mach-imx/mach-mx31lilly.c index 08b9965c8b3..832b1e2f964 100644 --- a/arch/arm/mach-imx/mach-mx31lilly.c +++ b/arch/arm/mach-imx/mach-mx31lilly.c @@ -303,17 +303,13 @@ static void __init mx31lilly_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer mx31lilly_timer = { -	.init	= mx31lilly_timer_init, -}; -  MACHINE_START(LILLY1131, "INCO startec LILLY-1131")  	.atag_offset = 0x100,  	.map_io = mx31_map_io,  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &mx31lilly_timer, +	.init_time	= mx31lilly_timer_init,  	.init_machine = mx31lilly_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c index bdcd92e5951..bea07299b61 100644 --- a/arch/arm/mach-imx/mach-mx31lite.c +++ b/arch/arm/mach-imx/mach-mx31lite.c @@ -285,10 +285,6 @@ static void __init mx31lite_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer mx31lite_timer = { -	.init	= mx31lite_timer_init, -}; -  MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")  	/* Maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -296,7 +292,7 @@ MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &mx31lite_timer, +	.init_time	= mx31lite_timer_init,  	.init_machine = mx31lite_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c index 2517cfa9f26..dae4cd7be04 100644 --- a/arch/arm/mach-imx/mach-mx31moboard.c +++ b/arch/arm/mach-imx/mach-mx31moboard.c @@ -596,10 +596,6 @@ static void __init mx31moboard_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer mx31moboard_timer = { -	.init	= mx31moboard_timer_init, -}; -  static void __init mx31moboard_reserve(void)  {  	/* reserve 4 MiB for mx3-camera */ @@ -615,7 +611,7 @@ MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &mx31moboard_timer, +	.init_time	= mx31moboard_timer_init,  	.init_machine = mx31moboard_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c index 5277da45d60..a42f4f07051 100644 --- a/arch/arm/mach-imx/mach-mx35_3ds.c +++ b/arch/arm/mach-imx/mach-mx35_3ds.c @@ -602,10 +602,6 @@ static void __init mx35pdk_timer_init(void)  	mx35_clocks_init();  } -static struct sys_timer mx35pdk_timer = { -	.init	= mx35pdk_timer_init, -}; -  static void __init mx35_3ds_reserve(void)  {  	/* reserve MX35_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ @@ -620,7 +616,7 @@ MACHINE_START(MX35_3DS, "Freescale MX35PDK")  	.init_early = imx35_init_early,  	.init_irq = mx35_init_irq,  	.handle_irq = imx35_handle_irq, -	.timer = &mx35pdk_timer, +	.init_time	= mx35pdk_timer_init,  	.init_machine = mx35_3ds_init,  	.reserve = mx35_3ds_reserve,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/mach-mx50_rdp.c b/arch/arm/mach-imx/mach-mx50_rdp.c index 0c1f88a80bd..8937902bda5 100644 --- a/arch/arm/mach-imx/mach-mx50_rdp.c +++ b/arch/arm/mach-imx/mach-mx50_rdp.c @@ -210,16 +210,12 @@ static void __init mx50_rdp_timer_init(void)  	mx50_clocks_init(32768, 24000000, 22579200);  } -static struct sys_timer mx50_rdp_timer = { -	.init	= mx50_rdp_timer_init, -}; -  MACHINE_START(MX50_RDP, "Freescale MX50 Reference Design Platform")  	.map_io = mx50_map_io,  	.init_early = imx50_init_early,  	.init_irq = mx50_init_irq,  	.handle_irq = imx50_handle_irq, -	.timer = &mx50_rdp_timer, +	.init_time	= mx50_rdp_timer_init,  	.init_machine = mx50_rdp_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-mx51_3ds.c b/arch/arm/mach-imx/mach-mx51_3ds.c index abc25bd1107..2d236511153 100644 --- a/arch/arm/mach-imx/mach-mx51_3ds.c +++ b/arch/arm/mach-imx/mach-mx51_3ds.c @@ -160,10 +160,6 @@ static void __init mx51_3ds_timer_init(void)  	mx51_clocks_init(32768, 24000000, 22579200, 0);  } -static struct sys_timer mx51_3ds_timer = { -	.init = mx51_3ds_timer_init, -}; -  MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")  	/* Maintainer: Freescale Semiconductor, Inc. */  	.atag_offset = 0x100, @@ -171,7 +167,7 @@ MACHINE_START(MX51_3DS, "Freescale MX51 3-Stack Board")  	.init_early = imx51_init_early,  	.init_irq = mx51_init_irq,  	.handle_irq = imx51_handle_irq, -	.timer = &mx51_3ds_timer, +	.init_time	= mx51_3ds_timer_init,  	.init_machine = mx51_3ds_init,  	.init_late	= imx51_init_late,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/mach-mx51_babbage.c b/arch/arm/mach-imx/mach-mx51_babbage.c index d9a84ca2199..6c4d7feb452 100644 --- a/arch/arm/mach-imx/mach-mx51_babbage.c +++ b/arch/arm/mach-imx/mach-mx51_babbage.c @@ -418,10 +418,6 @@ static void __init mx51_babbage_timer_init(void)  	mx51_clocks_init(32768, 24000000, 22579200, 0);  } -static struct sys_timer mx51_babbage_timer = { -	.init = mx51_babbage_timer_init, -}; -  MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")  	/* Maintainer: Amit Kucheria <amit.kucheria@canonical.com> */  	.atag_offset = 0x100, @@ -429,7 +425,7 @@ MACHINE_START(MX51_BABBAGE, "Freescale MX51 Babbage Board")  	.init_early = imx51_init_early,  	.init_irq = mx51_init_irq,  	.handle_irq = imx51_handle_irq, -	.timer = &mx51_babbage_timer, +	.init_time	= mx51_babbage_timer_init,  	.init_machine = mx51_babbage_init,  	.init_late	= imx51_init_late,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/mach-mxt_td60.c b/arch/arm/mach-imx/mach-mxt_td60.c index f4a8c7e108e..a27faaba98e 100644 --- a/arch/arm/mach-imx/mach-mxt_td60.c +++ b/arch/arm/mach-imx/mach-mxt_td60.c @@ -261,10 +261,6 @@ static void __init mxt_td60_timer_init(void)  	mx27_clocks_init(26000000);  } -static struct sys_timer mxt_td60_timer = { -	.init	= mxt_td60_timer_init, -}; -  MACHINE_START(MXT_TD60, "Maxtrack i-MXT TD60")  	/* maintainer: Maxtrack Industrial */  	.atag_offset = 0x100, @@ -272,7 +268,7 @@ MACHINE_START(MXT_TD60, "Maxtrack i-MXT TD60")  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &mxt_td60_timer, +	.init_time	= mxt_td60_timer_init,  	.init_machine = mxt_td60_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c index eee369fa94a..b8b15bb1ffd 100644 --- a/arch/arm/mach-imx/mach-pca100.c +++ b/arch/arm/mach-imx/mach-pca100.c @@ -416,10 +416,6 @@ static void __init pca100_timer_init(void)  	mx27_clocks_init(26000000);  } -static struct sys_timer pca100_timer = { -	.init = pca100_timer_init, -}; -  MACHINE_START(PCA100, "phyCARD-i.MX27")  	.atag_offset = 0x100,  	.map_io = mx27_map_io, @@ -427,6 +423,6 @@ MACHINE_START(PCA100, "phyCARD-i.MX27")  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq,  	.init_machine = pca100_init, -	.timer = &pca100_timer, +	.init_time	= pca100_timer_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c index 547fef133f6..bc0261e99d3 100644 --- a/arch/arm/mach-imx/mach-pcm037.c +++ b/arch/arm/mach-imx/mach-pcm037.c @@ -685,10 +685,6 @@ static void __init pcm037_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer pcm037_timer = { -	.init	= pcm037_timer_init, -}; -  static void __init pcm037_reserve(void)  {  	/* reserve 4 MiB for mx3-camera */ @@ -709,7 +705,7 @@ MACHINE_START(PCM037, "Phytec Phycore pcm037")  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &pcm037_timer, +	.init_time	= pcm037_timer_init,  	.init_machine = pcm037_init,  	.init_late = pcm037_init_late,  	.restart	= mxc_restart, diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c index 4aa0d079860..e805ac273e9 100644 --- a/arch/arm/mach-imx/mach-pcm038.c +++ b/arch/arm/mach-imx/mach-pcm038.c @@ -346,17 +346,13 @@ static void __init pcm038_timer_init(void)  	mx27_clocks_init(26000000);  } -static struct sys_timer pcm038_timer = { -	.init = pcm038_timer_init, -}; -  MACHINE_START(PCM038, "phyCORE-i.MX27")  	.atag_offset = 0x100,  	.map_io = mx27_map_io,  	.init_early = imx27_init_early,  	.init_irq = mx27_init_irq,  	.handle_irq = imx27_handle_irq, -	.timer = &pcm038_timer, +	.init_time	= pcm038_timer_init,  	.init_machine = pcm038_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c index 92445440221..8ed533f0f8c 100644 --- a/arch/arm/mach-imx/mach-pcm043.c +++ b/arch/arm/mach-imx/mach-pcm043.c @@ -394,10 +394,6 @@ static void __init pcm043_timer_init(void)  	mx35_clocks_init();  } -static struct sys_timer pcm043_timer = { -	.init	= pcm043_timer_init, -}; -  MACHINE_START(PCM043, "Phytec Phycore pcm043")  	/* Maintainer: Pengutronix */  	.atag_offset = 0x100, @@ -405,7 +401,7 @@ MACHINE_START(PCM043, "Phytec Phycore pcm043")  	.init_early = imx35_init_early,  	.init_irq = mx35_init_irq,  	.handle_irq = imx35_handle_irq, -	.timer = &pcm043_timer, +	.init_time = pcm043_timer_init,  	.init_machine = pcm043_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-qong.c b/arch/arm/mach-imx/mach-qong.c index 96d9a91f8a3..22af27ed457 100644 --- a/arch/arm/mach-imx/mach-qong.c +++ b/arch/arm/mach-imx/mach-qong.c @@ -260,10 +260,6 @@ static void __init qong_timer_init(void)  	mx31_clocks_init(26000000);  } -static struct sys_timer qong_timer = { -	.init	= qong_timer_init, -}; -  MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")  	/* Maintainer: DENX Software Engineering GmbH */  	.atag_offset = 0x100, @@ -271,7 +267,7 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")  	.init_early = imx31_init_early,  	.init_irq = mx31_init_irq,  	.handle_irq = imx31_handle_irq, -	.timer = &qong_timer, +	.init_time	= qong_timer_init,  	.init_machine = qong_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-scb9328.c b/arch/arm/mach-imx/mach-scb9328.c index fc970409dba..b0fa10dd79f 100644 --- a/arch/arm/mach-imx/mach-scb9328.c +++ b/arch/arm/mach-imx/mach-scb9328.c @@ -131,10 +131,6 @@ static void __init scb9328_timer_init(void)  	mx1_clocks_init(32000);  } -static struct sys_timer scb9328_timer = { -	.init	= scb9328_timer_init, -}; -  MACHINE_START(SCB9328, "Synertronixx scb9328")  	/* Sascha Hauer */  	.atag_offset = 100, @@ -142,7 +138,7 @@ MACHINE_START(SCB9328, "Synertronixx scb9328")  	.init_early = imx1_init_early,  	.init_irq = mx1_init_irq,  	.handle_irq = imx1_handle_irq, -	.timer = &scb9328_timer, +	.init_time	= scb9328_timer_init,  	.init_machine = scb9328_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c index 3aecf91e428..0910761e828 100644 --- a/arch/arm/mach-imx/mach-vpr200.c +++ b/arch/arm/mach-imx/mach-vpr200.c @@ -305,17 +305,13 @@ static void __init vpr200_timer_init(void)  	mx35_clocks_init();  } -static struct sys_timer vpr200_timer = { -	.init	= vpr200_timer_init, -}; -  MACHINE_START(VPR200, "VPR200")  	/* Maintainer: Creative Product Design */  	.map_io = mx35_map_io,  	.init_early = imx35_init_early,  	.init_irq = mx35_init_irq,  	.handle_irq = imx35_handle_irq, -	.timer = &vpr200_timer, +	.init_time = vpr200_timer_init,  	.init_machine = vpr200_board_init,  	.restart	= mxc_restart,  MACHINE_END diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 61225e12a74..327be3138e0 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c @@ -425,7 +425,7 @@ void __init ap_init_early(void)  #ifdef CONFIG_OF -static void __init ap_init_timer_of(void) +static void __init ap_of_timer_init(void)  {  	struct device_node *node;  	const char *path; @@ -464,10 +464,6 @@ static void __init ap_init_timer_of(void)  	integrator_clockevent_init(rate, base, irq);  } -static struct sys_timer ap_of_timer = { -	.init		= ap_init_timer_of, -}; -  static const struct of_device_id fpga_irq_of_match[] __initconst = {  	{ .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },  	{ /* Sentinel */ } @@ -584,7 +580,7 @@ DT_MACHINE_START(INTEGRATOR_AP_DT, "ARM Integrator/AP (Device Tree)")  	.init_early	= ap_init_early,  	.init_irq	= ap_init_irq_of,  	.handle_irq	= fpga_handle_irq, -	.timer		= &ap_of_timer, +	.init_time	= ap_of_timer_init,  	.init_machine	= ap_init_of,  	.restart	= integrator_restart,  	.dt_compat      = ap_dt_board_compat, @@ -636,7 +632,7 @@ static struct platform_device cfi_flash_device = {  	.resource	= &cfi_flash_resource,  }; -static void __init ap_init_timer(void) +static void __init ap_timer_init(void)  {  	struct clk *clk;  	unsigned long rate; @@ -655,10 +651,6 @@ static void __init ap_init_timer(void)  				IRQ_TIMERINT1);  } -static struct sys_timer ap_timer = { -	.init		= ap_init_timer, -}; -  #define INTEGRATOR_SC_VALID_INT	0x003fffff  static void __init ap_init_irq(void) @@ -714,7 +706,7 @@ MACHINE_START(INTEGRATOR, "ARM-Integrator")  	.init_early	= ap_init_early,  	.init_irq	= ap_init_irq,  	.handle_irq	= fpga_handle_irq, -	.timer		= &ap_timer, +	.init_time	= ap_timer_init,  	.init_machine	= ap_init,  	.restart	= integrator_restart,  MACHINE_END diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 601618903df..57cde9133b5 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c @@ -251,7 +251,7 @@ static void __init intcp_init_early(void)  #ifdef CONFIG_OF -static void __init intcp_timer_init_of(void) +static void __init cp_of_timer_init(void)  {  	struct device_node *node;  	const char *path; @@ -283,10 +283,6 @@ static void __init intcp_timer_init_of(void)  	sp804_clockevents_init(base, irq, node->name);  } -static struct sys_timer cp_of_timer = { -	.init		= intcp_timer_init_of, -}; -  static const struct of_device_id fpga_irq_of_match[] __initconst = {  	{ .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },  	{ /* Sentinel */ } @@ -387,7 +383,7 @@ DT_MACHINE_START(INTEGRATOR_CP_DT, "ARM Integrator/CP (Device Tree)")  	.init_early	= intcp_init_early,  	.init_irq	= intcp_init_irq_of,  	.handle_irq	= fpga_handle_irq, -	.timer		= &cp_of_timer, +	.init_time	= cp_of_timer_init,  	.init_machine	= intcp_init_of,  	.restart	= integrator_restart,  	.dt_compat      = intcp_dt_board_compat, @@ -509,7 +505,7 @@ static void __init intcp_init_irq(void)  #define TIMER1_VA_BASE __io_address(INTEGRATOR_TIMER1_BASE)  #define TIMER2_VA_BASE __io_address(INTEGRATOR_TIMER2_BASE) -static void __init intcp_timer_init(void) +static void __init cp_timer_init(void)  {  	writel(0, TIMER0_VA_BASE + TIMER_CTRL);  	writel(0, TIMER1_VA_BASE + TIMER_CTRL); @@ -519,10 +515,6 @@ static void __init intcp_timer_init(void)  	sp804_clockevents_init(TIMER1_VA_BASE, IRQ_TIMERINT1, "timer1");  } -static struct sys_timer cp_timer = { -	.init		= intcp_timer_init, -}; -  #define INTEGRATOR_CP_MMC_IRQS	{ IRQ_CP_MMCIINT0, IRQ_CP_MMCIINT1 }  #define INTEGRATOR_CP_AACI_IRQS	{ IRQ_CP_AACIINT } @@ -562,7 +554,7 @@ MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")  	.init_early	= intcp_init_early,  	.init_irq	= intcp_init_irq,  	.handle_irq	= fpga_handle_irq, -	.timer		= &cp_timer, +	.init_time	= cp_timer_init,  	.init_machine	= intcp_init,  	.restart	= integrator_restart,  MACHINE_END diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c index e3f3e7daa79..02a8228ac2d 100644 --- a/arch/arm/mach-iop13xx/iq81340mc.c +++ b/arch/arm/mach-iop13xx/iq81340mc.c @@ -84,17 +84,13 @@ static void __init iq81340mc_timer_init(void)  	iop_init_time(bus_freq);  } -static struct sys_timer iq81340mc_timer = { -       .init       = iq81340mc_timer_init, -}; -  MACHINE_START(IQ81340MC, "Intel IQ81340MC")  	/* Maintainer: Dan Williams <dan.j.williams@intel.com> */  	.atag_offset    = 0x100,  	.init_early     = iop13xx_init_early,  	.map_io         = iop13xx_map_io,  	.init_irq       = iop13xx_init_irq, -	.timer          = &iq81340mc_timer, +	.init_time	= iq81340mc_timer_init,  	.init_machine   = iq81340mc_init,  	.restart	= iop13xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c index e9474411163..1b80f10722b 100644 --- a/arch/arm/mach-iop13xx/iq81340sc.c +++ b/arch/arm/mach-iop13xx/iq81340sc.c @@ -86,17 +86,13 @@ static void __init iq81340sc_timer_init(void)  	iop_init_time(bus_freq);  } -static struct sys_timer iq81340sc_timer = { -       .init       = iq81340sc_timer_init, -}; -  MACHINE_START(IQ81340SC, "Intel IQ81340SC")  	/* Maintainer: Dan Williams <dan.j.williams@intel.com> */  	.atag_offset    = 0x100,  	.init_early     = iop13xx_init_early,  	.map_io         = iop13xx_map_io,  	.init_irq       = iop13xx_init_irq, -	.timer          = &iq81340sc_timer, +	.init_time	= iq81340sc_timer_init,  	.init_machine   = iq81340sc_init,  	.restart	= iop13xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop32x/em7210.c b/arch/arm/mach-iop32x/em7210.c index 9f369f09c29..31fbb6c61b2 100644 --- a/arch/arm/mach-iop32x/em7210.c +++ b/arch/arm/mach-iop32x/em7210.c @@ -40,10 +40,6 @@ static void __init em7210_timer_init(void)  	iop_init_time(200000000);  } -static struct sys_timer em7210_timer = { -	.init		= em7210_timer_init, -}; -  /*   * EM7210 RTC   */ @@ -205,7 +201,7 @@ MACHINE_START(EM7210, "Lanner EM7210")  	.atag_offset	= 0x100,  	.map_io		= em7210_map_io,  	.init_irq	= iop32x_init_irq, -	.timer		= &em7210_timer, +	.init_time	= em7210_timer_init,  	.init_machine	= em7210_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop32x/glantank.c b/arch/arm/mach-iop32x/glantank.c index 02e20c3912b..ac304705fe6 100644 --- a/arch/arm/mach-iop32x/glantank.c +++ b/arch/arm/mach-iop32x/glantank.c @@ -44,10 +44,6 @@ static void __init glantank_timer_init(void)  	iop_init_time(200000000);  } -static struct sys_timer glantank_timer = { -	.init		= glantank_timer_init, -}; -  /*   * GLAN Tank I/O. @@ -209,7 +205,7 @@ MACHINE_START(GLANTANK, "GLAN Tank")  	.atag_offset	= 0x100,  	.map_io		= glantank_map_io,  	.init_irq	= iop32x_init_irq, -	.timer		= &glantank_timer, +	.init_time	= glantank_timer_init,  	.init_machine	= glantank_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop32x/iq31244.c b/arch/arm/mach-iop32x/iq31244.c index ddd1c7ecfe5..f2cd2966212 100644 --- a/arch/arm/mach-iop32x/iq31244.c +++ b/arch/arm/mach-iop32x/iq31244.c @@ -75,10 +75,6 @@ static void __init iq31244_timer_init(void)  	}  } -static struct sys_timer iq31244_timer = { -	.init		= iq31244_timer_init, -}; -  /*   * IQ31244 I/O. @@ -314,7 +310,7 @@ MACHINE_START(IQ31244, "Intel IQ31244")  	.atag_offset	= 0x100,  	.map_io		= iq31244_map_io,  	.init_irq	= iop32x_init_irq, -	.timer		= &iq31244_timer, +	.init_time	= iq31244_timer_init,  	.init_machine	= iq31244_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END @@ -329,7 +325,7 @@ MACHINE_START(EP80219, "Intel EP80219")  	.atag_offset	= 0x100,  	.map_io		= iq31244_map_io,  	.init_irq	= iop32x_init_irq, -	.timer		= &iq31244_timer, +	.init_time	= iq31244_timer_init,  	.init_machine	= iq31244_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop32x/iq80321.c b/arch/arm/mach-iop32x/iq80321.c index bf155e6a3b4..015435de90d 100644 --- a/arch/arm/mach-iop32x/iq80321.c +++ b/arch/arm/mach-iop32x/iq80321.c @@ -43,10 +43,6 @@ static void __init iq80321_timer_init(void)  	iop_init_time(200000000);  } -static struct sys_timer iq80321_timer = { -	.init		= iq80321_timer_init, -}; -  /*   * IQ80321 I/O. @@ -188,7 +184,7 @@ MACHINE_START(IQ80321, "Intel IQ80321")  	.atag_offset	= 0x100,  	.map_io		= iq80321_map_io,  	.init_irq	= iop32x_init_irq, -	.timer		= &iq80321_timer, +	.init_time	= iq80321_timer_init,  	.init_machine	= iq80321_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop32x/n2100.c b/arch/arm/mach-iop32x/n2100.c index 5a7ae91e884..ea0984a7449 100644 --- a/arch/arm/mach-iop32x/n2100.c +++ b/arch/arm/mach-iop32x/n2100.c @@ -50,10 +50,6 @@ static void __init n2100_timer_init(void)  	iop_init_time(198000000);  } -static struct sys_timer n2100_timer = { -	.init		= n2100_timer_init, -}; -  /*   * N2100 I/O. @@ -337,7 +333,7 @@ MACHINE_START(N2100, "Thecus N2100")  	.atag_offset	= 0x100,  	.map_io		= n2100_map_io,  	.init_irq	= iop32x_init_irq, -	.timer		= &n2100_timer, +	.init_time	= n2100_timer_init,  	.init_machine	= n2100_init_machine,  	.restart	= n2100_restart,  MACHINE_END diff --git a/arch/arm/mach-iop33x/iq80331.c b/arch/arm/mach-iop33x/iq80331.c index e74a7debe79..c43304a10fa 100644 --- a/arch/arm/mach-iop33x/iq80331.c +++ b/arch/arm/mach-iop33x/iq80331.c @@ -45,10 +45,6 @@ static void __init iq80331_timer_init(void)  		iop_init_time(266000000);  } -static struct sys_timer iq80331_timer = { -	.init		= iq80331_timer_init, -}; -  /*   * IQ80331 PCI. @@ -143,7 +139,7 @@ MACHINE_START(IQ80331, "Intel IQ80331")  	.atag_offset	= 0x100,  	.map_io		= iop3xx_map_io,  	.init_irq	= iop33x_init_irq, -	.timer		= &iq80331_timer, +	.init_time	= iq80331_timer_init,  	.init_machine	= iq80331_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END diff --git a/arch/arm/mach-iop33x/iq80332.c b/arch/arm/mach-iop33x/iq80332.c index e2f5beece6e..8192987e78e 100644 --- a/arch/arm/mach-iop33x/iq80332.c +++ b/arch/arm/mach-iop33x/iq80332.c @@ -45,10 +45,6 @@ static void __init iq80332_timer_init(void)  		iop_init_time(266000000);  } -static struct sys_timer iq80332_timer = { -	.init		= iq80332_timer_init, -}; -  /*   * IQ80332 PCI. @@ -143,7 +139,7 @@ MACHINE_START(IQ80332, "Intel IQ80332")  	.atag_offset	= 0x100,  	.map_io		= iop3xx_map_io,  	.init_irq	= iop33x_init_irq, -	.timer		= &iq80332_timer, +	.init_time	= iq80332_timer_init,  	.init_machine	= iq80332_init_machine,  	.restart	= iop3xx_restart,  MACHINE_END diff --git a/arch/arm/mach-ixp4xx/avila-setup.c b/arch/arm/mach-ixp4xx/avila-setup.c index 90e42e9982c..6beec150c06 100644 --- a/arch/arm/mach-ixp4xx/avila-setup.c +++ b/arch/arm/mach-ixp4xx/avila-setup.c @@ -167,7 +167,7 @@ MACHINE_START(AVILA, "Gateworks Avila Network Platform")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= avila_init,  #if defined(CONFIG_PCI) @@ -187,7 +187,7 @@ MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= avila_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index 8c0c0e2d072..f6ac695ceb6 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c @@ -307,10 +307,6 @@ void __init ixp4xx_timer_init(void)  	ixp4xx_clockevent_init();  } -struct sys_timer ixp4xx_timer = { -	.init		= ixp4xx_timer_init, -}; -  static struct pxa2xx_udc_mach_info ixp4xx_udc_info;  void __init ixp4xx_set_udc_info(struct pxa2xx_udc_mach_info *info) diff --git a/arch/arm/mach-ixp4xx/coyote-setup.c b/arch/arm/mach-ixp4xx/coyote-setup.c index 1b83110028d..820cae8608f 100644 --- a/arch/arm/mach-ixp4xx/coyote-setup.c +++ b/arch/arm/mach-ixp4xx/coyote-setup.c @@ -112,7 +112,7 @@ MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= coyote_init,  #if defined(CONFIG_PCI) @@ -132,7 +132,7 @@ MACHINE_START(IXDPG425, "Intel IXDPG425")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= coyote_init,  	.restart	= ixp4xx_restart, diff --git a/arch/arm/mach-ixp4xx/dsmg600-setup.c b/arch/arm/mach-ixp4xx/dsmg600-setup.c index 97a0af8f195..5d413f8c570 100644 --- a/arch/arm/mach-ixp4xx/dsmg600-setup.c +++ b/arch/arm/mach-ixp4xx/dsmg600-setup.c @@ -226,10 +226,6 @@ static void __init dsmg600_timer_init(void)      ixp4xx_timer_init();  } -static struct sys_timer dsmg600_timer = { -    .init   = dsmg600_timer_init, -}; -  static void __init dsmg600_init(void)  {  	ixp4xx_sys_init(); @@ -282,7 +278,7 @@ MACHINE_START(DSMG600, "D-Link DSM-G600 RevA")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer          = &dsmg600_timer, +	.init_time	= dsmg600_timer_init,  	.init_machine	= dsmg600_init,  #if defined(CONFIG_PCI)  	.dma_zone_size	= SZ_64M, diff --git a/arch/arm/mach-ixp4xx/fsg-setup.c b/arch/arm/mach-ixp4xx/fsg-setup.c index 9175a25a751..429966b756e 100644 --- a/arch/arm/mach-ixp4xx/fsg-setup.c +++ b/arch/arm/mach-ixp4xx/fsg-setup.c @@ -272,7 +272,7 @@ MACHINE_START(FSG, "Freecom FSG-3")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= fsg_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/gateway7001-setup.c b/arch/arm/mach-ixp4xx/gateway7001-setup.c index 033c7175895..3d24b3fcee8 100644 --- a/arch/arm/mach-ixp4xx/gateway7001-setup.c +++ b/arch/arm/mach-ixp4xx/gateway7001-setup.c @@ -99,7 +99,7 @@ MACHINE_START(GATEWAY7001, "Gateway 7001 AP")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= gateway7001_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c index 53b8348dfcc..e54ff491c10 100644 --- a/arch/arm/mach-ixp4xx/goramo_mlr.c +++ b/arch/arm/mach-ixp4xx/goramo_mlr.c @@ -498,7 +498,7 @@ MACHINE_START(GORAMO_MLR, "MultiLink")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= gmlr_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c index 18ebc6be796..16a12994fb5 100644 --- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c +++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c @@ -167,7 +167,7 @@ MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= gtwx5715_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/include/mach/platform.h b/arch/arm/mach-ixp4xx/include/mach/platform.h index 5bce94aacca..db5afb69c12 100644 --- a/arch/arm/mach-ixp4xx/include/mach/platform.h +++ b/arch/arm/mach-ixp4xx/include/mach/platform.h @@ -89,8 +89,6 @@ struct ixp4xx_pata_data {  	void __iomem	*cs1;  }; -struct sys_timer; -  #define IXP4XX_ETH_NPEA		0x00  #define IXP4XX_ETH_NPEB		0x10  #define IXP4XX_ETH_NPEC		0x20 @@ -125,7 +123,6 @@ extern void ixp4xx_init_early(void);  extern void ixp4xx_init_irq(void);  extern void ixp4xx_sys_init(void);  extern void ixp4xx_timer_init(void); -extern struct sys_timer ixp4xx_timer;  extern void ixp4xx_restart(char, const char *);  extern void ixp4xx_pci_preinit(void);  struct pci_sys_data; diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c index 108a9d3f382..22d688b7d51 100644 --- a/arch/arm/mach-ixp4xx/ixdp425-setup.c +++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c @@ -252,7 +252,7 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= ixdp425_init,  #if defined(CONFIG_PCI) @@ -268,7 +268,7 @@ MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= ixdp425_init,  #if defined(CONFIG_PCI) @@ -283,7 +283,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= ixdp425_init,  #if defined(CONFIG_PCI) @@ -298,7 +298,7 @@ MACHINE_START(KIXRP435, "Intel KIXRP435 Reference Platform")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= ixdp425_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c index 33cb0955b6b..ed667ce9f57 100644 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c @@ -317,7 +317,7 @@ MACHINE_START(NAS100D, "Iomega NAS 100d")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer          = &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.init_machine	= nas100d_init,  #if defined(CONFIG_PCI)  	.dma_zone_size	= SZ_64M, diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index e2903faaebb..7e55236c26e 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c @@ -232,10 +232,6 @@ static void __init nslu2_timer_init(void)      ixp4xx_timer_init();  } -static struct sys_timer nslu2_timer = { -    .init   = nslu2_timer_init, -}; -  static void __init nslu2_init(void)  {  	uint8_t __iomem *f; @@ -303,7 +299,7 @@ MACHINE_START(NSLU2, "Linksys NSLU2")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer          = &nslu2_timer, +	.init_time	= nslu2_timer_init,  	.init_machine	= nslu2_init,  #if defined(CONFIG_PCI)  	.dma_zone_size	= SZ_64M, diff --git a/arch/arm/mach-ixp4xx/omixp-setup.c b/arch/arm/mach-ixp4xx/omixp-setup.c index 158ddb79821..46a89f5e826 100644 --- a/arch/arm/mach-ixp4xx/omixp-setup.c +++ b/arch/arm/mach-ixp4xx/omixp-setup.c @@ -245,7 +245,7 @@ MACHINE_START(DEVIXP, "Omicron DEVIXP")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer          = &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.init_machine	= omixp_init,  	.restart	= ixp4xx_restart,  MACHINE_END @@ -257,7 +257,7 @@ MACHINE_START(MICCPT, "Omicron MICCPT")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer          = &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.init_machine	= omixp_init,  #if defined(CONFIG_PCI)  	.dma_zone_size	= SZ_64M, @@ -272,7 +272,7 @@ MACHINE_START(MIC256, "Omicron MIC256")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer          = &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.init_machine	= omixp_init,  	.restart	= ixp4xx_restart,  MACHINE_END diff --git a/arch/arm/mach-ixp4xx/vulcan-setup.c b/arch/arm/mach-ixp4xx/vulcan-setup.c index 2798f435aaf..d42730a1d4a 100644 --- a/arch/arm/mach-ixp4xx/vulcan-setup.c +++ b/arch/arm/mach-ixp4xx/vulcan-setup.c @@ -239,7 +239,7 @@ MACHINE_START(ARCOM_VULCAN, "Arcom/Eurotech Vulcan")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= vulcan_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-ixp4xx/wg302v2-setup.c b/arch/arm/mach-ixp4xx/wg302v2-setup.c index a785175b115..8f9ea2f3a9a 100644 --- a/arch/arm/mach-ixp4xx/wg302v2-setup.c +++ b/arch/arm/mach-ixp4xx/wg302v2-setup.c @@ -100,7 +100,7 @@ MACHINE_START(WG302V2, "Netgear WG302 v2 / WAG302 v2")  	.map_io		= ixp4xx_map_io,  	.init_early	= ixp4xx_init_early,  	.init_irq	= ixp4xx_init_irq, -	.timer		= &ixp4xx_timer, +	.init_time	= ixp4xx_timer_init,  	.atag_offset	= 0x100,  	.init_machine	= wg302v2_init,  #if defined(CONFIG_PCI) diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c index de4fd2bb1e2..d4af5c191c2 100644 --- a/arch/arm/mach-kirkwood/board-dt.c +++ b/arch/arm/mach-kirkwood/board-dt.c @@ -183,7 +183,7 @@ DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= orion_dt_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.init_machine	= kirkwood_dt_init,  	.restart	= kirkwood_restart,  	.dt_compat	= kirkwood_dt_board_compat, diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index bac21a554c9..b5ad4dff6b1 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c @@ -530,7 +530,7 @@ static int __init kirkwood_find_tclk(void)  	return 166666667;  } -static void __init kirkwood_timer_init(void) +void __init kirkwood_timer_init(void)  {  	kirkwood_tclk = kirkwood_find_tclk(); @@ -538,10 +538,6 @@ static void __init kirkwood_timer_init(void)  			IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);  } -struct sys_timer kirkwood_timer = { -	.init = kirkwood_timer_init, -}; -  /*****************************************************************************   * Audio   ****************************************************************************/ diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h index 5ffa57f08c8..283ab611e8d 100644 --- a/arch/arm/mach-kirkwood/common.h +++ b/arch/arm/mach-kirkwood/common.h @@ -156,7 +156,7 @@ void kirkwood_xor1_init(void);  void kirkwood_crypto_init(void);  extern int kirkwood_tclk; -extern struct sys_timer kirkwood_timer; +extern void kirkwood_timer_init(void);  #define ARRAY_AND_SIZE(x)	(x), ARRAY_SIZE(x) diff --git a/arch/arm/mach-kirkwood/d2net_v2-setup.c b/arch/arm/mach-kirkwood/d2net_v2-setup.c index 2c1a453df20..453418063c1 100644 --- a/arch/arm/mach-kirkwood/d2net_v2-setup.c +++ b/arch/arm/mach-kirkwood/d2net_v2-setup.c @@ -226,6 +226,6 @@ MACHINE_START(D2NET_V2, "LaCie d2 Network v2")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c index c49b177c152..5a369fe7475 100644 --- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c +++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c @@ -103,6 +103,6 @@ MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c index 791a98fafa2..77f98f2b041 100644 --- a/arch/arm/mach-kirkwood/dockstar-setup.c +++ b/arch/arm/mach-kirkwood/dockstar-setup.c @@ -107,6 +107,6 @@ MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/guruplug-setup.c b/arch/arm/mach-kirkwood/guruplug-setup.c index 7cb55f98224..1c6e736cbbf 100644 --- a/arch/arm/mach-kirkwood/guruplug-setup.c +++ b/arch/arm/mach-kirkwood/guruplug-setup.c @@ -126,6 +126,6 @@ MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c index 6d8364a9781..ba384b992be 100644 --- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c +++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c @@ -167,6 +167,6 @@ MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/netspace_v2-setup.c b/arch/arm/mach-kirkwood/netspace_v2-setup.c index 728e86d33f0..3b706611da8 100644 --- a/arch/arm/mach-kirkwood/netspace_v2-setup.c +++ b/arch/arm/mach-kirkwood/netspace_v2-setup.c @@ -263,7 +263,7 @@ MACHINE_START(NETSPACE_V2, "LaCie Network Space v2")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif @@ -275,7 +275,7 @@ MACHINE_START(INETSPACE_V2, "LaCie Internet Space v2")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif @@ -287,7 +287,7 @@ MACHINE_START(NETSPACE_MAX_V2, "LaCie Network Space Max v2")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-kirkwood/netxbig_v2-setup.c b/arch/arm/mach-kirkwood/netxbig_v2-setup.c index a3b091470b8..913d032cdb1 100644 --- a/arch/arm/mach-kirkwood/netxbig_v2-setup.c +++ b/arch/arm/mach-kirkwood/netxbig_v2-setup.c @@ -404,7 +404,7 @@ MACHINE_START(NET2BIG_V2, "LaCie 2Big Network v2")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif @@ -416,7 +416,7 @@ MACHINE_START(NET5BIG_V2, "LaCie 5Big Network v2")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c index 7e81e9b586b..8ddd69fdc93 100644 --- a/arch/arm/mach-kirkwood/openrd-setup.c +++ b/arch/arm/mach-kirkwood/openrd-setup.c @@ -221,7 +221,7 @@ MACHINE_START(OPENRD_BASE, "Marvell OpenRD Base Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif @@ -234,7 +234,7 @@ MACHINE_START(OPENRD_CLIENT, "Marvell OpenRD Client Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif @@ -247,7 +247,7 @@ MACHINE_START(OPENRD_ULTIMATE, "Marvell OpenRD Ultimate Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c index 19072c84008..e4fd3129d36 100644 --- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c @@ -84,6 +84,6 @@ MACHINE_START(RD88F6192_NAS, "Marvell RD-88F6192-NAS Development Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c index 9717101a743..c7d93b48926 100644 --- a/arch/arm/mach-kirkwood/rd88f6281-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c @@ -120,6 +120,6 @@ MACHINE_START(RD88F6281, "Marvell RD-88F6281 Reference Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c index 8a175948b28..55b68fa39f4 100644 --- a/arch/arm/mach-kirkwood/sheevaplug-setup.c +++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c @@ -143,7 +143,7 @@ MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif @@ -155,7 +155,7 @@ MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-kirkwood/t5325-setup.c b/arch/arm/mach-kirkwood/t5325-setup.c index f2daf711e72..8736f8c9751 100644 --- a/arch/arm/mach-kirkwood/t5325-setup.c +++ b/arch/arm/mach-kirkwood/t5325-setup.c @@ -211,6 +211,6 @@ MACHINE_START(T5325, "HP t5325 Thin Client")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/ts219-setup.c b/arch/arm/mach-kirkwood/ts219-setup.c index 73e2b6ca956..283abff9022 100644 --- a/arch/arm/mach-kirkwood/ts219-setup.c +++ b/arch/arm/mach-kirkwood/ts219-setup.c @@ -137,6 +137,6 @@ MACHINE_START(TS219, "QNAP TS-119/TS-219")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-kirkwood/ts41x-setup.c b/arch/arm/mach-kirkwood/ts41x-setup.c index e4c61279ea8..81d585806b2 100644 --- a/arch/arm/mach-kirkwood/ts41x-setup.c +++ b/arch/arm/mach-kirkwood/ts41x-setup.c @@ -181,6 +181,6 @@ MACHINE_START(TS41X, "QNAP TS-41x")  	.map_io		= kirkwood_map_io,  	.init_early	= kirkwood_init_early,  	.init_irq	= kirkwood_init_irq, -	.timer		= &kirkwood_timer, +	.init_time	= kirkwood_timer_init,  	.restart	= kirkwood_restart,  MACHINE_END diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c index b0c306ccbc6..456d6386edf 100644 --- a/arch/arm/mach-ks8695/board-acs5k.c +++ b/arch/arm/mach-ks8695/board-acs5k.c @@ -227,6 +227,6 @@ MACHINE_START(ACS5K, "Brivo Systems LLC ACS-5000 Master board")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= acs5k_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart	= ks8695_restart,  MACHINE_END diff --git a/arch/arm/mach-ks8695/board-dsm320.c b/arch/arm/mach-ks8695/board-dsm320.c index e0d36cef2c5..d37c218c358 100644 --- a/arch/arm/mach-ks8695/board-dsm320.c +++ b/arch/arm/mach-ks8695/board-dsm320.c @@ -125,6 +125,6 @@ MACHINE_START(DSM320, "D-Link DSM-320 Wireless Media Player")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= dsm320_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart	= ks8695_restart,  MACHINE_END diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c index a8270725b76..3acbdfd3139 100644 --- a/arch/arm/mach-ks8695/board-micrel.c +++ b/arch/arm/mach-ks8695/board-micrel.c @@ -57,6 +57,6 @@ MACHINE_START(KS8695, "KS8695 Centaur Development Board")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= micrel_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart	= ks8695_restart,  MACHINE_END diff --git a/arch/arm/mach-ks8695/board-og.c b/arch/arm/mach-ks8695/board-og.c index 1623ba461e4..002bc619bb6 100644 --- a/arch/arm/mach-ks8695/board-og.c +++ b/arch/arm/mach-ks8695/board-og.c @@ -145,7 +145,7 @@ MACHINE_START(CM4002, "OpenGear/CM4002")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= og_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart        = ks8695_restart,  MACHINE_END  #endif @@ -157,7 +157,7 @@ MACHINE_START(CM4008, "OpenGear/CM4008")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= og_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart        = ks8695_restart,  MACHINE_END  #endif @@ -169,7 +169,7 @@ MACHINE_START(CM41XX, "OpenGear/CM41xx")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= og_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart        = ks8695_restart,  MACHINE_END  #endif @@ -181,7 +181,7 @@ MACHINE_START(IM4004, "OpenGear/IM4004")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= og_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart        = ks8695_restart,  MACHINE_END  #endif @@ -193,7 +193,7 @@ MACHINE_START(IM42XX, "OpenGear/IM42xx")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= og_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart        = ks8695_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-ks8695/board-sg.c b/arch/arm/mach-ks8695/board-sg.c index f35b98b5bf3..fdf2352d2cf 100644 --- a/arch/arm/mach-ks8695/board-sg.c +++ b/arch/arm/mach-ks8695/board-sg.c @@ -91,7 +91,7 @@ MACHINE_START(LITE300, "SecureComputing/SG300")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= sg_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart	= ks8695_restart,  MACHINE_END  #endif @@ -103,7 +103,7 @@ MACHINE_START(SG310, "McAfee/SG310")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= sg_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart	= ks8695_restart,  MACHINE_END  #endif @@ -115,7 +115,7 @@ MACHINE_START(SE4200, "SecureComputing/SE4200")  	.map_io		= ks8695_map_io,  	.init_irq	= ks8695_init_irq,  	.init_machine	= sg_init, -	.timer		= &ks8695_timer, +	.init_time	= ks8695_timer_init,  	.restart	= ks8695_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-ks8695/generic.h b/arch/arm/mach-ks8695/generic.h index f8bdb11a9c3..6e97ce462d7 100644 --- a/arch/arm/mach-ks8695/generic.h +++ b/arch/arm/mach-ks8695/generic.h @@ -13,4 +13,4 @@  extern __init void ks8695_map_io(void);  extern __init void ks8695_init_irq(void);  extern void ks8695_restart(char, const char *); -extern struct sys_timer ks8695_timer; +extern void ks8695_timer_init(void); diff --git a/arch/arm/mach-ks8695/time.c b/arch/arm/mach-ks8695/time.c index 46c84bc7792..c272a3863d5 100644 --- a/arch/arm/mach-ks8695/time.c +++ b/arch/arm/mach-ks8695/time.c @@ -146,7 +146,7 @@ static void ks8695_timer_setup(void)  					0xFFFFFFFFU);  } -static void __init ks8695_timer_init (void) +void __init ks8695_timer_init(void)  {  	ks8695_timer_setup(); @@ -154,10 +154,6 @@ static void __init ks8695_timer_init (void)  	setup_irq(KS8695_IRQ_TIMER1, &ks8695_timer_irq);  } -struct sys_timer ks8695_timer = { -	.init		= ks8695_timer_init, -}; -  void ks8695_restart(char mode, const char *cmd)  {  	unsigned int reg; diff --git a/arch/arm/mach-lpc32xx/common.h b/arch/arm/mach-lpc32xx/common.h index afeac3b1fae..e0b26062a27 100644 --- a/arch/arm/mach-lpc32xx/common.h +++ b/arch/arm/mach-lpc32xx/common.h @@ -25,7 +25,7 @@  /*   * Other arch specific structures and functions   */ -extern struct sys_timer lpc32xx_timer; +extern void lpc32xx_timer_init(void);  extern void __init lpc32xx_init_irq(void);  extern void __init lpc32xx_map_io(void);  extern void __init lpc32xx_serial_init(void); diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c index e8ff4c3f056..c1cd5a943ab 100644 --- a/arch/arm/mach-lpc32xx/phy3250.c +++ b/arch/arm/mach-lpc32xx/phy3250.c @@ -263,7 +263,7 @@ DT_MACHINE_START(LPC32XX_DT, "LPC32XX SoC (Flattened Device Tree)")  	.atag_offset	= 0x100,  	.map_io		= lpc32xx_map_io,  	.init_irq	= lpc32xx_init_irq, -	.timer		= &lpc32xx_timer, +	.init_time	= lpc32xx_timer_init,  	.init_machine	= lpc3250_machine_init,  	.dt_compat	= lpc32xx_dt_compat,  	.restart	= lpc23xx_restart, diff --git a/arch/arm/mach-lpc32xx/timer.c b/arch/arm/mach-lpc32xx/timer.c index c40667c3316..88bd4ce3b94 100644 --- a/arch/arm/mach-lpc32xx/timer.c +++ b/arch/arm/mach-lpc32xx/timer.c @@ -100,7 +100,7 @@ static struct irqaction lpc32xx_timer_irq = {   * clocks need to be enabled here manually and then tagged as used in   * the clock driver initialization   */ -static void __init lpc32xx_timer_init(void) +void __init lpc32xx_timer_init(void)  {  	u32 clkrate, pllreg; @@ -161,8 +161,3 @@ static void __init lpc32xx_timer_init(void)  	clocksource_mmio_init(LPC32XX_TIMER_TC(LPC32XX_TIMER1_BASE),  		"lpc32xx_clksrc", clkrate, 300, 32, clocksource_mmio_readl_up);  } - -struct sys_timer lpc32xx_timer = { -	.init		= &lpc32xx_timer_init, -}; - diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index e5dba9c5dc5..9f64d5632e0 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c @@ -262,7 +262,7 @@ MACHINE_START(ASPENITE, "PXA168-based Aspenite Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= MMP_NR_IRQS,  	.init_irq       = pxa168_init_irq, -	.timer          = &pxa168_timer, +	.init_time	= pxa168_timer_init,  	.init_machine   = common_init,  	.restart	= pxa168_restart,  MACHINE_END @@ -271,7 +271,7 @@ MACHINE_START(ZYLONITE2, "PXA168-based Zylonite2 Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= MMP_NR_IRQS,  	.init_irq       = pxa168_init_irq, -	.timer          = &pxa168_timer, +	.init_time	= pxa168_timer_init,  	.init_machine   = common_init,  	.restart	= pxa168_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/avengers_lite.c b/arch/arm/mach-mmp/avengers_lite.c index 603542ae6fb..1f94957b56a 100644 --- a/arch/arm/mach-mmp/avengers_lite.c +++ b/arch/arm/mach-mmp/avengers_lite.c @@ -45,7 +45,7 @@ MACHINE_START(AVENGERS_LITE, "PXA168 Avengers lite Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= MMP_NR_IRQS,  	.init_irq       = pxa168_init_irq, -	.timer          = &pxa168_timer, +	.init_time	= pxa168_timer_init,  	.init_machine   = avengers_lite_init,  	.restart	= pxa168_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/brownstone.c b/arch/arm/mach-mmp/brownstone.c index 5cb769cd26d..2358011c7d8 100644 --- a/arch/arm/mach-mmp/brownstone.c +++ b/arch/arm/mach-mmp/brownstone.c @@ -218,7 +218,7 @@ MACHINE_START(BROWNSTONE, "Brownstone Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= BROWNSTONE_NR_IRQS,  	.init_irq	= mmp2_init_irq, -	.timer		= &mmp2_timer, +	.init_time	= mmp2_timer_init,  	.init_machine	= brownstone_init,  	.restart	= mmp_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/common.h b/arch/arm/mach-mmp/common.h index bd453274fca..0bdc50b134c 100644 --- a/arch/arm/mach-mmp/common.h +++ b/arch/arm/mach-mmp/common.h @@ -1,7 +1,5 @@  #define ARRAY_AND_SIZE(x)	(x), ARRAY_SIZE(x) -struct sys_timer; -  extern void timer_init(int irq);  extern void __init icu_init_irq(void); diff --git a/arch/arm/mach-mmp/flint.c b/arch/arm/mach-mmp/flint.c index 8059cc0905c..754c352dd02 100644 --- a/arch/arm/mach-mmp/flint.c +++ b/arch/arm/mach-mmp/flint.c @@ -121,7 +121,7 @@ MACHINE_START(FLINT, "Flint Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= FLINT_NR_IRQS,  	.init_irq       = mmp2_init_irq, -	.timer          = &mmp2_timer, +	.init_time	= mmp2_timer_init,  	.init_machine   = flint_init,  	.restart	= mmp_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c index 5c3d61ee729..d1e2d595e79 100644 --- a/arch/arm/mach-mmp/gplugd.c +++ b/arch/arm/mach-mmp/gplugd.c @@ -194,7 +194,7 @@ MACHINE_START(GPLUGD, "PXA168-based GuruPlug Display (gplugD) Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= MMP_NR_IRQS,  	.init_irq       = pxa168_init_irq, -	.timer          = &pxa168_timer, +	.init_time	= pxa168_timer_init,  	.init_machine   = gplugd_init,  	.restart	= pxa168_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/include/mach/mmp2.h b/arch/arm/mach-mmp/include/mach/mmp2.h index c4ca4d17194..0764f4ecec8 100644 --- a/arch/arm/mach-mmp/include/mach/mmp2.h +++ b/arch/arm/mach-mmp/include/mach/mmp2.h @@ -3,9 +3,7 @@  #include <linux/platform_data/pxa_sdhci.h> -struct sys_timer; - -extern struct sys_timer mmp2_timer; +extern void mmp2_timer_init(void);  extern void __init mmp2_init_icu(void);  extern void __init mmp2_init_irq(void);  extern void mmp2_clear_pmic_int(void); diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h index 37632d964d5..7ed1df21ea1 100644 --- a/arch/arm/mach-mmp/include/mach/pxa168.h +++ b/arch/arm/mach-mmp/include/mach/pxa168.h @@ -1,9 +1,7 @@  #ifndef __ASM_MACH_PXA168_H  #define __ASM_MACH_PXA168_H -struct sys_timer; - -extern struct sys_timer pxa168_timer; +extern void pxa168_timer_init(void);  extern void __init pxa168_init_irq(void);  extern void pxa168_restart(char, const char *);  extern void pxa168_clear_keypad_wakeup(void); diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h b/arch/arm/mach-mmp/include/mach/pxa910.h index 3b58a3b2d7d..eff31ab6dc3 100644 --- a/arch/arm/mach-mmp/include/mach/pxa910.h +++ b/arch/arm/mach-mmp/include/mach/pxa910.h @@ -1,9 +1,7 @@  #ifndef __ASM_MACH_PXA910_H  #define __ASM_MACH_PXA910_H -struct sys_timer; - -extern struct sys_timer pxa910_timer; +extern void pxa910_timer_init(void);  extern void __init pxa910_init_irq(void);  #include <linux/i2c.h> diff --git a/arch/arm/mach-mmp/jasper.c b/arch/arm/mach-mmp/jasper.c index ff73249884d..66634fd0ecb 100644 --- a/arch/arm/mach-mmp/jasper.c +++ b/arch/arm/mach-mmp/jasper.c @@ -174,7 +174,7 @@ MACHINE_START(MARVELL_JASPER, "Jasper Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= JASPER_NR_IRQS,  	.init_irq       = mmp2_init_irq, -	.timer          = &mmp2_timer, +	.init_time	= mmp2_timer_init,  	.init_machine   = jasper_init,  	.restart	= mmp_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/mmp-dt.c b/arch/arm/mach-mmp/mmp-dt.c index 033cc31b3c7..d063efa0a4f 100644 --- a/arch/arm/mach-mmp/mmp-dt.c +++ b/arch/arm/mach-mmp/mmp-dt.c @@ -22,10 +22,6 @@  extern void __init mmp_dt_irq_init(void);  extern void __init mmp_dt_init_timer(void); -static struct sys_timer mmp_dt_timer = { -	.init	= mmp_dt_init_timer, -}; -  static const struct of_dev_auxdata pxa168_auxdata_lookup[] __initconst = {  	OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4017000, "pxa2xx-uart.0", NULL),  	OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4018000, "pxa2xx-uart.1", NULL), @@ -69,7 +65,7 @@ static const char *mmp_dt_board_compat[] __initdata = {  DT_MACHINE_START(PXA168_DT, "Marvell PXA168 (Device Tree Support)")  	.map_io		= mmp_map_io,  	.init_irq	= mmp_dt_irq_init, -	.timer		= &mmp_dt_timer, +	.init_time	= mmp_dt_init_timer,  	.init_machine	= pxa168_dt_init,  	.dt_compat	= mmp_dt_board_compat,  MACHINE_END @@ -77,7 +73,7 @@ MACHINE_END  DT_MACHINE_START(PXA910_DT, "Marvell PXA910 (Device Tree Support)")  	.map_io		= mmp_map_io,  	.init_irq	= mmp_dt_irq_init, -	.timer		= &mmp_dt_timer, +	.init_time	= mmp_dt_init_timer,  	.init_machine	= pxa910_dt_init,  	.dt_compat	= mmp_dt_board_compat,  MACHINE_END diff --git a/arch/arm/mach-mmp/mmp2-dt.c b/arch/arm/mach-mmp/mmp2-dt.c index 535a5ed5977..fad431aa6e0 100644 --- a/arch/arm/mach-mmp/mmp2-dt.c +++ b/arch/arm/mach-mmp/mmp2-dt.c @@ -24,10 +24,6 @@  extern void __init mmp_dt_irq_init(void);  extern void __init mmp_dt_init_timer(void); -static struct sys_timer mmp_dt_timer = { -	.init	= mmp_dt_init_timer, -}; -  static const struct of_dev_auxdata mmp2_auxdata_lookup[] __initconst = {  	OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4030000, "pxa2xx-uart.0", NULL),  	OF_DEV_AUXDATA("mrvl,mmp-uart", 0xd4017000, "pxa2xx-uart.1", NULL), @@ -54,7 +50,7 @@ static const char *mmp2_dt_board_compat[] __initdata = {  DT_MACHINE_START(MMP2_DT, "Marvell MMP2 (Device Tree Support)")  	.map_io		= mmp_map_io,  	.init_irq	= mmp_dt_irq_init, -	.timer		= &mmp_dt_timer, +	.init_time	= mmp_dt_init_timer,  	.init_machine	= mmp2_dt_init,  	.dt_compat	= mmp2_dt_board_compat,  MACHINE_END diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c index 3a3768c7a19..d94d114eef7 100644 --- a/arch/arm/mach-mmp/mmp2.c +++ b/arch/arm/mach-mmp/mmp2.c @@ -114,7 +114,7 @@ postcore_initcall(mmp2_init);  #define APBC_TIMERS	APBC_REG(0x024) -static void __init mmp2_timer_init(void) +void __init mmp2_timer_init(void)  {  	unsigned long clk_rst; @@ -130,10 +130,6 @@ static void __init mmp2_timer_init(void)  	timer_init(IRQ_MMP2_TIMER1);  } -struct sys_timer mmp2_timer = { -	.init	= mmp2_timer_init, -}; -  /* on-chip devices */  MMP2_DEVICE(uart1, "pxa2xx-uart", 0, UART1, 0xd4030000, 0x30, 4, 5);  MMP2_DEVICE(uart2, "pxa2xx-uart", 1, UART2, 0xd4017000, 0x30, 20, 21); diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index b7f074f1549..9bc7b86a86a 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c @@ -67,7 +67,7 @@ postcore_initcall(pxa168_init);  #define TIMER_CLK_RST	(APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3))  #define APBC_TIMERS	APBC_REG(0x34) -static void __init pxa168_timer_init(void) +void __init pxa168_timer_init(void)  {  	/* this is early, we have to initialize the CCU registers by  	 * ourselves instead of using clk_* API. Clock rate is defined @@ -81,10 +81,6 @@ static void __init pxa168_timer_init(void)  	timer_init(IRQ_PXA168_TIMER1);  } -struct sys_timer pxa168_timer = { -	.init	= pxa168_timer_init, -}; -  void pxa168_clear_keypad_wakeup(void)  {  	uint32_t val; diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c index 8b1e16fbb7a..c6a89f1eca4 100644 --- a/arch/arm/mach-mmp/pxa910.c +++ b/arch/arm/mach-mmp/pxa910.c @@ -101,7 +101,7 @@ postcore_initcall(pxa910_init);  #define TIMER_CLK_RST	(APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(3))  #define APBC_TIMERS	APBC_REG(0x34) -static void __init pxa910_timer_init(void) +void __init pxa910_timer_init(void)  {  	/* reset and configure */  	__raw_writel(APBC_APBCLK | APBC_RST, APBC_TIMERS); @@ -110,10 +110,6 @@ static void __init pxa910_timer_init(void)  	timer_init(IRQ_PXA910_AP1_TIMER1);  } -struct sys_timer pxa910_timer = { -	.init	= pxa910_timer_init, -}; -  /* on-chip devices */  /* NOTE: there are totally 3 UARTs on PXA910: diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c index b28f9084dff..4c127d23955 100644 --- a/arch/arm/mach-mmp/tavorevb.c +++ b/arch/arm/mach-mmp/tavorevb.c @@ -103,7 +103,7 @@ MACHINE_START(TAVOREVB, "PXA910 Evaluation Board (aka TavorEVB)")  	.map_io		= mmp_map_io,  	.nr_irqs	= MMP_NR_IRQS,  	.init_irq       = pxa910_init_irq, -	.timer          = &pxa910_timer, +	.init_time	= pxa910_timer_init,  	.init_machine   = tavorevb_init,  	.restart	= mmp_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/teton_bga.c b/arch/arm/mach-mmp/teton_bga.c index dd30ea74785..8609967975e 100644 --- a/arch/arm/mach-mmp/teton_bga.c +++ b/arch/arm/mach-mmp/teton_bga.c @@ -86,7 +86,7 @@ MACHINE_START(TETON_BGA, "PXA168-based Teton BGA Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= MMP_NR_IRQS,  	.init_irq       = pxa168_init_irq, -	.timer          = &pxa168_timer, +	.init_time	= pxa168_timer_init,  	.init_machine   = teton_bga_init,  	.restart	= pxa168_restart,  MACHINE_END diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index ce55fd8821c..6e474900b13 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c @@ -218,7 +218,7 @@ MACHINE_START(TTC_DKB, "PXA910-based TTC_DKB Development Platform")  	.map_io		= mmp_map_io,  	.nr_irqs	= TTCDKB_NR_IRQS,  	.init_irq       = pxa910_init_irq, -	.timer          = &pxa910_timer, +	.init_time	= pxa910_timer_init,  	.init_machine   = ttc_dkb_init,  	.restart	= mmp_restart,  MACHINE_END diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c index b5b4de2cdf9..27c41eabfd1 100644 --- a/arch/arm/mach-msm/board-dt-8660.c +++ b/arch/arm/mach-msm/board-dt-8660.c @@ -59,6 +59,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")  	.handle_irq = gic_handle_irq,  	.init_machine = msm8x60_dt_init,  	.init_late = msm8x60_init_late, -	.timer = &msm_dt_timer, +	.init_time	= msm_dt_timer_init,  	.dt_compat = msm8x60_fluid_match,  MACHINE_END diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c index 4490edb71c1..3226d527696 100644 --- a/arch/arm/mach-msm/board-dt-8960.c +++ b/arch/arm/mach-msm/board-dt-8960.c @@ -43,7 +43,7 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")  	.smp = smp_ops(msm_smp_ops),  	.map_io = msm_map_msm8960_io,  	.init_irq = msm_dt_init_irq, -	.timer = &msm_dt_timer, +	.init_time	= msm_dt_timer_init,  	.init_machine = msm_dt_init,  	.dt_compat = msm8960_dt_match,  	.handle_irq = gic_handle_irq, diff --git a/arch/arm/mach-msm/board-halibut.c b/arch/arm/mach-msm/board-halibut.c index 6ce542e2e21..84d720af34a 100644 --- a/arch/arm/mach-msm/board-halibut.c +++ b/arch/arm/mach-msm/board-halibut.c @@ -106,5 +106,5 @@ MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")  	.init_irq	= halibut_init_irq,  	.init_machine	= halibut_init,  	.init_late	= halibut_init_late, -	.timer		= &msm7x01_timer, +	.init_time	= msm7x01_timer_init,  MACHINE_END diff --git a/arch/arm/mach-msm/board-mahimahi.c b/arch/arm/mach-msm/board-mahimahi.c index df00bc03ce7..30c3496db59 100644 --- a/arch/arm/mach-msm/board-mahimahi.c +++ b/arch/arm/mach-msm/board-mahimahi.c @@ -75,7 +75,7 @@ static void __init mahimahi_init_late(void)  	smd_debugfs_init();  } -extern struct sys_timer msm_timer; +void msm_timer_init(void);  MACHINE_START(MAHIMAHI, "mahimahi")  	.atag_offset	= 0x100, @@ -84,5 +84,5 @@ MACHINE_START(MAHIMAHI, "mahimahi")  	.init_irq	= msm_init_irq,  	.init_machine	= mahimahi_init,  	.init_late	= mahimahi_init_late, -	.timer		= &msm_timer, +	.init_time	= msm_timer_init,  MACHINE_END diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c index effa6f4336c..7bc3f82e3ec 100644 --- a/arch/arm/mach-msm/board-msm7x30.c +++ b/arch/arm/mach-msm/board-msm7x30.c @@ -131,7 +131,7 @@ MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")  	.init_irq = msm7x30_init_irq,  	.init_machine = msm7x30_init,  	.init_late = msm7x30_init_late, -	.timer = &msm7x30_timer, +	.init_time	= msm7x30_timer_init,  MACHINE_END  MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA") @@ -142,7 +142,7 @@ MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")  	.init_irq = msm7x30_init_irq,  	.init_machine = msm7x30_init,  	.init_late = msm7x30_init_late, -	.timer = &msm7x30_timer, +	.init_time	= msm7x30_timer_init,  MACHINE_END  MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID") @@ -153,5 +153,5 @@ MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")  	.init_irq = msm7x30_init_irq,  	.init_machine = msm7x30_init,  	.init_late = msm7x30_init_late, -	.timer = &msm7x30_timer, +	.init_time	= msm7x30_timer_init,  MACHINE_END diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c index 2448fcf09eb..686e7949a73 100644 --- a/arch/arm/mach-msm/board-qsd8x50.c +++ b/arch/arm/mach-msm/board-qsd8x50.c @@ -200,7 +200,7 @@ MACHINE_START(QSD8X50_SURF, "QCT QSD8X50 SURF")  	.init_irq = qsd8x50_init_irq,  	.init_machine = qsd8x50_init,  	.init_late = qsd8x50_init_late, -	.timer = &qsd8x50_timer, +	.init_time	= qsd8x50_timer_init,  MACHINE_END  MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5") @@ -209,5 +209,5 @@ MACHINE_START(QSD8X50A_ST1_5, "QCT QSD8X50A ST1.5")  	.init_irq = qsd8x50_init_irq,  	.init_machine = qsd8x50_init,  	.init_late = qsd8x50_init_late, -	.timer = &qsd8x50_timer, +	.init_time	= qsd8x50_timer_init,  MACHINE_END diff --git a/arch/arm/mach-msm/board-sapphire.c b/arch/arm/mach-msm/board-sapphire.c index b7b0fc7e327..70730111b37 100644 --- a/arch/arm/mach-msm/board-sapphire.c +++ b/arch/arm/mach-msm/board-sapphire.c @@ -53,7 +53,7 @@ static struct platform_device *devices[] __initdata = {  	&msm_device_uart3,  }; -extern struct sys_timer msm_timer; +void msm_timer_init(void);  static void __init sapphire_init_irq(void)  { @@ -113,5 +113,5 @@ MACHINE_START(SAPPHIRE, "sapphire")  	.init_irq       = sapphire_init_irq,  	.init_machine   = sapphire_init,  	.init_late      = sapphire_init_late, -	.timer          = &msm_timer, +	.init_time	= msm_timer_init,  MACHINE_END diff --git a/arch/arm/mach-msm/board-trout.c b/arch/arm/mach-msm/board-trout.c index 4ba0800e243..919bfa32871 100644 --- a/arch/arm/mach-msm/board-trout.c +++ b/arch/arm/mach-msm/board-trout.c @@ -110,5 +110,5 @@ MACHINE_START(TROUT, "HTC Dream")  	.init_irq	= trout_init_irq,  	.init_machine	= trout_init,  	.init_late	= trout_init_late, -	.timer		= &msm7x01_timer, +	.init_time	= msm7x01_timer_init,  MACHINE_END diff --git a/arch/arm/mach-msm/common.h b/arch/arm/mach-msm/common.h index 633a7159d5f..ce8215a269e 100644 --- a/arch/arm/mach-msm/common.h +++ b/arch/arm/mach-msm/common.h @@ -12,10 +12,10 @@  #ifndef __MACH_COMMON_H  #define __MACH_COMMON_H -extern struct sys_timer msm7x01_timer; -extern struct sys_timer msm7x30_timer; -extern struct sys_timer msm_dt_timer; -extern struct sys_timer qsd8x50_timer; +extern void msm7x01_timer_init(void); +extern void msm7x30_timer_init(void); +extern void msm_dt_timer_init(void); +extern void qsd8x50_timer_init(void);  extern void msm_map_common_io(void);  extern void msm_map_msm7x30_io(void); diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c index 476549a8a70..2fb5f3eec50 100644 --- a/arch/arm/mach-msm/timer.c +++ b/arch/arm/mach-msm/timer.c @@ -229,7 +229,7 @@ static const struct of_device_id msm_gpt_match[] __initconst = {  	{ },  }; -static void __init msm_dt_timer_init(void) +void __init msm_dt_timer_init(void)  {  	struct device_node *np;  	u32 freq; @@ -296,10 +296,6 @@ static void __init msm_dt_timer_init(void)  	msm_timer_init(freq, 32, irq, !!percpu_offset);  } - -struct sys_timer msm_dt_timer = { -	.init = msm_dt_timer_init -};  #endif  static int __init msm_timer_map(phys_addr_t event, phys_addr_t source) @@ -317,7 +313,7 @@ static int __init msm_timer_map(phys_addr_t event, phys_addr_t source)  	return 0;  } -static void __init msm7x01_timer_init(void) +void __init msm7x01_timer_init(void)  {  	struct clocksource *cs = &msm_clocksource; @@ -330,28 +326,16 @@ static void __init msm7x01_timer_init(void)  			false);  } -struct sys_timer msm7x01_timer = { -	.init = msm7x01_timer_init -}; - -static void __init msm7x30_timer_init(void) +void __init msm7x30_timer_init(void)  {  	if (msm_timer_map(0xc0100004, 0xc0100024))  		return;  	msm_timer_init(24576000 / 4, 32, 1, false);  } -struct sys_timer msm7x30_timer = { -	.init = msm7x30_timer_init -}; - -static void __init qsd8x50_timer_init(void) +void __init qsd8x50_timer_init(void)  {  	if (msm_timer_map(0xAC100000, 0xAC100010))  		return;  	msm_timer_init(19200000 / 4, 32, 7, false);  } - -struct sys_timer qsd8x50_timer = { -	.init = qsd8x50_timer_init -}; diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c index ee74ec97c14..1f2ef98b37c 100644 --- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c +++ b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c @@ -150,6 +150,6 @@ MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")  	.map_io		= mv78xx0_map_io,  	.init_early	= mv78xx0_init_early,  	.init_irq	= mv78xx0_init_irq, -	.timer		= &mv78xx0_timer, +	.init_time	= mv78xx0_timer_init,  	.restart	= mv78xx0_restart,  MACHINE_END diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c index d0cb4857b4b..0efa14498eb 100644 --- a/arch/arm/mach-mv78xx0/common.c +++ b/arch/arm/mach-mv78xx0/common.c @@ -336,16 +336,12 @@ void __init mv78xx0_init_early(void)  	orion_time_set_base(TIMER_VIRT_BASE);  } -static void __init_refok mv78xx0_timer_init(void) +void __init_refok mv78xx0_timer_init(void)  {  	orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,  			IRQ_MV78XX0_TIMER_1, get_tclk());  } -struct sys_timer mv78xx0_timer = { -	.init = mv78xx0_timer_init, -}; -  /*****************************************************************************   * General diff --git a/arch/arm/mach-mv78xx0/common.h b/arch/arm/mach-mv78xx0/common.h index 507c767d49e..5e9485bad0a 100644 --- a/arch/arm/mach-mv78xx0/common.h +++ b/arch/arm/mach-mv78xx0/common.h @@ -47,7 +47,7 @@ void mv78xx0_uart3_init(void);  void mv78xx0_i2c_init(void);  void mv78xx0_restart(char, const char *); -extern struct sys_timer mv78xx0_timer; +extern void mv78xx0_timer_init(void);  #endif diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c index 4d6d48bf51e..4e0f22b30bc 100644 --- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c +++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c @@ -98,6 +98,6 @@ MACHINE_START(DB78X00_BP, "Marvell DB-78x00-BP Development Board")  	.map_io		= mv78xx0_map_io,  	.init_early	= mv78xx0_init_early,  	.init_irq	= mv78xx0_init_irq, -	.timer		= &mv78xx0_timer, +	.init_time	= mv78xx0_timer_init,  	.restart	= mv78xx0_restart,  MACHINE_END diff --git a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c index 9a882706e13..d2d06f3957f 100644 --- a/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c +++ b/arch/arm/mach-mv78xx0/rd78x00-masa-setup.c @@ -83,6 +83,6 @@ MACHINE_START(RD78X00_MASA, "Marvell RD-78x00-MASA Development Board")  	.map_io		= mv78xx0_map_io,  	.init_early	= mv78xx0_init_early,  	.init_irq	= mv78xx0_init_irq, -	.timer		= &mv78xx0_timer, +	.init_time	= mv78xx0_timer_init,  	.restart	= mv78xx0_restart,  MACHINE_END diff --git a/arch/arm/mach-mvebu/armada-370-xp.c b/arch/arm/mach-mvebu/armada-370-xp.c index 7434b5e3619..a5ea616d6d1 100644 --- a/arch/arm/mach-mvebu/armada-370-xp.c +++ b/arch/arm/mach-mvebu/armada-370-xp.c @@ -56,10 +56,6 @@ void __init armada_370_xp_init_early(void)  	init_dma_coherent_pool_size(SZ_1M);  } -struct sys_timer armada_370_xp_timer = { -	.init		= armada_370_xp_timer_and_clk_init, -}; -  static void __init armada_370_xp_dt_init(void)  {  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); @@ -78,7 +74,7 @@ DT_MACHINE_START(ARMADA_XP_DT, "Marvell Armada 370/XP (Device Tree)")  	.init_early	= armada_370_xp_init_early,  	.init_irq	= armada_370_xp_init_irq,  	.handle_irq     = armada_370_xp_handle_irq, -	.timer		= &armada_370_xp_timer, +	.init_time	= armada_370_xp_timer_and_clk_init,  	.restart	= mvebu_restart,  	.dt_compat	= armada_370_xp_dt_compat,  MACHINE_END diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index c66129b5dd1..5fad7cefe8a 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c @@ -163,19 +163,11 @@ static void __init imx23_timer_init(void)  	mx23_clocks_init();  } -static struct sys_timer imx23_timer = { -	.init = imx23_timer_init, -}; -  static void __init imx28_timer_init(void)  {  	mx28_clocks_init();  } -static struct sys_timer imx28_timer = { -	.init = imx28_timer_init, -}; -  enum mac_oui {  	OUI_FSL,  	OUI_DENX, @@ -446,7 +438,7 @@ DT_MACHINE_START(IMX23, "Freescale i.MX23 (Device Tree)")  	.map_io		= mx23_map_io,  	.init_irq	= icoll_init_irq,  	.handle_irq	= icoll_handle_irq, -	.timer		= &imx23_timer, +	.init_time	= imx23_timer_init,  	.init_machine	= mxs_machine_init,  	.dt_compat	= imx23_dt_compat,  	.restart	= mxs_restart, @@ -456,7 +448,7 @@ DT_MACHINE_START(IMX28, "Freescale i.MX28 (Device Tree)")  	.map_io		= mx28_map_io,  	.init_irq	= icoll_init_irq,  	.handle_irq	= icoll_handle_irq, -	.timer		= &imx28_timer, +	.init_time	= imx28_timer_init,  	.init_machine	= mxs_machine_init,  	.dt_compat	= imx28_dt_compat,  	.restart	= mxs_restart, diff --git a/arch/arm/mach-netx/generic.h b/arch/arm/mach-netx/generic.h index 9b915119b8d..768b26bbb42 100644 --- a/arch/arm/mach-netx/generic.h +++ b/arch/arm/mach-netx/generic.h @@ -21,5 +21,4 @@ extern void __init netx_map_io(void);  extern void __init netx_init_irq(void);  extern void netx_restart(char, const char *); -struct sys_timer; -extern struct sys_timer netx_timer; +extern void netx_timer_init(void); diff --git a/arch/arm/mach-netx/nxdb500.c b/arch/arm/mach-netx/nxdb500.c index 8b781ff7c9e..241e1b9c58c 100644 --- a/arch/arm/mach-netx/nxdb500.c +++ b/arch/arm/mach-netx/nxdb500.c @@ -205,7 +205,7 @@ MACHINE_START(NXDB500, "Hilscher nxdb500")  	.map_io		= netx_map_io,  	.init_irq	= netx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &netx_timer, +	.init_time	= netx_timer_init,  	.init_machine	= nxdb500_init,  	.restart	= netx_restart,  MACHINE_END diff --git a/arch/arm/mach-netx/nxdkn.c b/arch/arm/mach-netx/nxdkn.c index b26dbce334f..055aeecedde 100644 --- a/arch/arm/mach-netx/nxdkn.c +++ b/arch/arm/mach-netx/nxdkn.c @@ -98,7 +98,7 @@ MACHINE_START(NXDKN, "Hilscher nxdkn")  	.map_io		= netx_map_io,  	.init_irq	= netx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &netx_timer, +	.init_time	= netx_timer_init,  	.init_machine	= nxdkn_init,  	.restart	= netx_restart,  MACHINE_END diff --git a/arch/arm/mach-netx/nxeb500hmi.c b/arch/arm/mach-netx/nxeb500hmi.c index 257382efafa..018e91c55b0 100644 --- a/arch/arm/mach-netx/nxeb500hmi.c +++ b/arch/arm/mach-netx/nxeb500hmi.c @@ -182,7 +182,7 @@ MACHINE_START(NXEB500HMI, "Hilscher nxeb500hmi")  	.map_io		= netx_map_io,  	.init_irq	= netx_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &netx_timer, +	.init_time	= netx_timer_init,  	.init_machine	= nxeb500hmi_init,  	.restart	= netx_restart,  MACHINE_END diff --git a/arch/arm/mach-netx/time.c b/arch/arm/mach-netx/time.c index e24c141ba48..0dee4524494 100644 --- a/arch/arm/mach-netx/time.c +++ b/arch/arm/mach-netx/time.c @@ -107,7 +107,7 @@ static struct irqaction netx_timer_irq = {  /*   * Set up timer interrupt   */ -static void __init netx_timer_init(void) +void __init netx_timer_init(void)  {  	/* disable timer initially */  	writel(0, NETX_GPIO_COUNTER_CTRL(0)); @@ -151,7 +151,3 @@ static void __init netx_timer_init(void)  	netx_clockevent.cpumask = cpumask_of(0);  	clockevents_register_device(&netx_clockevent);  } - -struct sys_timer netx_timer = { -	.init		= netx_timer_init, -}; diff --git a/arch/arm/mach-nomadik/board-nhk8815.c b/arch/arm/mach-nomadik/board-nhk8815.c index 9f19069248d..c9015ba647a 100644 --- a/arch/arm/mach-nomadik/board-nhk8815.c +++ b/arch/arm/mach-nomadik/board-nhk8815.c @@ -267,10 +267,6 @@ static void __init nomadik_timer_init(void)  	nmdk_timer_init(io_p2v(NOMADIK_MTU0_BASE), IRQ_MTU0);  } -static struct sys_timer nomadik_timer = { -	.init	= nomadik_timer_init, -}; -  static struct i2c_board_info __initdata nhk8815_i2c0_devices[] = {  	{  		I2C_BOARD_INFO("stw4811", 0x2d), @@ -353,7 +349,7 @@ MACHINE_START(NOMADIK, "NHK8815")  	.map_io		= cpu8815_map_io,  	.init_irq	= cpu8815_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &nomadik_timer, +	.init_time	= nomadik_timer_init,  	.init_machine	= nhk8815_platform_init,  	.restart	= cpu8815_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 2e98a3ac7c5..2aab761ee68 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c @@ -628,6 +628,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")  	.init_irq	= omap1_init_irq,  	.init_machine	= ams_delta_init,  	.init_late	= ams_delta_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 560a7dcf0a5..702d58039cc 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c @@ -364,6 +364,6 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_fsample_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 608e7d2a277..e1d9171774b 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c @@ -84,6 +84,6 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_generic_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 2274bd677ef..0dac3d239e3 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c @@ -461,6 +461,6 @@ MACHINE_START(OMAP_H2, "TI-H2")  	.init_irq	= omap1_init_irq,  	.init_machine	= h2_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 1051935f0aa..816ecd13f81 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c @@ -454,6 +454,6 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")  	.init_irq	= omap1_init_irq,  	.init_machine	= h3_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 356f816c84a..35a2379b986 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c @@ -603,6 +603,6 @@ MACHINE_START(HERALD, "HTC Herald")  	.init_irq       = omap1_init_irq,  	.init_machine   = htcherald_init,  	.init_late	= omap1_init_late, -	.timer          = &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index f8033fab0f8..bd5f02e9c35 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c @@ -458,6 +458,6 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")  	.init_irq	= omap1_init_irq,  	.init_machine	= innovator_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 24d2f2df11a..4695ca71770 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -242,6 +242,6 @@ MACHINE_START(NOKIA770, "Nokia 770")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_nokia770_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 872ea47cd28..a7ce6928668 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c @@ -609,6 +609,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")  	.init_irq	= omap1_init_irq,  	.init_machine	= osk_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index c33dceb4660..845a1a7aef9 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c @@ -268,6 +268,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_palmte_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 2948b0ee4be..65a4a3e357f 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c @@ -314,6 +314,6 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_palmtt_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 7a05895c0be..01c970071fd 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c @@ -330,6 +330,6 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_palmz71_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 27f8d12ec22..8b2f7127f71 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c @@ -326,6 +326,6 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_perseus2_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 20ed52ae171..9732a98f3e0 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c @@ -407,6 +407,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_sx1_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index abf705f49b1..6c116e1a4b0 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c @@ -289,6 +289,6 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")  	.init_irq	= omap1_init_irq,  	.init_machine	= voiceblue_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= voiceblue_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index b53e0854422..fb18831e88a 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h @@ -75,7 +75,7 @@ extern void __init omap_check_revision(void);  extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,  			       unsigned int ctrl); -extern struct sys_timer omap1_timer; +extern void omap1_timer_init(void);  #ifdef CONFIG_OMAP_32K_TIMER  extern int omap_32k_timer_init(void);  #else diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index 4d4816fd6fc..1d4512fdc9b 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c @@ -236,12 +236,8 @@ static inline void omap_mpu_timer_init(void)   * Timer initialization   * ---------------------------------------------------------------------------   */ -static void __init omap1_timer_init(void) +void __init omap1_timer_init(void)  {  	if (omap_32k_timer_init() != 0)  		omap_mpu_timer_init();  } - -struct sys_timer omap1_timer = { -	.init		= omap1_timer_init, -}; diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 4815ea6f8f5..5f413968d56 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c @@ -284,6 +284,6 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_2430sdp_init,  	.init_late	= omap2430_init_late, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.restart	= omap2xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index bb73afc9ac1..8e2513f6a28 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -597,6 +597,6 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_3430sdp_init,  	.init_late	= omap3430_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c index 050aaa77125..33846274bb8 100644 --- a/arch/arm/mach-omap2/board-3630sdp.c +++ b/arch/arm/mach-omap2/board-3630sdp.c @@ -211,6 +211,6 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_sdp_init,  	.init_late	= omap3630_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 1cc6696594f..f5d5f5941d7 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c @@ -725,6 +725,6 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")  	.handle_irq	= gic_handle_irq,  	.init_machine	= omap_4430sdp_init,  	.init_late	= omap4430_init_late, -	.timer		= &omap4_timer, +	.init_time	= omap4_local_timer_init,  	.restart	= omap44xx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c index 51b96a1206d..07f0be24a5d 100644 --- a/arch/arm/mach-omap2/board-am3517crane.c +++ b/arch/arm/mach-omap2/board-am3517crane.c @@ -92,6 +92,6 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= am3517_crane_init,  	.init_late	= am35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index f81a303b87f..6f5b2a05f4b 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c @@ -393,6 +393,6 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= am3517_evm_init,  	.init_late	= am35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 5d0a61f5416..3a6ca74709a 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c @@ -337,6 +337,6 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_apollon_init,  	.init_late	= omap2420_init_late, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.restart	= omap2xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index b3102c2f4a3..68647c38919 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c @@ -751,7 +751,7 @@ MACHINE_START(CM_T35, "Compulab CM-T35")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= cm_t35_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -764,6 +764,6 @@ MACHINE_START(CM_T3730, "Compulab CM-T3730")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= cm_t3730_init,  	.init_late     = omap3630_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c index ebbc2adb499..6a9529ab95c 100644 --- a/arch/arm/mach-omap2/board-cm-t3517.c +++ b/arch/arm/mach-omap2/board-cm-t3517.c @@ -297,6 +297,6 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= cm_t3517_init,  	.init_late	= am35xx_init_late, -	.timer		= &omap3_gp_timer, +	.init_time	= omap3_gp_gptimer_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 12865af25d3..0b1d8f75808 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -643,6 +643,6 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= devkit8000_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_secure_timer, +	.init_time	= omap3_secure_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 53cb380b787..8a5f814613c 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c @@ -65,7 +65,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")  	.init_irq	= omap_intc_of_init,  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_generic_init, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.dt_compat	= omap242x_boards_compat,  	.restart	= omap2xxx_restart,  MACHINE_END @@ -84,7 +84,7 @@ DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")  	.init_irq	= omap_intc_of_init,  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_generic_init, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.dt_compat	= omap243x_boards_compat,  	.restart	= omap2xxx_restart,  MACHINE_END @@ -103,7 +103,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")  	.init_irq	= omap_intc_of_init,  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_generic_init, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.dt_compat	= omap3_boards_compat,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -120,7 +120,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")  	.init_irq	= omap_intc_of_init,  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_generic_init, -	.timer		= &omap3_secure_timer, +	.init_time	= omap3_secure_sync32k_timer_init,  	.dt_compat	= omap3_gp_boards_compat,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -139,7 +139,7 @@ DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")  	.init_irq	= omap_intc_of_init,  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_generic_init, -	.timer		= &omap3_am33xx_timer, +	.init_time	= omap3_am33xx_gptimer_timer_init,  	.dt_compat	= am33xx_boards_compat,  MACHINE_END  #endif @@ -159,7 +159,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")  	.handle_irq	= gic_handle_irq,  	.init_machine	= omap_generic_init,  	.init_late	= omap4430_init_late, -	.timer		= &omap4_timer, +	.init_time	= omap4_local_timer_init,  	.dt_compat	= omap4_boards_compat,  	.restart	= omap44xx_restart,  MACHINE_END @@ -179,7 +179,7 @@ DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")  	.init_irq	= omap_gic_of_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= omap_generic_init, -	.timer		= &omap5_timer, +	.init_time	= omap5_realtime_timer_init,  	.dt_compat	= omap5_boards_compat,  	.restart	= omap44xx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index 3be1311f9e3..812c829fa46 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c @@ -342,6 +342,6 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_h4_init,  	.init_late	= omap2420_init_late, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.restart	= omap2xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 0f24cb84ba5..5b447649f5a 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c @@ -655,7 +655,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= igep_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -668,6 +668,6 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= igep_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 0869f4f3d3e..ff440c0d04d 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c @@ -435,6 +435,6 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_ldp_init,  	.init_late	= omap3430_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index 0abb30fe399..f6eeb87e4e9 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c @@ -731,7 +731,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= n8x0_init_machine,  	.init_late	= omap2420_init_late, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.restart	= omap2xxx_restart,  MACHINE_END @@ -744,7 +744,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= n8x0_init_machine,  	.init_late	= omap2420_init_late, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.restart	= omap2xxx_restart,  MACHINE_END @@ -757,6 +757,6 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= n8x0_init_machine,  	.init_late	= omap2420_init_late, -	.timer		= &omap2_timer, +	.init_time	= omap2_sync32k_timer_init,  	.restart	= omap2xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 1957426b96f..a43dd52d387 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -544,6 +544,6 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3_beagle_init,  	.init_late	= omap3_init_late, -	.timer		= &omap3_secure_timer, +	.init_time	= omap3_secure_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 3985f35aee0..f2f636b1976 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -757,6 +757,6 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3_evm_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c index 2a065ba6eb5..0fba43a9b07 100644 --- a/arch/arm/mach-omap2/board-omap3logic.c +++ b/arch/arm/mach-omap2/board-omap3logic.c @@ -231,7 +231,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3logic_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -244,6 +244,6 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3logic_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index a53a6683c1b..12e18168934 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c @@ -618,6 +618,6 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3pandora_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index 53a6cbcf974..13ee4054560 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c @@ -427,6 +427,6 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")  	.handle_irq		= omap3_intc_handle_irq,  	.init_machine		= omap3_stalker_init,  	.init_late		= omap35xx_init_late, -	.timer			= &omap3_secure_timer, +	.init_time		= omap3_secure_sync32k_timer_init,  	.restart		= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index 263cb9cfbf3..36c455c85ed 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c @@ -386,6 +386,6 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3_touchbook_init,  	.init_late	= omap3430_init_late, -	.timer		= &omap3_secure_timer, +	.init_time	= omap3_secure_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 769c1feee1c..72e2e7e6835 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -462,6 +462,6 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")  	.handle_irq	= gic_handle_irq,  	.init_machine	= omap4_panda_init,  	.init_late	= omap4430_init_late, -	.timer		= &omap4_timer, +	.init_time	= omap4_local_timer_init,  	.restart	= omap44xx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index c8fde3e5644..233a37d541c 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -551,6 +551,6 @@ MACHINE_START(OVERO, "Gumstix Overo")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= overo_init,  	.init_late	= omap35xx_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c index 0c777b75e48..386a2ddc117 100644 --- a/arch/arm/mach-omap2/board-rm680.c +++ b/arch/arm/mach-omap2/board-rm680.c @@ -147,7 +147,7 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= rm680_init,  	.init_late	= omap3630_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -160,6 +160,6 @@ MACHINE_START(NOKIA_RM696, "Nokia RM-696 board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= rm680_init,  	.init_late	= omap3630_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c index d0374ea2dfb..f7c4616cbb6 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c @@ -123,6 +123,6 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= rx51_init,  	.init_late	= omap3430_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-ti8168evm.c b/arch/arm/mach-omap2/board-ti8168evm.c index 1a3e056d63a..6273c286e1d 100644 --- a/arch/arm/mach-omap2/board-ti8168evm.c +++ b/arch/arm/mach-omap2/board-ti8168evm.c @@ -43,7 +43,7 @@ MACHINE_START(TI8168EVM, "ti8168evm")  	.map_io		= ti81xx_map_io,  	.init_early	= ti81xx_init_early,  	.init_irq	= ti81xx_init_irq, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.init_machine	= ti81xx_evm_init,  	.init_late	= ti81xx_init_late,  	.restart	= omap44xx_restart, @@ -55,7 +55,7 @@ MACHINE_START(TI8148EVM, "ti8148evm")  	.map_io		= ti81xx_map_io,  	.init_early	= ti81xx_init_early,  	.init_irq	= ti81xx_init_irq, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.init_machine	= ti81xx_evm_init,  	.init_late	= ti81xx_init_late,  	.restart	= omap44xx_restart, diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c index d7fa31e6723..d257cf1e0ab 100644 --- a/arch/arm/mach-omap2/board-zoom.c +++ b/arch/arm/mach-omap2/board-zoom.c @@ -137,7 +137,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_zoom_init,  	.init_late	= omap3430_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END @@ -150,6 +150,6 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap_zoom_init,  	.init_late	= omap3630_init_late, -	.timer		= &omap3_timer, +	.init_time	= omap3_sync32k_timer_init,  	.restart	= omap3xxx_restart,  MACHINE_END diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 948bcaa82eb..b4350274361 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h @@ -79,13 +79,13 @@ static inline int omap_mux_late_init(void)  extern void omap2_init_common_infrastructure(void); -extern struct sys_timer omap2_timer; -extern struct sys_timer omap3_timer; -extern struct sys_timer omap3_secure_timer; -extern struct sys_timer omap3_gp_timer; -extern struct sys_timer omap3_am33xx_timer; -extern struct sys_timer omap4_timer; -extern struct sys_timer omap5_timer; +extern void omap2_sync32k_timer_init(void); +extern void omap3_sync32k_timer_init(void); +extern void omap3_secure_sync32k_timer_init(void); +extern void omap3_gp_gptimer_timer_init(void); +extern void omap3_am33xx_gptimer_timer_init(void); +extern void omap4_local_timer_init(void); +extern void omap5_realtime_timer_init(void);  void omap2420_init_early(void);  void omap2430_init_early(void); diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 390c1b6e15b..05b3a5472bf 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -552,7 +552,7 @@ static inline void __init realtime_counter_init(void)  #define OMAP_SYS_GP_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop,	\  			       clksrc_nr, clksrc_src)			\ -static void __init omap##name##_gptimer_timer_init(void)		\ +void __init omap##name##_gptimer_timer_init(void)			\  {									\  	omap_dmtimer_init();						\  	omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop);	\ @@ -561,7 +561,7 @@ static void __init omap##name##_gptimer_timer_init(void)		\  #define OMAP_SYS_32K_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop,	\  				clksrc_nr, clksrc_src)			\ -static void __init omap##name##_sync32k_timer_init(void)		\ +void __init omap##name##_sync32k_timer_init(void)		\  {									\  	omap_dmtimer_init();						\  	omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop);	\ @@ -572,33 +572,23 @@ static void __init omap##name##_sync32k_timer_init(void)		\  		omap2_sync32k_clocksource_init();			\  } -#define OMAP_SYS_TIMER(name, clksrc)					\ -struct sys_timer omap##name##_timer = {					\ -	.init	= omap##name##_##clksrc##_timer_init,			\ -}; -  #ifdef CONFIG_ARCH_OMAP2  OMAP_SYS_32K_TIMER_INIT(2, 1, OMAP2_32K_SOURCE, "ti,timer-alwon",  			2, OMAP2_MPU_SOURCE); -OMAP_SYS_TIMER(2, sync32k);  #endif /* CONFIG_ARCH_OMAP2 */  #ifdef CONFIG_ARCH_OMAP3  OMAP_SYS_32K_TIMER_INIT(3, 1, OMAP3_32K_SOURCE, "ti,timer-alwon",  			2, OMAP3_MPU_SOURCE); -OMAP_SYS_TIMER(3, sync32k);  OMAP_SYS_32K_TIMER_INIT(3_secure, 12, OMAP3_32K_SOURCE, "ti,timer-secure",  			2, OMAP3_MPU_SOURCE); -OMAP_SYS_TIMER(3_secure, sync32k);  OMAP_SYS_GP_TIMER_INIT(3_gp, 1, OMAP3_MPU_SOURCE, "ti,timer-alwon",  		       2, OMAP3_MPU_SOURCE); -OMAP_SYS_TIMER(3_gp, gptimer);  #endif /* CONFIG_ARCH_OMAP3 */  #ifdef CONFIG_SOC_AM33XX  OMAP_SYS_GP_TIMER_INIT(3_am33xx, 1, OMAP4_MPU_SOURCE, "ti,timer-alwon",  		       2, OMAP4_MPU_SOURCE); -OMAP_SYS_TIMER(3_am33xx, gptimer);  #endif /* CONFIG_SOC_AM33XX */  #ifdef CONFIG_ARCH_OMAP4 @@ -606,7 +596,7 @@ OMAP_SYS_32K_TIMER_INIT(4, 1, OMAP4_32K_SOURCE, "ti,timer-alwon",  			2, OMAP4_MPU_SOURCE);  #ifdef CONFIG_LOCAL_TIMERS  static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29); -static void __init omap4_local_timer_init(void) +void __init omap4_local_timer_init(void)  {  	omap4_sync32k_timer_init();  	/* Local timers are not supprted on OMAP4430 ES1.0 */ @@ -624,18 +614,17 @@ static void __init omap4_local_timer_init(void)  	}  }  #else /* CONFIG_LOCAL_TIMERS */ -static void __init omap4_local_timer_init(void) +void __init omap4_local_timer_init(void)  {  	omap4_sync32k_timer_init();  }  #endif /* CONFIG_LOCAL_TIMERS */ -OMAP_SYS_TIMER(4, local);  #endif /* CONFIG_ARCH_OMAP4 */  #ifdef CONFIG_SOC_OMAP5  OMAP_SYS_32K_TIMER_INIT(5, 1, OMAP4_32K_SOURCE, "ti,timer-alwon",  			2, OMAP4_MPU_SOURCE); -static void __init omap5_realtime_timer_init(void) +void __init omap5_realtime_timer_init(void)  {  	int err; @@ -646,7 +635,6 @@ static void __init omap5_realtime_timer_init(void)  	if (err)  		pr_err("%s: arch_timer_register failed %d\n", __func__, err);  } -OMAP_SYS_TIMER(5, realtime);  #endif /* CONFIG_SOC_OMAP5 */  /** diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c index 32e5c211a89..35a8014529c 100644 --- a/arch/arm/mach-orion5x/board-dt.c +++ b/arch/arm/mach-orion5x/board-dt.c @@ -72,7 +72,7 @@ DT_MACHINE_START(ORION5X_DT, "Marvell Orion5x (Flattened Device Tree)")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion_dt_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.init_machine	= orion5x_dt_init,  	.restart	= orion5x_restart,  	.dt_compat	= orion5x_dt_compat, diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index 550f92320af..d068f1431c4 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c @@ -217,7 +217,7 @@ int __init orion5x_find_tclk(void)  	return 166666667;  } -static void __init orion5x_timer_init(void) +void __init orion5x_timer_init(void)  {  	orion5x_tclk = orion5x_find_tclk(); @@ -225,10 +225,6 @@ static void __init orion5x_timer_init(void)  			IRQ_ORION5X_BRIDGE, orion5x_tclk);  } -struct sys_timer orion5x_timer = { -	.init = orion5x_timer_init, -}; -  /*****************************************************************************   * General diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h index 7db5cdd9c4b..e6034576028 100644 --- a/arch/arm/mach-orion5x/common.h +++ b/arch/arm/mach-orion5x/common.h @@ -15,7 +15,7 @@ void orion5x_init(void);  void orion5x_id(u32 *dev, u32 *rev, char **dev_name);  void clk_init(void);  extern int orion5x_tclk; -extern struct sys_timer orion5x_timer; +extern void orion5x_timer_init(void);  /*   * Enumerations and functions for Orion windows mapping. Used by Orion core diff --git a/arch/arm/mach-orion5x/d2net-setup.c b/arch/arm/mach-orion5x/d2net-setup.c index e3629c063df..57d0af74874 100644 --- a/arch/arm/mach-orion5x/d2net-setup.c +++ b/arch/arm/mach-orion5x/d2net-setup.c @@ -342,7 +342,7 @@ MACHINE_START(D2NET, "LaCie d2 Network")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END @@ -355,7 +355,7 @@ MACHINE_START(BIGDISK, "LaCie Big Disk Network")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c index 41fe2b1ff47..76665640087 100644 --- a/arch/arm/mach-orion5x/db88f5281-setup.c +++ b/arch/arm/mach-orion5x/db88f5281-setup.c @@ -362,6 +362,6 @@ MACHINE_START(DB88F5281, "Marvell Orion-2 Development Board")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index e533588880f..6eb1732757f 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c @@ -714,7 +714,7 @@ MACHINE_START(DNS323, "D-Link DNS-323")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c index f1ae10ae5bd..b9840352621 100644 --- a/arch/arm/mach-orion5x/kurobox_pro-setup.c +++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c @@ -383,7 +383,7 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END @@ -397,7 +397,7 @@ MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c index 0c9e413b580..044da5b6a6a 100644 --- a/arch/arm/mach-orion5x/ls-chl-setup.c +++ b/arch/arm/mach-orion5x/ls-chl-setup.c @@ -322,7 +322,7 @@ MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c index c1b5d8a5803..d49f93423f5 100644 --- a/arch/arm/mach-orion5x/ls_hgl-setup.c +++ b/arch/arm/mach-orion5x/ls_hgl-setup.c @@ -269,7 +269,7 @@ MACHINE_START(LINKSTATION_LS_HGL, "Buffalo Linkstation LS-HGL")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/lsmini-setup.c b/arch/arm/mach-orion5x/lsmini-setup.c index 949eaa8f12e..8e3965c6c0f 100644 --- a/arch/arm/mach-orion5x/lsmini-setup.c +++ b/arch/arm/mach-orion5x/lsmini-setup.c @@ -271,7 +271,7 @@ MACHINE_START(LINKSTATION_MINI, "Buffalo Linkstation Mini")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/mss2-setup.c b/arch/arm/mach-orion5x/mss2-setup.c index 1c16d045333..0ec94a1f2b1 100644 --- a/arch/arm/mach-orion5x/mss2-setup.c +++ b/arch/arm/mach-orion5x/mss2-setup.c @@ -265,7 +265,7 @@ MACHINE_START(MSS2, "Maxtor Shared Storage II")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c index c87fde4deec..18143f2a909 100644 --- a/arch/arm/mach-orion5x/mv2120-setup.c +++ b/arch/arm/mach-orion5x/mv2120-setup.c @@ -233,7 +233,7 @@ MACHINE_START(MV2120, "HP Media Vault mv2120")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c index 3506f16c0bf..282e503b003 100644 --- a/arch/arm/mach-orion5x/net2big-setup.c +++ b/arch/arm/mach-orion5x/net2big-setup.c @@ -425,7 +425,7 @@ MACHINE_START(NET2BIG, "LaCie 2Big Network")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c index 9b1c9531029..d6e72f672af 100644 --- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c +++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c @@ -171,7 +171,7 @@ MACHINE_START(RD88F5181L_FXO, "Marvell Orion-VoIP FXO Reference Design")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c index 51ba2b81a10..c8b7913310e 100644 --- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c +++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c @@ -183,7 +183,7 @@ MACHINE_START(RD88F5181L_GE, "Marvell Orion-VoIP GE Reference Design")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c index 0a56b9444f1..f9e156725d7 100644 --- a/arch/arm/mach-orion5x/rd88f5182-setup.c +++ b/arch/arm/mach-orion5x/rd88f5182-setup.c @@ -281,6 +281,6 @@ MACHINE_START(RD88F5182, "Marvell Orion-NAS Reference Design")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c index ed50910b08a..78a1e6ab1b9 100644 --- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c +++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c @@ -123,7 +123,7 @@ MACHINE_START(RD88F6183AP_GE, "Marvell Orion-1-90 AP GE Reference Design")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c index 90e571dc4de..acc0877ec1c 100644 --- a/arch/arm/mach-orion5x/terastation_pro2-setup.c +++ b/arch/arm/mach-orion5x/terastation_pro2-setup.c @@ -361,7 +361,7 @@ MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c index b184f680e0d..9c17f0c2b48 100644 --- a/arch/arm/mach-orion5x/ts209-setup.c +++ b/arch/arm/mach-orion5x/ts209-setup.c @@ -326,7 +326,7 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c index a5c2e64c4ec..8cc5ab6c503 100644 --- a/arch/arm/mach-orion5x/ts409-setup.c +++ b/arch/arm/mach-orion5x/ts409-setup.c @@ -315,7 +315,7 @@ MACHINE_START(TS409, "QNAP TS-409")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c index b0727dcd1ef..e960855d32a 100644 --- a/arch/arm/mach-orion5x/ts78xx-setup.c +++ b/arch/arm/mach-orion5x/ts78xx-setup.c @@ -619,6 +619,6 @@ MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")  	.map_io		= ts78xx_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c index 754c12b6abf..66552ca7e05 100644 --- a/arch/arm/mach-orion5x/wnr854t-setup.c +++ b/arch/arm/mach-orion5x/wnr854t-setup.c @@ -176,7 +176,7 @@ MACHINE_START(WNR854T, "Netgear WNR854T")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c index 45c21251eb1..2c5408e2e68 100644 --- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c +++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c @@ -264,7 +264,7 @@ MACHINE_START(WRT350N_V2, "Linksys WRT350N v2")  	.map_io		= orion5x_map_io,  	.init_early	= orion5x_init_early,  	.init_irq	= orion5x_init_irq, -	.timer		= &orion5x_timer, +	.init_time	= orion5x_timer_init,  	.fixup		= tag_fixup_mem32,  	.restart	= orion5x_restart,  MACHINE_END diff --git a/arch/arm/mach-picoxcell/common.c b/arch/arm/mach-picoxcell/common.c index f6c0849af5e..518c59bdbcd 100644 --- a/arch/arm/mach-picoxcell/common.c +++ b/arch/arm/mach-picoxcell/common.c @@ -99,7 +99,7 @@ DT_MACHINE_START(PICOXCELL, "Picochip picoXcell")  	.nr_irqs	= NR_IRQS_LEGACY,  	.init_irq	= picoxcell_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &dw_apb_timer, +	.init_time	= dw_apb_timer_init,  	.init_machine	= picoxcell_init_machine,  	.dt_compat	= picoxcell_dt_match,  	.restart	= picoxcell_wdt_restart, diff --git a/arch/arm/mach-picoxcell/common.h b/arch/arm/mach-picoxcell/common.h index a65cb02f84c..481b42a4ef1 100644 --- a/arch/arm/mach-picoxcell/common.h +++ b/arch/arm/mach-picoxcell/common.h @@ -12,6 +12,6 @@  #include <asm/mach/time.h> -extern struct sys_timer dw_apb_timer; +extern void dw_apb_timer_init(void);  #endif /* __PICOXCELL_COMMON_H__ */ diff --git a/arch/arm/mach-prima2/common.c b/arch/arm/mach-prima2/common.c index f25a5419463..ed3570e5eb8 100644 --- a/arch/arm/mach-prima2/common.c +++ b/arch/arm/mach-prima2/common.c @@ -40,7 +40,7 @@ DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)")  	/* Maintainer: Barry Song <baohua.song@csr.com> */  	.map_io         = sirfsoc_map_lluart,  	.init_irq	= sirfsoc_of_irq_init, -	.timer		= &sirfsoc_timer, +	.init_time	= sirfsoc_timer_init,  	.dma_zone_size	= SZ_256M,  	.init_machine	= sirfsoc_mach_init,  	.init_late	= sirfsoc_init_late, diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h index 60d826fc218..9c75f124e3c 100644 --- a/arch/arm/mach-prima2/common.h +++ b/arch/arm/mach-prima2/common.h @@ -12,7 +12,7 @@  #include <linux/init.h>  #include <asm/mach/time.h> -extern struct sys_timer sirfsoc_timer; +extern void sirfsoc_timer_init(void);  extern void __init sirfsoc_of_irq_init(void);  extern void __init sirfsoc_of_clk_init(void); diff --git a/arch/arm/mach-prima2/timer.c b/arch/arm/mach-prima2/timer.c index d95bf252f69..8c732a5beb7 100644 --- a/arch/arm/mach-prima2/timer.c +++ b/arch/arm/mach-prima2/timer.c @@ -187,7 +187,7 @@ static void __init sirfsoc_clockevent_init(void)  }  /* initialize the kernel jiffy timer source */ -static void __init sirfsoc_timer_init(void) +void __init sirfsoc_timer_init(void)  {  	unsigned long rate;  	struct clk *clk; @@ -226,7 +226,7 @@ static struct of_device_id timer_ids[] = {  	{},  }; -static void __init sirfsoc_of_timer_map(void) +void __init sirfsoc_of_timer_map(void)  {  	struct device_node *np;  	const unsigned int *intspec; @@ -245,7 +245,3 @@ static void __init sirfsoc_of_timer_map(void)  	of_node_put(np);  } - -struct sys_timer sirfsoc_timer = { -	.init = sirfsoc_timer_init, -}; diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c index 20822934251..2f71b3fbd31 100644 --- a/arch/arm/mach-pxa/balloon3.c +++ b/arch/arm/mach-pxa/balloon3.c @@ -822,7 +822,7 @@ MACHINE_START(BALLOON3, "Balloon3")  	.nr_irqs	= BALLOON3_NR_IRQS,  	.init_irq	= balloon3_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= balloon3_init,  	.atag_offset	= 0x100,  	.restart	= pxa_restart, diff --git a/arch/arm/mach-pxa/capc7117.c b/arch/arm/mach-pxa/capc7117.c index 9a8760b7291..c092730749b 100644 --- a/arch/arm/mach-pxa/capc7117.c +++ b/arch/arm/mach-pxa/capc7117.c @@ -153,7 +153,7 @@ MACHINE_START(CAPC7117,  	.nr_irqs = PXA_NR_IRQS,  	.init_irq = pxa3xx_init_irq,  	.handle_irq = pxa3xx_handle_irq, -	.timer = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine = capc7117_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c index a103c8ffea9..bb99f59a36d 100644 --- a/arch/arm/mach-pxa/cm-x2xx.c +++ b/arch/arm/mach-pxa/cm-x2xx.c @@ -520,7 +520,7 @@ MACHINE_START(ARMCORE, "Compulab CM-X2XX")  	.init_irq	= cmx2xx_init_irq,  	/* NOTE: pxa25x_handle_irq() works on PXA27x w/o camera support */  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= cmx2xx_init,  #ifdef CONFIG_PCI  	.dma_zone_size	= SZ_64M, diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c index cc2b23afcaa..8091aac89ed 100644 --- a/arch/arm/mach-pxa/cm-x300.c +++ b/arch/arm/mach-pxa/cm-x300.c @@ -854,7 +854,7 @@ MACHINE_START(CM_X300, "CM-X300 module")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= cm_x300_init,  	.fixup		= cm_x300_fixup,  	.restart	= pxa_restart, diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c index b2f227d3612..5f9d9303b34 100644 --- a/arch/arm/mach-pxa/colibri-pxa270.c +++ b/arch/arm/mach-pxa/colibri-pxa270.c @@ -313,7 +313,7 @@ MACHINE_START(COLIBRI, "Toradex Colibri PXA270")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END @@ -324,7 +324,7 @@ MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c index a9c9c163dd9..f1a1ac1fbd8 100644 --- a/arch/arm/mach-pxa/colibri-pxa300.c +++ b/arch/arm/mach-pxa/colibri-pxa300.c @@ -189,7 +189,7 @@ MACHINE_START(COLIBRI300, "Toradex Colibri PXA300")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c index 25515cd7e68..f6cc8b0ab82 100644 --- a/arch/arm/mach-pxa/colibri-pxa320.c +++ b/arch/arm/mach-pxa/colibri-pxa320.c @@ -259,7 +259,7 @@ MACHINE_START(COLIBRI320, "Toradex Colibri PXA320")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 7c83f52c549..a5b8fead7d6 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c @@ -733,7 +733,7 @@ MACHINE_START(CORGI, "SHARP Corgi")  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq,  	.init_machine	= corgi_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= corgi_restart,  MACHINE_END  #endif @@ -746,7 +746,7 @@ MACHINE_START(SHEPHERD, "SHARP Shepherd")  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq,  	.init_machine	= corgi_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= corgi_restart,  MACHINE_END  #endif @@ -759,7 +759,7 @@ MACHINE_START(HUSKY, "SHARP Husky")  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq,  	.init_machine	= corgi_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= corgi_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c index 7039f44b364..fadfff8feae 100644 --- a/arch/arm/mach-pxa/csb726.c +++ b/arch/arm/mach-pxa/csb726.c @@ -278,6 +278,6 @@ MACHINE_START(CSB726, "Cogent CSB726")  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq,  	.init_machine   = csb726_init, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index 1b6411439ec..446563a7d1a 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c @@ -1298,7 +1298,7 @@ MACHINE_START(EM_X270, "Compulab EM-X270")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= em_x270_init,  	.restart	= pxa_restart,  MACHINE_END @@ -1309,7 +1309,7 @@ MACHINE_START(EXEDA, "Compulab eXeda")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= em_x270_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c index be2ee9bf5c6..8280ebcaab9 100644 --- a/arch/arm/mach-pxa/eseries.c +++ b/arch/arm/mach-pxa/eseries.c @@ -195,7 +195,7 @@ MACHINE_START(E330, "Toshiba e330")  	.handle_irq	= pxa25x_handle_irq,  	.fixup		= eseries_fixup,  	.init_machine	= e330_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -246,7 +246,7 @@ MACHINE_START(E350, "Toshiba e350")  	.handle_irq	= pxa25x_handle_irq,  	.fixup		= eseries_fixup,  	.init_machine	= e350_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -370,7 +370,7 @@ MACHINE_START(E400, "Toshiba e400")  	.handle_irq	= pxa25x_handle_irq,  	.fixup		= eseries_fixup,  	.init_machine	= e400_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -566,7 +566,7 @@ MACHINE_START(E740, "Toshiba e740")  	.handle_irq	= pxa25x_handle_irq,  	.fixup		= eseries_fixup,  	.init_machine	= e740_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -765,7 +765,7 @@ MACHINE_START(E750, "Toshiba e750")  	.handle_irq	= pxa25x_handle_irq,  	.fixup		= eseries_fixup,  	.init_machine	= e750_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -977,7 +977,7 @@ MACHINE_START(E800, "Toshiba e800")  	.handle_irq	= pxa25x_handle_irq,  	.fixup		= eseries_fixup,  	.init_machine	= e800_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c index dc58fa0edb6..dca10709be8 100644 --- a/arch/arm/mach-pxa/ezx.c +++ b/arch/arm/mach-pxa/ezx.c @@ -802,7 +802,7 @@ MACHINE_START(EZX_A780, "Motorola EZX A780")  	.nr_irqs	= EZX_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = a780_init,  	.restart	= pxa_restart,  MACHINE_END @@ -869,7 +869,7 @@ MACHINE_START(EZX_E680, "Motorola EZX E680")  	.nr_irqs	= EZX_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = e680_init,  	.restart	= pxa_restart,  MACHINE_END @@ -936,7 +936,7 @@ MACHINE_START(EZX_A1200, "Motorola EZX A1200")  	.nr_irqs	= EZX_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = a1200_init,  	.restart	= pxa_restart,  MACHINE_END @@ -1128,7 +1128,7 @@ MACHINE_START(EZX_A910, "Motorola EZX A910")  	.nr_irqs	= EZX_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = a910_init,  	.restart	= pxa_restart,  MACHINE_END @@ -1195,7 +1195,7 @@ MACHINE_START(EZX_E6, "Motorola EZX E6")  	.nr_irqs	= EZX_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = e6_init,  	.restart	= pxa_restart,  MACHINE_END @@ -1236,7 +1236,7 @@ MACHINE_START(EZX_E2, "Motorola EZX E2")  	.nr_irqs	= EZX_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = e2_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h index 42d5cca6625..fd7ea39b78c 100644 --- a/arch/arm/mach-pxa/generic.h +++ b/arch/arm/mach-pxa/generic.h @@ -10,9 +10,8 @@   */  struct irq_data; -struct sys_timer; -extern struct sys_timer pxa_timer; +extern void pxa_timer_init(void);  extern void __init pxa_map_io(void); diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index 60755a6bb1c..00b92dad7b8 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c @@ -238,7 +238,7 @@ MACHINE_START(GUMSTIX, "Gumstix")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= gumstix_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/h5000.c b/arch/arm/mach-pxa/h5000.c index e7dec589f01..875ec335149 100644 --- a/arch/arm/mach-pxa/h5000.c +++ b/arch/arm/mach-pxa/h5000.c @@ -208,7 +208,7 @@ MACHINE_START(H5400, "HP iPAQ H5000")  	.nr_irqs = PXA_NR_IRQS,  	.init_irq = pxa25x_init_irq,  	.handle_irq = pxa25x_handle_irq, -	.timer = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine = h5000_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c index 2962de898da..7a8d749a07b 100644 --- a/arch/arm/mach-pxa/himalaya.c +++ b/arch/arm/mach-pxa/himalaya.c @@ -164,6 +164,6 @@ MACHINE_START(HIMALAYA, "HTC Himalaya")  	.init_irq = pxa25x_init_irq,  	.handle_irq = pxa25x_handle_irq,  	.init_machine = himalaya_init, -	.timer = &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index e2c6391863f..133109ec733 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c @@ -900,6 +900,6 @@ MACHINE_START(H4700, "HP iPAQ HX4700")  	.init_irq     = pxa27x_init_irq,  	.handle_irq     = pxa27x_handle_irq,  	.init_machine = hx4700_init, -	.timer        = &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/icontrol.c b/arch/arm/mach-pxa/icontrol.c index 1d02eabc9c6..fe31bfcbb8d 100644 --- a/arch/arm/mach-pxa/icontrol.c +++ b/arch/arm/mach-pxa/icontrol.c @@ -196,7 +196,7 @@ MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= icontrol_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c index 64507cdd2e8..343c4e3a7c5 100644 --- a/arch/arm/mach-pxa/idp.c +++ b/arch/arm/mach-pxa/idp.c @@ -279,7 +279,7 @@ MACHINE_START(PXA_IDP, "Vibren PXA255 IDP")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= idp_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c index 402874f9021..e848c4607ba 100644 --- a/arch/arm/mach-pxa/littleton.c +++ b/arch/arm/mach-pxa/littleton.c @@ -443,7 +443,7 @@ MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleto  	.nr_irqs	= LITTLETON_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= littleton_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index 1a63eaa8986..1255ee00f3d 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c @@ -503,7 +503,7 @@ MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine")  	.nr_irqs	= LPD270_NR_IRQS,  	.init_irq	= lpd270_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= lpd270_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 553056d9a3c..d8a1be619f2 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c @@ -650,7 +650,7 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")  	.nr_irqs	= LUBBOCK_NR_IRQS,  	.init_irq	= lubbock_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= lubbock_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index f7922404d94..f44532fc648 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c @@ -774,6 +774,6 @@ MACHINE_START(MAGICIAN, "HTC Magician")  	.init_irq = pxa27x_init_irq,  	.handle_irq = pxa27x_handle_irq,  	.init_machine = magician_init, -	.timer = &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index f27a61ee7ac..7a12c1ba90f 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c @@ -714,7 +714,7 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")  	.nr_irqs	= MAINSTONE_NR_IRQS,  	.init_irq	= mainstone_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= mainstone_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c index 2831308dba6..f8979b943cb 100644 --- a/arch/arm/mach-pxa/mioa701.c +++ b/arch/arm/mach-pxa/mioa701.c @@ -762,6 +762,6 @@ MACHINE_START(MIOA701, "MIO A701")  	.init_irq	= &pxa27x_init_irq,  	.handle_irq	= &pxa27x_handle_irq,  	.init_machine	= mioa701_machine_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= mioa701_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/mp900.c b/arch/arm/mach-pxa/mp900.c index 152efbf093f..854f1f562d6 100644 --- a/arch/arm/mach-pxa/mp900.c +++ b/arch/arm/mach-pxa/mp900.c @@ -93,7 +93,7 @@ static void __init mp900c_init(void)  /* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */  MACHINE_START(NEC_MP900, "MobilePro900/C")  	.atag_offset	= 0x220100, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.map_io		= pxa25x_map_io,  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa25x_init_irq, diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c index 8bcc96e3b0d..909b713e578 100644 --- a/arch/arm/mach-pxa/palmld.c +++ b/arch/arm/mach-pxa/palmld.c @@ -347,7 +347,7 @@ MACHINE_START(PALMLD, "Palm LifeDrive")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= palmld_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c index 5ca7b904a30..5033fd07968 100644 --- a/arch/arm/mach-pxa/palmt5.c +++ b/arch/arm/mach-pxa/palmt5.c @@ -208,7 +208,7 @@ MACHINE_START(PALMT5, "Palm Tungsten|T5")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= palmt5_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c index ca924cfedfc..100b176f7e8 100644 --- a/arch/arm/mach-pxa/palmtc.c +++ b/arch/arm/mach-pxa/palmtc.c @@ -542,7 +542,7 @@ MACHINE_START(PALMTC, "Palm Tungsten|C")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= palmtc_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c index 32e0d799835..0742721ced2 100644 --- a/arch/arm/mach-pxa/palmte2.c +++ b/arch/arm/mach-pxa/palmte2.c @@ -363,7 +363,7 @@ MACHINE_START(PALMTE2, "Palm Tungsten|E2")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= palmte2_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c index 3f3c48f2f7c..d17bda27878 100644 --- a/arch/arm/mach-pxa/palmtreo.c +++ b/arch/arm/mach-pxa/palmtreo.c @@ -451,7 +451,7 @@ MACHINE_START(TREO680, "Palm Treo 680")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = treo680_init,  	.restart	= pxa_restart,  MACHINE_END @@ -465,7 +465,7 @@ MACHINE_START(CENTRO, "Palm Centro 685")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq       = pxa27x_init_irq,  	.handle_irq       = pxa27x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= centro_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c index 8b4366628a1..627c93a7364 100644 --- a/arch/arm/mach-pxa/palmtx.c +++ b/arch/arm/mach-pxa/palmtx.c @@ -366,7 +366,7 @@ MACHINE_START(PALMTX, "Palm T|X")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= palmtx_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c index 8cdd4f58e25..18b7fcd9859 100644 --- a/arch/arm/mach-pxa/palmz72.c +++ b/arch/arm/mach-pxa/palmz72.c @@ -404,7 +404,7 @@ MACHINE_START(PALMZ72, "Palm Zire72")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= palmz72_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c index fe9054435b6..69918c7e3f1 100644 --- a/arch/arm/mach-pxa/pcm027.c +++ b/arch/arm/mach-pxa/pcm027.c @@ -263,7 +263,7 @@ MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270")  	.nr_irqs	= PCM027_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= pcm027_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 2910bb935c7..50ccd5f1d56 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c @@ -469,7 +469,7 @@ MACHINE_START(POODLE, "SHARP Poodle")  	.nr_irqs	= POODLE_NR_IRQS,	/* 4 for LoCoMo */  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= poodle_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/pxa-dt.c b/arch/arm/mach-pxa/pxa-dt.c index c9192cea003..3835979a0dd 100644 --- a/arch/arm/mach-pxa/pxa-dt.c +++ b/arch/arm/mach-pxa/pxa-dt.c @@ -55,7 +55,7 @@ DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)")  	.map_io		= pxa3xx_map_io,  	.init_irq	= pxa3xx_dt_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  	.init_machine	= pxa3xx_dt_init,  	.dt_compat	= pxa3xx_dt_board_compat, diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index 25b08bfa997..af41888acbd 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c @@ -1095,7 +1095,7 @@ MACHINE_START(RAUMFELD_RC, "Raumfeld Controller")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -1108,7 +1108,7 @@ MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif @@ -1121,7 +1121,7 @@ MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-pxa/saar.c b/arch/arm/mach-pxa/saar.c index 08d87a5d263..710c493eac8 100644 --- a/arch/arm/mach-pxa/saar.c +++ b/arch/arm/mach-pxa/saar.c @@ -601,7 +601,7 @@ MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq       = pxa3xx_init_irq,  	.handle_irq       = pxa3xx_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = saar_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 2073f0e6db0..f90aa27ad59 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -986,7 +986,7 @@ MACHINE_START(SPITZ, "SHARP Spitz")  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq,  	.init_machine	= spitz_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= spitz_restart,  MACHINE_END  #endif @@ -1000,7 +1000,7 @@ MACHINE_START(BORZOI, "SHARP Borzoi")  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq,  	.init_machine	= spitz_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= spitz_restart,  MACHINE_END  #endif @@ -1014,7 +1014,7 @@ MACHINE_START(AKITA, "SHARP Akita")  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq,  	.init_machine	= spitz_init, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= spitz_restart,  MACHINE_END  #endif diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c index 456560b5aad..88fde43c948 100644 --- a/arch/arm/mach-pxa/stargate2.c +++ b/arch/arm/mach-pxa/stargate2.c @@ -1006,7 +1006,7 @@ MACHINE_START(INTELMOTE2, "IMOTE 2")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= imote2_init,  	.atag_offset	= 0x100,  	.restart	= pxa_restart, @@ -1019,7 +1019,7 @@ MACHINE_START(STARGATE2, "Stargate 2")  	.nr_irqs = STARGATE_NR_IRQS,  	.init_irq = pxa27x_init_irq,  	.handle_irq = pxa27x_handle_irq, -	.timer = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine = stargate2_init,  	.atag_offset = 0x100,  	.restart	= pxa_restart, diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c index 1a25f8a7b0c..f55979c09a5 100644 --- a/arch/arm/mach-pxa/tavorevb.c +++ b/arch/arm/mach-pxa/tavorevb.c @@ -494,7 +494,7 @@ MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq       = pxa3xx_init_irq,  	.handle_irq       = pxa3xx_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine   = tavorevb_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c index 4bc47d63698..bea19a06b2b 100644 --- a/arch/arm/mach-pxa/time.c +++ b/arch/arm/mach-pxa/time.c @@ -89,48 +89,10 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)  	}  } -static struct clock_event_device ckevt_pxa_osmr0 = { -	.name		= "osmr0", -	.features	= CLOCK_EVT_FEAT_ONESHOT, -	.rating		= 200, -	.set_next_event	= pxa_osmr0_set_next_event, -	.set_mode	= pxa_osmr0_set_mode, -}; - -static struct irqaction pxa_ost0_irq = { -	.name		= "ost0", -	.flags		= IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, -	.handler	= pxa_ost0_interrupt, -	.dev_id		= &ckevt_pxa_osmr0, -}; - -static void __init pxa_timer_init(void) -{ -	unsigned long clock_tick_rate = get_clock_tick_rate(); - -	writel_relaxed(0, OIER); -	writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR); - -	setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate); - -	clockevents_calc_mult_shift(&ckevt_pxa_osmr0, clock_tick_rate, 4); -	ckevt_pxa_osmr0.max_delta_ns = -		clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0); -	ckevt_pxa_osmr0.min_delta_ns = -		clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1; -	ckevt_pxa_osmr0.cpumask = cpumask_of(0); - -	setup_irq(IRQ_OST0, &pxa_ost0_irq); - -	clocksource_mmio_init(OSCR, "oscr0", clock_tick_rate, 200, 32, -		clocksource_mmio_readl_up); -	clockevents_register_device(&ckevt_pxa_osmr0); -} -  #ifdef CONFIG_PM  static unsigned long osmr[4], oier, oscr; -static void pxa_timer_suspend(void) +static void pxa_timer_suspend(struct clock_event_device *cedev)  {  	osmr[0] = readl_relaxed(OSMR0);  	osmr[1] = readl_relaxed(OSMR1); @@ -140,7 +102,7 @@ static void pxa_timer_suspend(void)  	oscr = readl_relaxed(OSCR);  } -static void pxa_timer_resume(void) +static void pxa_timer_resume(struct clock_event_device *cedev)  {  	/*  	 * Ensure that we have at least MIN_OSCR_DELTA between match @@ -163,8 +125,42 @@ static void pxa_timer_resume(void)  #define pxa_timer_resume NULL  #endif -struct sys_timer pxa_timer = { -	.init		= pxa_timer_init, +static struct clock_event_device ckevt_pxa_osmr0 = { +	.name		= "osmr0", +	.features	= CLOCK_EVT_FEAT_ONESHOT, +	.rating		= 200, +	.set_next_event	= pxa_osmr0_set_next_event, +	.set_mode	= pxa_osmr0_set_mode,  	.suspend	= pxa_timer_suspend,  	.resume		= pxa_timer_resume,  }; + +static struct irqaction pxa_ost0_irq = { +	.name		= "ost0", +	.flags		= IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, +	.handler	= pxa_ost0_interrupt, +	.dev_id		= &ckevt_pxa_osmr0, +}; + +void __init pxa_timer_init(void) +{ +	unsigned long clock_tick_rate = get_clock_tick_rate(); + +	writel_relaxed(0, OIER); +	writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR); + +	setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate); + +	clockevents_calc_mult_shift(&ckevt_pxa_osmr0, clock_tick_rate, 4); +	ckevt_pxa_osmr0.max_delta_ns = +		clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0); +	ckevt_pxa_osmr0.min_delta_ns = +		clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1; +	ckevt_pxa_osmr0.cpumask = cpumask_of(0); + +	setup_irq(IRQ_OST0, &pxa_ost0_irq); + +	clocksource_mmio_init(OSCR, "oscr0", clock_tick_rate, 200, 32, +		clocksource_mmio_readl_up); +	clockevents_register_device(&ckevt_pxa_osmr0); +} diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index 233629edf7e..9e7998d3635 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c @@ -982,6 +982,6 @@ MACHINE_START(TOSA, "SHARP Tosa")  	.init_irq       = pxa25x_init_irq,  	.handle_irq       = pxa25x_handle_irq,  	.init_machine   = tosa_init, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= tosa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c index fbbcbed4d1d..c58043462ac 100644 --- a/arch/arm/mach-pxa/trizeps4.c +++ b/arch/arm/mach-pxa/trizeps4.c @@ -561,7 +561,7 @@ MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END @@ -573,6 +573,6 @@ MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index c773e4dded6..9c363c081d3 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c @@ -997,7 +997,7 @@ MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= viper_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer          = &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= viper_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c index 491b6c9a2a9..aa89488f961 100644 --- a/arch/arm/mach-pxa/vpac270.c +++ b/arch/arm/mach-pxa/vpac270.c @@ -719,7 +719,7 @@ MACHINE_START(VPAC270, "Voipac PXA270")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= vpac270_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c index 4275713ccd1..13b1d4586d7 100644 --- a/arch/arm/mach-pxa/xcep.c +++ b/arch/arm/mach-pxa/xcep.c @@ -185,7 +185,7 @@ MACHINE_START(XCEP, "Iskratel XCEP")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa25x_init_irq,  	.handle_irq	= pxa25x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c index 97529face7a..989903a7e46 100644 --- a/arch/arm/mach-pxa/z2.c +++ b/arch/arm/mach-pxa/z2.c @@ -722,7 +722,7 @@ MACHINE_START(ZIPIT2, "Zipit Z2")  	.nr_irqs	= PXA_NR_IRQS,  	.init_irq	= pxa27x_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= z2_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c index abd3aa14508..f5d43643456 100644 --- a/arch/arm/mach-pxa/zeus.c +++ b/arch/arm/mach-pxa/zeus.c @@ -910,7 +910,7 @@ MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS")  	.nr_irqs	= ZEUS_NR_IRQS,  	.init_irq	= zeus_init_irq,  	.handle_irq	= pxa27x_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= zeus_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c index 226279fac9d..1f00d650ac2 100644 --- a/arch/arm/mach-pxa/zylonite.c +++ b/arch/arm/mach-pxa/zylonite.c @@ -428,7 +428,7 @@ MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")  	.nr_irqs	= ZYLONITE_NR_IRQS,  	.init_irq	= pxa3xx_init_irq,  	.handle_irq	= pxa3xx_handle_irq, -	.timer		= &pxa_timer, +	.init_time	= pxa_timer_init,  	.init_machine	= zylonite_init,  	.restart	= pxa_restart,  MACHINE_END diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index 28511d43637..f892862fd6a 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c @@ -418,10 +418,6 @@ static void __init realview_eb_timer_init(void)  	realview_eb_twd_init();  } -static struct sys_timer realview_eb_timer = { -	.init		= realview_eb_timer_init, -}; -  static void realview_eb_restart(char mode, const char *cmd)  {  	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); @@ -472,7 +468,7 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB")  	.map_io		= realview_eb_map_io,  	.init_early	= realview_init_early,  	.init_irq	= gic_init_irq, -	.timer		= &realview_eb_timer, +	.init_time	= realview_eb_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= realview_eb_init,  #ifdef CONFIG_ZONE_DMA diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c index 07d6672ddae..6a4524b93fc 100644 --- a/arch/arm/mach-realview/realview_pb1176.c +++ b/arch/arm/mach-realview/realview_pb1176.c @@ -329,10 +329,6 @@ static void __init realview_pb1176_timer_init(void)  	realview_timer_init(IRQ_DC1176_TIMER0);  } -static struct sys_timer realview_pb1176_timer = { -	.init		= realview_pb1176_timer_init, -}; -  static void realview_pb1176_restart(char mode, const char *cmd)  {  	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); @@ -384,7 +380,7 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")  	.map_io		= realview_pb1176_map_io,  	.init_early	= realview_init_early,  	.init_irq	= gic_init_irq, -	.timer		= &realview_pb1176_timer, +	.init_time	= realview_pb1176_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= realview_pb1176_init,  #ifdef CONFIG_ZONE_DMA diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c index 7ed53d75350..502f6e6c691 100644 --- a/arch/arm/mach-realview/realview_pb11mp.c +++ b/arch/arm/mach-realview/realview_pb11mp.c @@ -316,10 +316,6 @@ static void __init realview_pb11mp_timer_init(void)  	realview_pb11mp_twd_init();  } -static struct sys_timer realview_pb11mp_timer = { -	.init		= realview_pb11mp_timer_init, -}; -  static void realview_pb11mp_restart(char mode, const char *cmd)  {  	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); @@ -367,7 +363,7 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")  	.map_io		= realview_pb11mp_map_io,  	.init_early	= realview_init_early,  	.init_irq	= gic_init_irq, -	.timer		= &realview_pb11mp_timer, +	.init_time	= realview_pb11mp_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= realview_pb11mp_init,  #ifdef CONFIG_ZONE_DMA diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c index 9992431b8a1..85c81aaa05e 100644 --- a/arch/arm/mach-realview/realview_pba8.c +++ b/arch/arm/mach-realview/realview_pba8.c @@ -264,10 +264,6 @@ static void __init realview_pba8_timer_init(void)  	realview_timer_init(IRQ_PBA8_TIMER0_1);  } -static struct sys_timer realview_pba8_timer = { -	.init		= realview_pba8_timer_init, -}; -  static void realview_pba8_restart(char mode, const char *cmd)  {  	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); @@ -308,7 +304,7 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")  	.map_io		= realview_pba8_map_io,  	.init_early	= realview_init_early,  	.init_irq	= gic_init_irq, -	.timer		= &realview_pba8_timer, +	.init_time	= realview_pba8_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= realview_pba8_init,  #ifdef CONFIG_ZONE_DMA diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c index 4f486f05108..a15a7b0be29 100644 --- a/arch/arm/mach-realview/realview_pbx.c +++ b/arch/arm/mach-realview/realview_pbx.c @@ -324,10 +324,6 @@ static void __init realview_pbx_timer_init(void)  	realview_pbx_twd_init();  } -static struct sys_timer realview_pbx_timer = { -	.init		= realview_pbx_timer_init, -}; -  static void realview_pbx_fixup(struct tag *tags, char **from,  			       struct meminfo *meminfo)  { @@ -404,7 +400,7 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")  	.map_io		= realview_pbx_map_io,  	.init_early	= realview_init_early,  	.init_irq	= gic_init_irq, -	.timer		= &realview_pbx_timer, +	.init_time	= realview_pbx_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= realview_pbx_init,  #ifdef CONFIG_ZONE_DMA diff --git a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c index f3fa259ce01..a302cf5e0fc 100644 --- a/arch/arm/mach-rpc/riscpc.c +++ b/arch/arm/mach-rpc/riscpc.c @@ -211,7 +211,7 @@ static void rpc_restart(char mode, const char *cmd)  	soft_restart(0);  } -extern struct sys_timer ioc_timer; +void ioc_timer_init(void);  MACHINE_START(RISCPC, "Acorn-RiscPC")  	/* Maintainer: Russell King */ @@ -220,6 +220,6 @@ MACHINE_START(RISCPC, "Acorn-RiscPC")  	.reserve_lp1	= 1,  	.map_io		= rpc_map_io,  	.init_irq	= rpc_init_irq, -	.timer		= &ioc_timer, +	.init_time	= ioc_timer_init,  	.restart	= rpc_restart,  MACHINE_END diff --git a/arch/arm/mach-rpc/time.c b/arch/arm/mach-rpc/time.c index 581fca934bb..9a6def14df0 100644 --- a/arch/arm/mach-rpc/time.c +++ b/arch/arm/mach-rpc/time.c @@ -24,7 +24,7 @@  #include <asm/mach/time.h> -unsigned long ioc_timer_gettimeoffset(void) +static u32 ioc_timer_gettimeoffset(void)  {  	unsigned int count1, count2, status;  	long offset; @@ -56,7 +56,7 @@ unsigned long ioc_timer_gettimeoffset(void)  	}  	offset = (LATCH - offset) * (tick_nsec / 1000); -	return (offset + LATCH/2) / LATCH; +	return ((offset + LATCH/2) / LATCH) * 1000;  }  void __init ioctime_init(void) @@ -82,14 +82,9 @@ static struct irqaction ioc_timer_irq = {  /*   * Set up timer interrupt.   */ -static void __init ioc_timer_init(void) +void __init ioc_timer_init(void)  { +	arch_gettimeoffset = ioc_timer_gettimeoffset;  	ioctime_init();  	setup_irq(IRQ_TIMER0, &ioc_timer_irq);  } - -struct sys_timer ioc_timer = { -	.init		= ioc_timer_init, -	.offset		= ioc_timer_gettimeoffset, -}; - diff --git a/arch/arm/mach-s3c24xx/mach-amlm5900.c b/arch/arm/mach-s3c24xx/mach-amlm5900.c index f4ad99c1e47..0e0279e7915 100644 --- a/arch/arm/mach-s3c24xx/mach-amlm5900.c +++ b/arch/arm/mach-s3c24xx/mach-amlm5900.c @@ -237,6 +237,6 @@ MACHINE_START(AML_M5900, "AML_M5900")  	.map_io		= amlm5900_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= amlm5900_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-anubis.c b/arch/arm/mach-s3c24xx/mach-anubis.c index 1ee8c463874..85eefab881a 100644 --- a/arch/arm/mach-s3c24xx/mach-anubis.c +++ b/arch/arm/mach-s3c24xx/mach-anubis.c @@ -448,6 +448,6 @@ MACHINE_START(ANUBIS, "Simtec-Anubis")  	.map_io		= anubis_map_io,  	.init_machine	= anubis_init,  	.init_irq	= s3c24xx_init_irq, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-at2440evb.c b/arch/arm/mach-s3c24xx/mach-at2440evb.c index 00381fe5de3..b31c4aa724f 100644 --- a/arch/arm/mach-s3c24xx/mach-at2440evb.c +++ b/arch/arm/mach-s3c24xx/mach-at2440evb.c @@ -210,6 +210,6 @@ MACHINE_START(AT2440EVB, "AT2440EVB")  	.map_io		= at2440evb_map_io,  	.init_machine	= at2440evb_init,  	.init_irq	= s3c24xx_init_irq, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-bast.c b/arch/arm/mach-s3c24xx/mach-bast.c index 6a30ce7e4aa..526964c19dd 100644 --- a/arch/arm/mach-s3c24xx/mach-bast.c +++ b/arch/arm/mach-s3c24xx/mach-bast.c @@ -612,6 +612,6 @@ MACHINE_START(BAST, "Simtec-BAST")  	.map_io		= bast_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= bast_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c index 973b87ca87f..fb5d3b3b53d 100644 --- a/arch/arm/mach-s3c24xx/mach-gta02.c +++ b/arch/arm/mach-s3c24xx/mach-gta02.c @@ -595,6 +595,6 @@ MACHINE_START(NEO1973_GTA02, "GTA02")  	.map_io		= gta02_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= gta02_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-h1940.c b/arch/arm/mach-s3c24xx/mach-h1940.c index b23dd1b106e..2eb09e27c13 100644 --- a/arch/arm/mach-s3c24xx/mach-h1940.c +++ b/arch/arm/mach-s3c24xx/mach-h1940.c @@ -746,6 +746,6 @@ MACHINE_START(H1940, "IPAQ-H1940")  	.reserve	= h1940_reserve,  	.init_irq	= h1940_init_irq,  	.init_machine	= h1940_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-jive.c b/arch/arm/mach-s3c24xx/mach-jive.c index c9954e26b49..d7a17255523 100644 --- a/arch/arm/mach-s3c24xx/mach-jive.c +++ b/arch/arm/mach-s3c24xx/mach-jive.c @@ -661,6 +661,6 @@ MACHINE_START(JIVE, "JIVE")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= jive_map_io,  	.init_machine	= jive_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2412_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c index a31d5b83e5f..2db09ade9b5 100644 --- a/arch/arm/mach-s3c24xx/mach-mini2440.c +++ b/arch/arm/mach-s3c24xx/mach-mini2440.c @@ -688,6 +688,6 @@ MACHINE_START(MINI2440, "MINI2440")  	.map_io		= mini2440_map_io,  	.init_machine	= mini2440_init,  	.init_irq	= s3c24xx_init_irq, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-n30.c b/arch/arm/mach-s3c24xx/mach-n30.c index c53a9bfe141..d9d04b24029 100644 --- a/arch/arm/mach-s3c24xx/mach-n30.c +++ b/arch/arm/mach-s3c24xx/mach-n30.c @@ -589,7 +589,7 @@ MACHINE_START(N30, "Acer-N30")  				Ben Dooks <ben-linux@fluff.org>  	*/  	.atag_offset	= 0x100, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.init_machine	= n30_init,  	.init_irq	= s3c24xx_init_irq,  	.map_io		= n30_map_io, @@ -600,7 +600,7 @@ MACHINE_START(N35, "Acer-N35")  	/* Maintainer: Christer Weinigel <christer@weinigel.se>  	*/  	.atag_offset	= 0x100, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.init_machine	= n30_init,  	.init_irq	= s3c24xx_init_irq,  	.map_io		= n30_map_io, diff --git a/arch/arm/mach-s3c24xx/mach-nexcoder.c b/arch/arm/mach-s3c24xx/mach-nexcoder.c index a2b92b0898e..a454e246186 100644 --- a/arch/arm/mach-s3c24xx/mach-nexcoder.c +++ b/arch/arm/mach-s3c24xx/mach-nexcoder.c @@ -153,6 +153,6 @@ MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")  	.map_io		= nexcoder_map_io,  	.init_machine	= nexcoder_init,  	.init_irq	= s3c24xx_init_irq, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-osiris.c b/arch/arm/mach-s3c24xx/mach-osiris.c index bb36d832bd3..ba0f5b5ec19 100644 --- a/arch/arm/mach-s3c24xx/mach-osiris.c +++ b/arch/arm/mach-s3c24xx/mach-osiris.c @@ -428,6 +428,6 @@ MACHINE_START(OSIRIS, "Simtec-OSIRIS")  	.map_io		= osiris_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= osiris_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-otom.c b/arch/arm/mach-s3c24xx/mach-otom.c index bca39f0232b..e0fdae93aa7 100644 --- a/arch/arm/mach-s3c24xx/mach-otom.c +++ b/arch/arm/mach-s3c24xx/mach-otom.c @@ -118,6 +118,6 @@ MACHINE_START(OTOM, "Nex Vision - Otom 1.1")  	.map_io		= otom11_map_io,  	.init_machine	= otom11_init,  	.init_irq	= s3c24xx_init_irq, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-qt2410.c b/arch/arm/mach-s3c24xx/mach-qt2410.c index 7b6ba13d728..56175f0941b 100644 --- a/arch/arm/mach-s3c24xx/mach-qt2410.c +++ b/arch/arm/mach-s3c24xx/mach-qt2410.c @@ -343,6 +343,6 @@ MACHINE_START(QT2410, "QT2410")  	.map_io		= qt2410_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= qt2410_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-rx1950.c b/arch/arm/mach-s3c24xx/mach-rx1950.c index 0606f2faaa5..e14ec7105a6 100644 --- a/arch/arm/mach-s3c24xx/mach-rx1950.c +++ b/arch/arm/mach-s3c24xx/mach-rx1950.c @@ -814,6 +814,6 @@ MACHINE_START(RX1950, "HP iPAQ RX1950")  	.reserve	= rx1950_reserve,  	.init_irq = s3c24xx_init_irq,  	.init_machine = rx1950_init_machine, -	.timer = &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-rx3715.c b/arch/arm/mach-s3c24xx/mach-rx3715.c index dacbb9a2122..d00caa8de92 100644 --- a/arch/arm/mach-s3c24xx/mach-rx3715.c +++ b/arch/arm/mach-s3c24xx/mach-rx3715.c @@ -212,6 +212,6 @@ MACHINE_START(RX3715, "IPAQ-RX3715")  	.reserve	= rx3715_reserve,  	.init_irq	= rx3715_init_irq,  	.init_machine	= rx3715_init_machine, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-smdk2410.c b/arch/arm/mach-s3c24xx/mach-smdk2410.c index 82796b97cb0..e184bfa9613 100644 --- a/arch/arm/mach-s3c24xx/mach-smdk2410.c +++ b/arch/arm/mach-s3c24xx/mach-smdk2410.c @@ -117,6 +117,6 @@ MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switc  	.map_io		= smdk2410_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= smdk2410_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-smdk2413.c b/arch/arm/mach-s3c24xx/mach-smdk2413.c index ce99fd8bbbc..69f356e8379 100644 --- a/arch/arm/mach-s3c24xx/mach-smdk2413.c +++ b/arch/arm/mach-s3c24xx/mach-smdk2413.c @@ -133,7 +133,7 @@ MACHINE_START(S3C2413, "S3C2413")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= smdk2413_map_io,  	.init_machine	= smdk2413_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2412_restart,  MACHINE_END @@ -145,7 +145,7 @@ MACHINE_START(SMDK2412, "SMDK2412")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= smdk2413_map_io,  	.init_machine	= smdk2413_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2412_restart,  MACHINE_END @@ -157,6 +157,6 @@ MACHINE_START(SMDK2413, "SMDK2413")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= smdk2413_map_io,  	.init_machine	= smdk2413_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2412_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-smdk2416.c b/arch/arm/mach-s3c24xx/mach-smdk2416.c index f30d7fccbfe..fe160c7f4b0 100644 --- a/arch/arm/mach-s3c24xx/mach-smdk2416.c +++ b/arch/arm/mach-s3c24xx/mach-smdk2416.c @@ -254,6 +254,6 @@ MACHINE_START(SMDK2416, "SMDK2416")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= smdk2416_map_io,  	.init_machine	= smdk2416_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2416_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-smdk2440.c b/arch/arm/mach-s3c24xx/mach-smdk2440.c index b7ff882c6ce..a8fdafedc4c 100644 --- a/arch/arm/mach-s3c24xx/mach-smdk2440.c +++ b/arch/arm/mach-s3c24xx/mach-smdk2440.c @@ -182,6 +182,6 @@ MACHINE_START(S3C2440, "SMDK2440")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= smdk2440_map_io,  	.init_machine	= smdk2440_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c244x_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-smdk2443.c b/arch/arm/mach-s3c24xx/mach-smdk2443.c index 2568656f046..7830d700430 100644 --- a/arch/arm/mach-s3c24xx/mach-smdk2443.c +++ b/arch/arm/mach-s3c24xx/mach-smdk2443.c @@ -144,6 +144,6 @@ MACHINE_START(SMDK2443, "SMDK2443")  	.init_irq	= s3c24xx_init_irq,  	.map_io		= smdk2443_map_io,  	.init_machine	= smdk2443_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2443_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-tct_hammer.c b/arch/arm/mach-s3c24xx/mach-tct_hammer.c index 495bf5cf52e..24b3d79e7b2 100644 --- a/arch/arm/mach-s3c24xx/mach-tct_hammer.c +++ b/arch/arm/mach-s3c24xx/mach-tct_hammer.c @@ -149,6 +149,6 @@ MACHINE_START(TCT_HAMMER, "TCT_HAMMER")  	.map_io		= tct_hammer_map_io,  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= tct_hammer_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-vr1000.c b/arch/arm/mach-s3c24xx/mach-vr1000.c index 14d5b12e388..dda21a01e3c 100644 --- a/arch/arm/mach-s3c24xx/mach-vr1000.c +++ b/arch/arm/mach-s3c24xx/mach-vr1000.c @@ -357,6 +357,6 @@ MACHINE_START(VR1000, "Thorcom-VR1000")  	.map_io		= vr1000_map_io,  	.init_machine	= vr1000_init,  	.init_irq	= s3c24xx_init_irq, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2410_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c24xx/mach-vstms.c b/arch/arm/mach-s3c24xx/mach-vstms.c index f1d44ae1183..7fe7d4f6041 100644 --- a/arch/arm/mach-s3c24xx/mach-vstms.c +++ b/arch/arm/mach-s3c24xx/mach-vstms.c @@ -161,6 +161,6 @@ MACHINE_START(VSTMS, "VSTMS")  	.init_irq	= s3c24xx_init_irq,  	.init_machine	= vstms_init,  	.map_io		= vstms_map_io, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c2412_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c index 99e82ac81b6..75cbc67f628 100644 --- a/arch/arm/mach-s3c64xx/mach-anw6410.c +++ b/arch/arm/mach-s3c64xx/mach-anw6410.c @@ -234,6 +234,6 @@ MACHINE_START(ANW6410, "A&W6410")  	.map_io		= anw6410_map_io,  	.init_machine	= anw6410_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index bf6311a28f3..053dbcbeaa7 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c @@ -871,6 +871,6 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")  	.map_io		= crag6410_map_io,  	.init_machine	= crag6410_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c index 2b144893ddc..7e8605d9814 100644 --- a/arch/arm/mach-s3c64xx/mach-hmt.c +++ b/arch/arm/mach-s3c64xx/mach-hmt.c @@ -277,6 +277,6 @@ MACHINE_START(HMT, "Airgoo-HMT")  	.map_io		= hmt_map_io,  	.init_machine	= hmt_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c index 07c349cca33..4f8dc7dff92 100644 --- a/arch/arm/mach-s3c64xx/mach-mini6410.c +++ b/arch/arm/mach-s3c64xx/mach-mini6410.c @@ -356,6 +356,6 @@ MACHINE_START(MINI6410, "MINI6410")  	.map_io		= mini6410_map_io,  	.init_machine	= mini6410_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-ncp.c b/arch/arm/mach-s3c64xx/mach-ncp.c index e5f9a79b535..cdd7f947376 100644 --- a/arch/arm/mach-s3c64xx/mach-ncp.c +++ b/arch/arm/mach-s3c64xx/mach-ncp.c @@ -105,6 +105,6 @@ MACHINE_START(NCP, "NCP")  	.map_io		= ncp_map_io,  	.init_machine	= ncp_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c index 7476f7c722a..b0f61982ef5 100644 --- a/arch/arm/mach-s3c64xx/mach-real6410.c +++ b/arch/arm/mach-s3c64xx/mach-real6410.c @@ -335,6 +335,6 @@ MACHINE_START(REAL6410, "REAL6410")  	.map_io		= real6410_map_io,  	.init_machine	= real6410_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c index 96d6da2b6b5..7a737614717 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq5.c +++ b/arch/arm/mach-s3c64xx/mach-smartq5.c @@ -157,6 +157,6 @@ MACHINE_START(SMARTQ5, "SmartQ 5")  	.map_io		= smartq_map_io,  	.init_machine	= smartq5_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c index 7d1167bdc92..889d525325c 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq7.c +++ b/arch/arm/mach-s3c64xx/mach-smartq7.c @@ -173,6 +173,6 @@ MACHINE_START(SMARTQ7, "SmartQ 7")  	.map_io		= smartq_map_io,  	.init_machine	= smartq7_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-smdk6400.c b/arch/arm/mach-s3c64xx/mach-smdk6400.c index a928fae5694..e31fe5bb37b 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6400.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6400.c @@ -94,6 +94,6 @@ MACHINE_START(SMDK6400, "SMDK6400")  	.map_io		= smdk6400_map_io,  	.init_machine	= smdk6400_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c index 574a9eef588..f1b87cd9cb0 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c @@ -704,6 +704,6 @@ MACHINE_START(SMDK6410, "SMDK6410")  	.map_io		= smdk6410_map_io,  	.init_machine	= smdk6410_machine_init,  	.init_late	= s3c64xx_init_late, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s3c64xx_restart,  MACHINE_END diff --git a/arch/arm/mach-s5p64x0/mach-smdk6440.c b/arch/arm/mach-s5p64x0/mach-smdk6440.c index 1af823558c6..0a3146dc081 100644 --- a/arch/arm/mach-s5p64x0/mach-smdk6440.c +++ b/arch/arm/mach-s5p64x0/mach-smdk6440.c @@ -275,6 +275,6 @@ MACHINE_START(SMDK6440, "SMDK6440")  	.handle_irq	= vic_handle_irq,  	.map_io		= smdk6440_map_io,  	.init_machine	= smdk6440_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.restart	= s5p64x0_restart,  MACHINE_END diff --git a/arch/arm/mach-s5p64x0/mach-smdk6450.c b/arch/arm/mach-s5p64x0/mach-smdk6450.c index 62526ccf6b7..36917f2ea25 100644 --- a/arch/arm/mach-s5p64x0/mach-smdk6450.c +++ b/arch/arm/mach-s5p64x0/mach-smdk6450.c @@ -294,6 +294,6 @@ MACHINE_START(SMDK6450, "SMDK6450")  	.handle_irq	= vic_handle_irq,  	.map_io		= smdk6450_map_io,  	.init_machine	= smdk6450_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.restart	= s5p64x0_restart,  MACHINE_END diff --git a/arch/arm/mach-s5pc100/mach-smdkc100.c b/arch/arm/mach-s5pc100/mach-smdkc100.c index 9abe95e806a..39a9197d174 100644 --- a/arch/arm/mach-s5pc100/mach-smdkc100.c +++ b/arch/arm/mach-s5pc100/mach-smdkc100.c @@ -257,6 +257,6 @@ MACHINE_START(SMDKC100, "SMDKC100")  	.handle_irq	= vic_handle_irq,  	.map_io		= smdkc100_map_io,  	.init_machine	= smdkc100_machine_init, -	.timer		= &s3c24xx_timer, +	.init_time	= s3c24xx_timer_init,  	.restart	= s5pc100_restart,  MACHINE_END diff --git a/arch/arm/mach-s5pv210/mach-aquila.c b/arch/arm/mach-s5pv210/mach-aquila.c index ee9fa5c2ef2..1fb44a5ebb8 100644 --- a/arch/arm/mach-s5pv210/mach-aquila.c +++ b/arch/arm/mach-s5pv210/mach-aquila.c @@ -688,6 +688,6 @@ MACHINE_START(AQUILA, "Aquila")  	.handle_irq	= vic_handle_irq,  	.map_io		= aquila_map_io,  	.init_machine	= aquila_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.restart	= s5pv210_restart,  MACHINE_END diff --git a/arch/arm/mach-s5pv210/mach-goni.c b/arch/arm/mach-s5pv210/mach-goni.c index c72b31078c9..ababdca2b3e 100644 --- a/arch/arm/mach-s5pv210/mach-goni.c +++ b/arch/arm/mach-s5pv210/mach-goni.c @@ -975,7 +975,7 @@ MACHINE_START(GONI, "GONI")  	.handle_irq	= vic_handle_irq,  	.map_io		= goni_map_io,  	.init_machine	= goni_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.reserve	= &goni_reserve,  	.restart	= s5pv210_restart,  MACHINE_END diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c index f1f3bd37ecd..acfb0ebce13 100644 --- a/arch/arm/mach-s5pv210/mach-smdkc110.c +++ b/arch/arm/mach-s5pv210/mach-smdkc110.c @@ -155,7 +155,7 @@ MACHINE_START(SMDKC110, "SMDKC110")  	.handle_irq	= vic_handle_irq,  	.map_io		= smdkc110_map_io,  	.init_machine	= smdkc110_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.restart	= s5pv210_restart,  	.reserve	= &smdkc110_reserve,  MACHINE_END diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c index 6bc8404bf67..e1d820f3b42 100644 --- a/arch/arm/mach-s5pv210/mach-smdkv210.c +++ b/arch/arm/mach-s5pv210/mach-smdkv210.c @@ -331,7 +331,7 @@ MACHINE_START(SMDKV210, "SMDKV210")  	.handle_irq	= vic_handle_irq,  	.map_io		= smdkv210_map_io,  	.init_machine	= smdkv210_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.restart	= s5pv210_restart,  	.reserve	= &smdkv210_reserve,  MACHINE_END diff --git a/arch/arm/mach-s5pv210/mach-torbreck.c b/arch/arm/mach-s5pv210/mach-torbreck.c index 18785cb5e1e..1e6fc6eccdf 100644 --- a/arch/arm/mach-s5pv210/mach-torbreck.c +++ b/arch/arm/mach-s5pv210/mach-torbreck.c @@ -132,6 +132,6 @@ MACHINE_START(TORBRECK, "TORBRECK")  	.handle_irq	= vic_handle_irq,  	.map_io		= torbreck_map_io,  	.init_machine	= torbreck_machine_init, -	.timer		= &s5p_timer, +	.init_time	= s5p_timer_init,  	.restart	= s5pv210_restart,  MACHINE_END diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c index 9a23739f702..b38d2525d5d 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c @@ -621,7 +621,7 @@ MACHINE_START(ASSABET, "Intel-Assabet")  	.map_io		= assabet_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= assabet_init,  	.init_late	= sa11x0_init_late,  #ifdef CONFIG_SA1111 diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index b2dadf3ea3d..63361b6d04e 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c @@ -336,7 +336,7 @@ MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq,  	.init_late	= sa11x0_init_late, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  #ifdef CONFIG_SA1111  	.dma_zone_size	= SZ_1M,  #endif diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c index 304bca4a07c..2d25ececb41 100644 --- a/arch/arm/mach-sa1100/cerf.c +++ b/arch/arm/mach-sa1100/cerf.c @@ -174,7 +174,7 @@ MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")  	.map_io		= cerf_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= cerf_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= cerf_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index 45f424f5fca..612a4568977 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c @@ -399,7 +399,7 @@ MACHINE_START(COLLIE, "Sharp-Collie")  	.map_io		= collie_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= collie_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h index a5b7c13da3e..2abc6a1f6e8 100644 --- a/arch/arm/mach-sa1100/generic.h +++ b/arch/arm/mach-sa1100/generic.h @@ -4,9 +4,7 @@   * Author: Nicolas Pitre   */ -struct sys_timer; - -extern struct sys_timer sa1100_timer; +extern void sa1100_timer_init(void);  extern void __init sa1100_map_io(void);  extern void __init sa1100_init_irq(void);  extern void __init sa1100_init_gpio(void); diff --git a/arch/arm/mach-sa1100/h3100.c b/arch/arm/mach-sa1100/h3100.c index e1571eab08a..b8f2b151539 100644 --- a/arch/arm/mach-sa1100/h3100.c +++ b/arch/arm/mach-sa1100/h3100.c @@ -108,7 +108,7 @@ MACHINE_START(H3100, "Compaq iPAQ H3100")  	.map_io		= h3100_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= h3100_mach_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c index ba7a2901ab8..b8dc5bd2262 100644 --- a/arch/arm/mach-sa1100/h3600.c +++ b/arch/arm/mach-sa1100/h3600.c @@ -158,7 +158,7 @@ MACHINE_START(H3600, "Compaq iPAQ H3600")  	.map_io		= h3600_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= h3600_mach_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c index d005939c41f..643d5f2d9af 100644 --- a/arch/arm/mach-sa1100/hackkit.c +++ b/arch/arm/mach-sa1100/hackkit.c @@ -229,7 +229,7 @@ MACHINE_START(HACKKIT, "HackKit Cpu Board")  	.map_io		= hackkit_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= hackkit_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index 35cfc428b4d..c0b1f5bafae 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c @@ -346,7 +346,7 @@ MACHINE_START(JORNADA720, "HP Jornada 720")  	.map_io		= jornada720_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= jornada720_mach_init,  	.init_late	= sa11x0_init_late,  #ifdef CONFIG_SA1111 diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c index f69f78fc3dd..a8991765388 100644 --- a/arch/arm/mach-sa1100/lart.c +++ b/arch/arm/mach-sa1100/lart.c @@ -174,6 +174,6 @@ MACHINE_START(LART, "LART")  	.init_irq	= sa1100_init_irq,  	.init_machine	= lart_init,  	.init_late	= sa11x0_init_late, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.restart	= sa11x0_restart,  MACHINE_END diff --git a/arch/arm/mach-sa1100/nanoengine.c b/arch/arm/mach-sa1100/nanoengine.c index 102e08f7b10..f1cb3784d52 100644 --- a/arch/arm/mach-sa1100/nanoengine.c +++ b/arch/arm/mach-sa1100/nanoengine.c @@ -110,7 +110,7 @@ MACHINE_START(NANOENGINE, "BSE nanoEngine")  	.map_io		= nanoengine_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= nanoengine_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c index c51bb63f90f..091261878ef 100644 --- a/arch/arm/mach-sa1100/pleb.c +++ b/arch/arm/mach-sa1100/pleb.c @@ -133,7 +133,7 @@ MACHINE_START(PLEB, "PLEB")  	.map_io		= pleb_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine   = pleb_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/shannon.c b/arch/arm/mach-sa1100/shannon.c index 6460d25fbb8..c8866bce738 100644 --- a/arch/arm/mach-sa1100/shannon.c +++ b/arch/arm/mach-sa1100/shannon.c @@ -102,7 +102,7 @@ MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")  	.map_io		= shannon_map_io,  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.init_machine	= shannon_init,  	.init_late	= sa11x0_init_late,  	.restart	= sa11x0_restart, diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c index 6d65f65fcb2..bcbc94540e4 100644 --- a/arch/arm/mach-sa1100/simpad.c +++ b/arch/arm/mach-sa1100/simpad.c @@ -396,6 +396,6 @@ MACHINE_START(SIMPAD, "Simpad")  	.nr_irqs	= SA1100_NR_IRQS,  	.init_irq	= sa1100_init_irq,  	.init_late	= sa11x0_init_late, -	.timer		= &sa1100_timer, +	.init_time	= sa1100_timer_init,  	.restart	= sa11x0_restart,  MACHINE_END diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c index 80702c9ecc7..934db6385cd 100644 --- a/arch/arm/mach-sa1100/time.c +++ b/arch/arm/mach-sa1100/time.c @@ -69,12 +69,45 @@ sa1100_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)  	}  } +#ifdef CONFIG_PM +unsigned long osmr[4], oier; + +static void sa1100_timer_suspend(struct clock_event_device *cedev) +{ +	osmr[0] = readl_relaxed(OSMR0); +	osmr[1] = readl_relaxed(OSMR1); +	osmr[2] = readl_relaxed(OSMR2); +	osmr[3] = readl_relaxed(OSMR3); +	oier = readl_relaxed(OIER); +} + +static void sa1100_timer_resume(struct clock_event_device *cedev) +{ +	writel_relaxed(0x0f, OSSR); +	writel_relaxed(osmr[0], OSMR0); +	writel_relaxed(osmr[1], OSMR1); +	writel_relaxed(osmr[2], OSMR2); +	writel_relaxed(osmr[3], OSMR3); +	writel_relaxed(oier, OIER); + +	/* +	 * OSMR0 is the system timer: make sure OSCR is sufficiently behind +	 */ +	writel_relaxed(OSMR0 - LATCH, OSCR); +} +#else +#define sa1100_timer_suspend NULL +#define sa1100_timer_resume NULL +#endif +  static struct clock_event_device ckevt_sa1100_osmr0 = {  	.name		= "osmr0",  	.features	= CLOCK_EVT_FEAT_ONESHOT,  	.rating		= 200,  	.set_next_event	= sa1100_osmr0_set_next_event,  	.set_mode	= sa1100_osmr0_set_mode, +	.suspend	= sa1100_timer_suspend, +	.resume		= sa1100_timer_resume,  };  static struct irqaction sa1100_timer_irq = { @@ -84,7 +117,7 @@ static struct irqaction sa1100_timer_irq = {  	.dev_id		= &ckevt_sa1100_osmr0,  }; -static void __init sa1100_timer_init(void) +void __init sa1100_timer_init(void)  {  	writel_relaxed(0, OIER);  	writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR); @@ -104,40 +137,3 @@ static void __init sa1100_timer_init(void)  		clocksource_mmio_readl_up);  	clockevents_register_device(&ckevt_sa1100_osmr0);  } - -#ifdef CONFIG_PM -unsigned long osmr[4], oier; - -static void sa1100_timer_suspend(void) -{ -	osmr[0] = readl_relaxed(OSMR0); -	osmr[1] = readl_relaxed(OSMR1); -	osmr[2] = readl_relaxed(OSMR2); -	osmr[3] = readl_relaxed(OSMR3); -	oier = readl_relaxed(OIER); -} - -static void sa1100_timer_resume(void) -{ -	writel_relaxed(0x0f, OSSR); -	writel_relaxed(osmr[0], OSMR0); -	writel_relaxed(osmr[1], OSMR1); -	writel_relaxed(osmr[2], OSMR2); -	writel_relaxed(osmr[3], OSMR3); -	writel_relaxed(oier, OIER); - -	/* -	 * OSMR0 is the system timer: make sure OSCR is sufficiently behind -	 */ -	writel_relaxed(OSMR0 - LATCH, OSCR); -} -#else -#define sa1100_timer_suspend NULL -#define sa1100_timer_resume NULL -#endif - -struct sys_timer sa1100_timer = { -	.init		= sa1100_timer_init, -	.suspend	= sa1100_timer_suspend, -	.resume		= sa1100_timer_resume, -}; diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c index 9ad2e9737fb..b63dec84819 100644 --- a/arch/arm/mach-shark/core.c +++ b/arch/arm/mach-shark/core.c @@ -128,10 +128,6 @@ static void __init shark_timer_init(void)  	setup_irq(IRQ_TIMER, &shark_timer_irq);  } -static struct sys_timer shark_timer = { -	.init		= shark_timer_init, -}; -  static void shark_init_early(void)  {  	disable_hlt(); @@ -142,7 +138,7 @@ MACHINE_START(SHARK, "Shark")  	.atag_offset	= 0x3000,  	.init_early	= shark_init_early,  	.init_irq	= shark_init_irq, -	.timer		= &shark_timer, +	.init_time	= shark_timer_init,  	.dma_zone_size	= SZ_4M,  	.restart	= shark_restart,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index 032d10817e7..d81a66362b7 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c @@ -671,5 +671,5 @@ MACHINE_START(AG5EVM, "ag5evm")  	.handle_irq	= gic_handle_irq,  	.init_machine	= ag5evm_init,  	.init_late	= shmobile_init_late, -	.timer		= &shmobile_timer, +	.init_time	= sh73a0_earlytimer_init,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c index 99ef190d090..c1d4ab63021 100644 --- a/arch/arm/mach-shmobile/board-ap4evb.c +++ b/arch/arm/mach-shmobile/board-ap4evb.c @@ -1350,5 +1350,5 @@ MACHINE_START(AP4EVB, "ap4evb")  	.handle_irq	= shmobile_handle_irq_intc,  	.init_machine	= ap4evb_init,  	.init_late	= sh7372_pm_init_late, -	.timer		= &shmobile_timer, +	.init_time	= sh7372_earlytimer_init,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index 5353adf6b82..e7912447ad5 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c @@ -1192,9 +1192,6 @@ static void __init eva_earlytimer_init(void)  static void __init eva_add_early_devices(void)  {  	r8a7740_add_early_devices(); - -	/* override timer setup with board-specific code */ -	shmobile_timer.init = eva_earlytimer_init;  }  #define RESCNT2 IOMEM(0xe6188020) @@ -1216,7 +1213,7 @@ DT_MACHINE_START(ARMADILLO800EVA_DT, "armadillo800eva")  	.handle_irq	= shmobile_handle_irq_intc,  	.init_machine	= eva_init,  	.init_late	= shmobile_init_late, -	.timer		= &shmobile_timer, +	.init_time	= eva_earlytimer_init,  	.dt_compat	= eva_boards_compat_dt,  	.restart	= eva_restart,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-bonito.c b/arch/arm/mach-shmobile/board-bonito.c index cb8c994e143..331b7ce4edd 100644 --- a/arch/arm/mach-shmobile/board-bonito.c +++ b/arch/arm/mach-shmobile/board-bonito.c @@ -499,9 +499,6 @@ static void __init bonito_earlytimer_init(void)  static void __init bonito_add_early_devices(void)  {  	r8a7740_add_early_devices(); - -	/* override timer setup with board-specific code */ -	shmobile_timer.init = bonito_earlytimer_init;  }  MACHINE_START(BONITO, "bonito") @@ -511,5 +508,5 @@ MACHINE_START(BONITO, "bonito")  	.handle_irq	= shmobile_handle_irq_intc,  	.init_machine	= bonito_init,  	.init_late	= shmobile_init_late, -	.timer		= &shmobile_timer, +	.init_time	= bonito_earlytimer_init,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index bf88f9a8b7a..2f24994f2ef 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c @@ -553,5 +553,5 @@ MACHINE_START(KOTA2, "kota2")  	.handle_irq	= gic_handle_irq,  	.init_machine	= kota2_init,  	.init_late	= shmobile_init_late, -	.timer		= &shmobile_timer, +	.init_time	= sh73a0_earlytimer_init,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-kzm9d.c b/arch/arm/mach-shmobile/board-kzm9d.c index b52bc0d1273..59be864f599 100644 --- a/arch/arm/mach-shmobile/board-kzm9d.c +++ b/arch/arm/mach-shmobile/board-kzm9d.c @@ -92,6 +92,6 @@ DT_MACHINE_START(KZM9D_DT, "kzm9d")  	.handle_irq	= gic_handle_irq,  	.init_machine	= kzm9d_add_standard_devices,  	.init_late	= shmobile_init_late, -	.timer		= &shmobile_timer, +	.init_time	= shmobile_timer_init,  	.dt_compat	= kzm9d_boards_compat_dt,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c index c02448d6847..adb23ef5112 100644 --- a/arch/arm/mach-shmobile/board-kzm9g.c +++ b/arch/arm/mach-shmobile/board-kzm9g.c @@ -795,7 +795,7 @@ DT_MACHINE_START(KZM9G_DT, "kzm9g")  	.handle_irq	= gic_handle_irq,  	.init_machine	= kzm_init,  	.init_late	= shmobile_init_late, -	.timer		= &shmobile_timer, +	.init_time	= sh73a0_earlytimer_init,  	.restart	= kzm9g_restart,  	.dt_compat	= kzm9g_boards_compat_dt,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index 2fed62f6604..fe4917f2c1a 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c @@ -1593,6 +1593,6 @@ DT_MACHINE_START(MACKEREL_DT, "mackerel")  	.handle_irq	= shmobile_handle_irq_intc,  	.init_machine	= mackerel_init,  	.init_late	= sh7372_pm_init_late, -	.timer		= &shmobile_timer, +	.init_time	= sh7372_earlytimer_init,  	.dt_compat  = mackerel_boards_compat_dt,  MACHINE_END diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c index 449f9289567..ca45a0c50af 100644 --- a/arch/arm/mach-shmobile/board-marzen.c +++ b/arch/arm/mach-shmobile/board-marzen.c @@ -385,5 +385,5 @@ MACHINE_START(MARZEN, "marzen")  	.handle_irq	= gic_handle_irq,  	.init_machine	= marzen_init,  	.init_late	= marzen_init_late, -	.timer		= &shmobile_timer, +	.init_time	= r8a7779_earlytimer_init,  MACHINE_END diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h index dfeca79e9e9..a57439eec11 100644 --- a/arch/arm/mach-shmobile/include/mach/common.h +++ b/arch/arm/mach-shmobile/include/mach/common.h @@ -2,7 +2,7 @@  #define __ARCH_MACH_COMMON_H  extern void shmobile_earlytimer_init(void); -extern struct sys_timer shmobile_timer; +extern void shmobile_timer_init(void);  extern void shmobile_setup_delay(unsigned int max_cpu_core_mhz,  			 unsigned int mult, unsigned int div);  struct twd_local_timer; @@ -20,6 +20,7 @@ extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv);  extern void sh7372_init_irq(void);  extern void sh7372_map_io(void); +extern void sh7372_earlytimer_init(void);  extern void sh7372_add_early_devices(void);  extern void sh7372_add_standard_devices(void);  extern void sh7372_clock_init(void); @@ -32,6 +33,7 @@ extern struct clk sh7372_extal2_clk;  extern void sh73a0_init_irq(void);  extern void sh73a0_map_io(void); +extern void sh73a0_earlytimer_init(void);  extern void sh73a0_add_early_devices(void);  extern void sh73a0_add_standard_devices(void);  extern void sh73a0_clock_init(void); @@ -50,6 +52,7 @@ extern void r8a7740_pinmux_init(void);  extern void r8a7779_init_irq(void);  extern void r8a7779_map_io(void); +extern void r8a7779_earlytimer_init(void);  extern void r8a7779_add_early_devices(void);  extern void r8a7779_add_standard_devices(void);  extern void r8a7779_clock_init(void); diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c index a47beeb1828..ea61cb657ac 100644 --- a/arch/arm/mach-shmobile/setup-emev2.c +++ b/arch/arm/mach-shmobile/setup-emev2.c @@ -467,7 +467,7 @@ DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")  	.init_irq	= emev2_init_irq_dt,  	.handle_irq	= gic_handle_irq,  	.init_machine	= emev2_add_standard_devices_dt, -	.timer		= &shmobile_timer, +	.init_time	= shmobile_timer_init,  	.dt_compat	= emev2_boards_compat_dt,  MACHINE_END diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c index 095222469d0..03c69f9979a 100644 --- a/arch/arm/mach-shmobile/setup-r8a7740.c +++ b/arch/arm/mach-shmobile/setup-r8a7740.c @@ -705,12 +705,6 @@ void __init r8a7740_add_standard_devices(void)  	rmobile_add_device_to_domain("A3SP",	&i2c1_device);  } -static void __init r8a7740_earlytimer_init(void) -{ -	r8a7740_clock_init(0); -	shmobile_earlytimer_init(); -} -  void __init r8a7740_add_early_devices(void)  {  	early_platform_add_devices(r8a7740_early_devices, @@ -718,9 +712,6 @@ void __init r8a7740_add_early_devices(void)  	/* setup early console here as well */  	shmobile_setup_console(); - -	/* override timer setup with soc-specific code */ -	shmobile_timer.init = r8a7740_earlytimer_init;  }  #ifdef CONFIG_USE_OF @@ -763,7 +754,7 @@ DT_MACHINE_START(R8A7740_DT, "Generic R8A7740 (Flattened Device Tree)")  	.init_irq	= r8a7740_init_irq,  	.handle_irq	= shmobile_handle_irq_intc,  	.init_machine	= r8a7740_add_standard_devices_dt, -	.timer		= &shmobile_timer, +	.init_time	= shmobile_timer_init,  	.dt_compat	= r8a7740_boards_compat_dt,  MACHINE_END diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c index 7a1ad4f3853..a181ced09e4 100644 --- a/arch/arm/mach-shmobile/setup-r8a7779.c +++ b/arch/arm/mach-shmobile/setup-r8a7779.c @@ -339,7 +339,7 @@ void __init r8a7779_add_standard_devices(void)  /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */  void __init __weak r8a7779_register_twd(void) { } -static void __init r8a7779_earlytimer_init(void) +void __init r8a7779_earlytimer_init(void)  {  	r8a7779_clock_init();  	shmobile_earlytimer_init(); @@ -366,7 +366,4 @@ void __init r8a7779_add_early_devices(void)  	 * As a final step pass earlyprint=sh-sci.2,115200 on the kernel  	 * command line in case of the marzen board.  	 */ - -	/* override timer setup with soc-specific code */ -	shmobile_timer.init = r8a7779_earlytimer_init;  } diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c index c917882424a..191ae72e21b 100644 --- a/arch/arm/mach-shmobile/setup-sh7372.c +++ b/arch/arm/mach-shmobile/setup-sh7372.c @@ -1054,7 +1054,7 @@ void __init sh7372_add_standard_devices(void)  				       ARRAY_SIZE(domain_devices));  } -static void __init sh7372_earlytimer_init(void) +void __init sh7372_earlytimer_init(void)  {  	sh7372_clock_init();  	shmobile_earlytimer_init(); @@ -1067,9 +1067,6 @@ void __init sh7372_add_early_devices(void)  	/* setup early console here as well */  	shmobile_setup_console(); - -	/* override timer setup with soc-specific code */ -	shmobile_timer.init = sh7372_earlytimer_init;  }  #ifdef CONFIG_USE_OF @@ -1113,7 +1110,7 @@ DT_MACHINE_START(SH7372_DT, "Generic SH7372 (Flattened Device Tree)")  	.init_irq	= sh7372_init_irq,  	.handle_irq	= shmobile_handle_irq_intc,  	.init_machine	= sh7372_add_standard_devices_dt, -	.timer		= &shmobile_timer, +	.init_time	= shmobile_timer_init,  	.dt_compat	= sh7372_boards_compat_dt,  MACHINE_END diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c index db99a4ade80..8c2d6424f47 100644 --- a/arch/arm/mach-shmobile/setup-sh73a0.c +++ b/arch/arm/mach-shmobile/setup-sh73a0.c @@ -796,7 +796,7 @@ void __init sh73a0_add_standard_devices(void)  /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */  void __init __weak sh73a0_register_twd(void) { } -static void __init sh73a0_earlytimer_init(void) +void __init sh73a0_earlytimer_init(void)  {  	sh73a0_clock_init();  	shmobile_earlytimer_init(); @@ -810,7 +810,4 @@ void __init sh73a0_add_early_devices(void)  	/* setup early console here as well */  	shmobile_setup_console(); - -	/* override timer setup with soc-specific code */ -	shmobile_timer.init = sh73a0_earlytimer_init;  } diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c index a68919727e2..fdbe54a1155 100644 --- a/arch/arm/mach-shmobile/timer.c +++ b/arch/arm/mach-shmobile/timer.c @@ -60,10 +60,6 @@ void __init shmobile_earlytimer_init(void)  	late_time_init = shmobile_late_time_init;  } -static void __init shmobile_timer_init(void) +void __init shmobile_timer_init(void)  {  } - -struct sys_timer shmobile_timer = { -	.init		= shmobile_timer_init, -}; diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c index 6732924a5fe..b54baea5f80 100644 --- a/arch/arm/mach-socfpga/socfpga.c +++ b/arch/arm/mach-socfpga/socfpga.c @@ -107,7 +107,7 @@ DT_MACHINE_START(SOCFPGA, "Altera SOCFPGA")  	.map_io		= socfpga_map_io,  	.init_irq	= gic_init_irq,  	.handle_irq     = gic_handle_irq, -	.timer		= &dw_apb_timer, +	.init_time	= dw_apb_timer_init,  	.init_machine	= socfpga_cyclone5_init,  	.restart	= socfpga_cyclone5_restart,  	.dt_compat	= altera_dt_match, diff --git a/arch/arm/mach-spear13xx/include/mach/generic.h b/arch/arm/mach-spear13xx/include/mach/generic.h index c33f4d9361b..35e8a007463 100644 --- a/arch/arm/mach-spear13xx/include/mach/generic.h +++ b/arch/arm/mach-spear13xx/include/mach/generic.h @@ -18,7 +18,7 @@  #include <asm/mach/time.h>  /* Add spear13xx structure declarations here */ -extern struct sys_timer spear13xx_timer; +extern void spear13xx_timer_init(void);  extern struct pl022_ssp_controller pl022_plat_data;  extern struct dw_dma_platform_data dmac_plat_data;  extern struct dw_dma_slave cf_dma_priv; diff --git a/arch/arm/mach-spear13xx/spear1310.c b/arch/arm/mach-spear13xx/spear1310.c index 02f4724bb0d..e77d05d4808 100644 --- a/arch/arm/mach-spear13xx/spear1310.c +++ b/arch/arm/mach-spear13xx/spear1310.c @@ -92,7 +92,7 @@ DT_MACHINE_START(SPEAR1310_DT, "ST SPEAr1310 SoC with Flattened Device Tree")  	.map_io		=	spear1310_map_io,  	.init_irq	=	spear13xx_dt_init_irq,  	.handle_irq	=	gic_handle_irq, -	.timer		=	&spear13xx_timer, +	.init_time	=	spear13xx_timer_init,  	.init_machine	=	spear1310_dt_init,  	.restart	=	spear_restart,  	.dt_compat	=	spear1310_dt_board_compat, diff --git a/arch/arm/mach-spear13xx/spear1340.c b/arch/arm/mach-spear13xx/spear1340.c index 081014fb314..ebc25477906 100644 --- a/arch/arm/mach-spear13xx/spear1340.c +++ b/arch/arm/mach-spear13xx/spear1340.c @@ -186,7 +186,7 @@ DT_MACHINE_START(SPEAR1340_DT, "ST SPEAr1340 SoC with Flattened Device Tree")  	.map_io		=	spear13xx_map_io,  	.init_irq	=	spear13xx_dt_init_irq,  	.handle_irq	=	gic_handle_irq, -	.timer		=	&spear13xx_timer, +	.init_time	=	spear13xx_timer_init,  	.init_machine	=	spear1340_dt_init,  	.restart	=	spear_restart,  	.dt_compat	=	spear1340_dt_board_compat, diff --git a/arch/arm/mach-spear13xx/spear13xx.c b/arch/arm/mach-spear13xx/spear13xx.c index c4af775a845..7f7acf775f0 100644 --- a/arch/arm/mach-spear13xx/spear13xx.c +++ b/arch/arm/mach-spear13xx/spear13xx.c @@ -153,7 +153,7 @@ static void __init spear13xx_clk_init(void)  		pr_err("%s: Unknown machine\n", __func__);  } -static void __init spear13xx_timer_init(void) +void __init spear13xx_timer_init(void)  {  	char pclk_name[] = "osc_24m_clk";  	struct clk *gpt_clk, *pclk; @@ -183,10 +183,6 @@ static void __init spear13xx_timer_init(void)  	twd_local_timer_of_register();  } -struct sys_timer spear13xx_timer = { -	.init = spear13xx_timer_init, -}; -  static const struct of_device_id gic_of_match[] __initconst = {  	{ .compatible = "arm,cortex-a9-gic", .data = gic_of_init },  	{ /* Sentinel */ } diff --git a/arch/arm/mach-spear3xx/include/mach/generic.h b/arch/arm/mach-spear3xx/include/mach/generic.h index ce19113ca79..46b8f7e4d38 100644 --- a/arch/arm/mach-spear3xx/include/mach/generic.h +++ b/arch/arm/mach-spear3xx/include/mach/generic.h @@ -22,7 +22,7 @@  #include <asm/mach/map.h>  /* Add spear3xx family device structure declarations here */ -extern struct sys_timer spear3xx_timer; +extern void spear3xx_timer_init(void);  extern struct pl022_ssp_controller pl022_plat_data;  extern struct pl08x_platform_data pl080_plat_data; diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear3xx/spear300.c index a69cbfdb07e..2630efa93f5 100644 --- a/arch/arm/mach-spear3xx/spear300.c +++ b/arch/arm/mach-spear3xx/spear300.c @@ -214,7 +214,7 @@ DT_MACHINE_START(SPEAR300_DT, "ST SPEAr300 SoC with Flattened Device Tree")  	.map_io		=	spear300_map_io,  	.init_irq	=	spear3xx_dt_init_irq,  	.handle_irq	=	vic_handle_irq, -	.timer		=	&spear3xx_timer, +	.init_time	=	spear3xx_timer_init,  	.init_machine	=	spear300_dt_init,  	.restart	=	spear_restart,  	.dt_compat	=	spear300_dt_board_compat, diff --git a/arch/arm/mach-spear3xx/spear310.c b/arch/arm/mach-spear3xx/spear310.c index b963ebb10b5..b6147eaebcd 100644 --- a/arch/arm/mach-spear3xx/spear310.c +++ b/arch/arm/mach-spear3xx/spear310.c @@ -256,7 +256,7 @@ DT_MACHINE_START(SPEAR310_DT, "ST SPEAr310 SoC with Flattened Device Tree")  	.map_io		=	spear310_map_io,  	.init_irq	=	spear3xx_dt_init_irq,  	.handle_irq	=	vic_handle_irq, -	.timer		=	&spear3xx_timer, +	.init_time	=	spear3xx_timer_init,  	.init_machine	=	spear310_dt_init,  	.restart	=	spear_restart,  	.dt_compat	=	spear310_dt_board_compat, diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear3xx/spear320.c index 66e3a0c33e7..53160f713af 100644 --- a/arch/arm/mach-spear3xx/spear320.c +++ b/arch/arm/mach-spear3xx/spear320.c @@ -270,7 +270,7 @@ DT_MACHINE_START(SPEAR320_DT, "ST SPEAr320 SoC with Flattened Device Tree")  	.map_io		=	spear320_map_io,  	.init_irq	=	spear3xx_dt_init_irq,  	.handle_irq	=	vic_handle_irq, -	.timer		=	&spear3xx_timer, +	.init_time	=	spear3xx_timer_init,  	.init_machine	=	spear320_dt_init,  	.restart	=	spear_restart,  	.dt_compat	=	spear320_dt_board_compat, diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c index 38fe95db31a..89f4c58908e 100644 --- a/arch/arm/mach-spear3xx/spear3xx.c +++ b/arch/arm/mach-spear3xx/spear3xx.c @@ -87,7 +87,7 @@ void __init spear3xx_map_io(void)  	iotable_init(spear3xx_io_desc, ARRAY_SIZE(spear3xx_io_desc));  } -static void __init spear3xx_timer_init(void) +void __init spear3xx_timer_init(void)  {  	char pclk_name[] = "pll3_clk";  	struct clk *gpt_clk, *pclk; @@ -116,10 +116,6 @@ static void __init spear3xx_timer_init(void)  	spear_setup_of_timer();  } -struct sys_timer spear3xx_timer = { -	.init = spear3xx_timer_init, -}; -  static const struct of_device_id vic_of_match[] __initconst = {  	{ .compatible = "arm,pl190-vic", .data = vic_of_init, },  	{ .compatible = "st,spear300-shirq", .data = spear300_shirq_of_init, }, diff --git a/arch/arm/mach-spear6xx/spear6xx.c b/arch/arm/mach-spear6xx/spear6xx.c index 5a5a52db252..1f85bc07c6c 100644 --- a/arch/arm/mach-spear6xx/spear6xx.c +++ b/arch/arm/mach-spear6xx/spear6xx.c @@ -374,7 +374,7 @@ void __init spear6xx_map_io(void)  	iotable_init(spear6xx_io_desc, ARRAY_SIZE(spear6xx_io_desc));  } -static void __init spear6xx_timer_init(void) +void __init spear6xx_timer_init(void)  {  	char pclk_name[] = "pll3_clk";  	struct clk *gpt_clk, *pclk; @@ -403,10 +403,6 @@ static void __init spear6xx_timer_init(void)  	spear_setup_of_timer();  } -struct sys_timer spear6xx_timer = { -	.init = spear6xx_timer_init, -}; -  /* Add auxdata to pass platform data */  struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = {  	OF_DEV_AUXDATA("arm,pl080", SPEAR6XX_ICM3_DMA_BASE, NULL, @@ -439,7 +435,7 @@ DT_MACHINE_START(SPEAR600_DT, "ST SPEAr600 (Flattened Device Tree)")  	.map_io		=	spear6xx_map_io,  	.init_irq	=	spear6xx_dt_init_irq,  	.handle_irq	=	vic_handle_irq, -	.timer		=	&spear6xx_timer, +	.init_time	=	spear6xx_timer_init,  	.init_machine	=	spear600_dt_init,  	.restart	=	spear_restart,  	.dt_compat	=	spear600_dt_board_compat, diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c index 734d9cc87f2..3b9956aabf5 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c @@ -203,7 +203,7 @@ DT_MACHINE_START(TEGRA_DT, "nVidia Tegra20 (Flattened Device Tree)")  	.init_early	= tegra20_init_early,  	.init_irq	= tegra_dt_init_irq,  	.handle_irq	= gic_handle_irq, -	.timer		= &tegra_sys_timer, +	.init_time	= tegra_init_timer,  	.init_machine	= tegra_dt_init,  	.init_late	= tegra_dt_init_late,  	.restart	= tegra_assert_system_reset, diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c index 6497d1236b0..381b2f25f0b 100644 --- a/arch/arm/mach-tegra/board-dt-tegra30.c +++ b/arch/arm/mach-tegra/board-dt-tegra30.c @@ -113,7 +113,7 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")  	.init_early	= tegra30_init_early,  	.init_irq	= tegra_dt_init_irq,  	.handle_irq	= gic_handle_irq, -	.timer		= &tegra_sys_timer, +	.init_time	= tegra_init_timer,  	.init_machine	= tegra30_dt_init,  	.init_late	= tegra_init_late,  	.restart	= tegra_assert_system_reset, diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h index 91fbe733a21..744cdd246f6 100644 --- a/arch/arm/mach-tegra/board.h +++ b/arch/arm/mach-tegra/board.h @@ -55,5 +55,5 @@ static inline int harmony_pcie_init(void) { return 0; }  void __init tegra_paz00_wifikill_init(void); -extern struct sys_timer tegra_sys_timer; +extern void tegra_init_timer(void);  #endif diff --git a/arch/arm/mach-tegra/timer.c b/arch/arm/mach-tegra/timer.c index e4863f3e9ee..b0036e519a1 100644 --- a/arch/arm/mach-tegra/timer.c +++ b/arch/arm/mach-tegra/timer.c @@ -168,7 +168,7 @@ static const struct of_device_id rtc_match[] __initconst = {  	{}  }; -static void __init tegra_init_timer(void) +void __init tegra_init_timer(void)  {  	struct device_node *np;  	struct clk *clk; @@ -273,10 +273,6 @@ static void __init tegra_init_timer(void)  	register_persistent_clock(NULL, tegra_read_persistent_clock);  } -struct sys_timer tegra_sys_timer = { -	.init = tegra_init_timer, -}; -  #ifdef CONFIG_PM  static u32 usec_config; diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 4ce77cdc31c..100a8b764da 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c @@ -1780,7 +1780,7 @@ MACHINE_START(U300, "Ericsson AB U335 S335/B335 Prototype Board")  	.nr_irqs	= 0,  	.init_irq	= u300_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &u300_timer, +	.init_time	= u300_timer_init,  	.init_machine	= u300_init_machine,  	.restart	= u300_restart,  MACHINE_END diff --git a/arch/arm/mach-u300/timer.c b/arch/arm/mach-u300/timer.c index 1da10e20e99..d9e73209c9b 100644 --- a/arch/arm/mach-u300/timer.c +++ b/arch/arm/mach-u300/timer.c @@ -349,7 +349,7 @@ static u32 notrace u300_read_sched_clock(void)  /*   * This sets up the system timers, clock source and clock event.   */ -static void __init u300_timer_init(void) +void __init u300_timer_init(void)  {  	struct clk *clk;  	unsigned long rate; @@ -413,11 +413,3 @@ static void __init u300_timer_init(void)  	 * used by hrtimers!  	 */  } - -/* - * Very simple system timer that only register the clock event and - * clock source. - */ -struct sys_timer u300_timer = { -	.init		= u300_timer_init, -}; diff --git a/arch/arm/mach-u300/timer.h b/arch/arm/mach-u300/timer.h index b5e9791762e..d34287bc34f 100644 --- a/arch/arm/mach-u300/timer.h +++ b/arch/arm/mach-u300/timer.h @@ -1 +1 @@ -extern struct sys_timer u300_timer; +extern void u300_timer_init(void); diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index d453522edb0..e1dfa24b4fb 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c @@ -751,7 +751,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")  	.map_io		= u8500_map_io,  	.init_irq	= ux500_init_irq,  	/* we re-use nomadik timer here */ -	.timer		= &ux500_timer, +	.init_time	= ux500_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= mop500_init_machine,  	.init_late	= ux500_init_late, @@ -761,7 +761,7 @@ MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520")  	.atag_offset	= 0x100,  	.map_io		= u8500_map_io,  	.init_irq	= ux500_init_irq, -	.timer		= &ux500_timer, +	.init_time	= ux500_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= mop500_init_machine,  	.init_late	= ux500_init_late, @@ -772,7 +772,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")  	.smp		= smp_ops(ux500_smp_ops),  	.map_io		= u8500_map_io,  	.init_irq	= ux500_init_irq, -	.timer		= &ux500_timer, +	.init_time	= ux500_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= hrefv60_init_machine,  	.init_late	= ux500_init_late, @@ -784,7 +784,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")  	.map_io		= u8500_map_io,  	.init_irq	= ux500_init_irq,  	/* we re-use nomadik timer here */ -	.timer		= &ux500_timer, +	.init_time	= ux500_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= snowball_init_machine,  	.init_late	= NULL, diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 5b286e06474..c1fb38b5ed9 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c @@ -341,7 +341,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)")  	.map_io		= u8500_map_io,  	.init_irq	= ux500_init_irq,  	/* we re-use nomadik timer here */ -	.timer		= &ux500_timer, +	.init_time	= ux500_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= u8500_init_machine,  	.init_late	= NULL, diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h index 6be4c4d2ab8..bddce2b4937 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/include/mach/setup.h @@ -28,8 +28,7 @@ extern struct device *ux500_soc_device_init(const char *soc_id);  struct amba_device;  extern void __init amba_add_devices(struct amba_device *devs[], int num); -struct sys_timer; -extern struct sys_timer ux500_timer; +extern void ux500_timer_init(void);  #define __IO_DEV_DESC(x, sz)	{		\  	.virtual	= IO_ADDRESS(x),	\ diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c index 875309acb02..aa2a78acb59 100644 --- a/arch/arm/mach-ux500/timer.c +++ b/arch/arm/mach-ux500/timer.c @@ -46,7 +46,7 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {  	{ },  }; -static void __init ux500_timer_init(void) +void __init ux500_timer_init(void)  {  	void __iomem *mtu_timer_base;  	void __iomem *prcmu_timer_base; @@ -99,14 +99,3 @@ dt_fail:  	clksrc_dbx500_prcmu_init(prcmu_timer_base);  	ux500_twd_init();  } - -static void ux500_timer_reset(void) -{ -	nmdk_clkevt_reset(); -	nmdk_clksrc_reset(); -} - -struct sys_timer ux500_timer = { -	.init		= ux500_timer_init, -	.resume		= ux500_timer_reset, -}; diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 5d592945036..d5ddc0c77f5 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c @@ -770,7 +770,7 @@ void __init versatile_init(void)  /*   * Set up timer interrupt, and return the current time in seconds.   */ -static void __init versatile_timer_init(void) +void __init versatile_timer_init(void)  {  	u32 val; @@ -797,8 +797,3 @@ static void __init versatile_timer_init(void)  	sp804_clocksource_init(TIMER3_VA_BASE, "timer3");  	sp804_clockevents_init(TIMER0_VA_BASE, IRQ_TIMERINT0_1, "timer0");  } - -struct sys_timer versatile_timer = { -	.init		= versatile_timer_init, -}; - diff --git a/arch/arm/mach-versatile/core.h b/arch/arm/mach-versatile/core.h index 683e60776a8..5c1b87d1da6 100644 --- a/arch/arm/mach-versatile/core.h +++ b/arch/arm/mach-versatile/core.h @@ -29,7 +29,7 @@ extern void __init versatile_init(void);  extern void __init versatile_init_early(void);  extern void __init versatile_init_irq(void);  extern void __init versatile_map_io(void); -extern struct sys_timer versatile_timer; +extern void versatile_timer_init(void);  extern void versatile_restart(char, const char *);  extern unsigned int mmc_status(struct device *dev);  #ifdef CONFIG_OF diff --git a/arch/arm/mach-versatile/versatile_ab.c b/arch/arm/mach-versatile/versatile_ab.c index 98f65493177..187c1da2c4b 100644 --- a/arch/arm/mach-versatile/versatile_ab.c +++ b/arch/arm/mach-versatile/versatile_ab.c @@ -40,7 +40,7 @@ MACHINE_START(VERSATILE_AB, "ARM-Versatile AB")  	.init_early	= versatile_init_early,  	.init_irq	= versatile_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &versatile_timer, +	.init_time	= versatile_timer_init,  	.init_machine	= versatile_init,  	.restart	= versatile_restart,  MACHINE_END diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c index ae5ad3c8f3d..ccf9f8a9206 100644 --- a/arch/arm/mach-versatile/versatile_dt.c +++ b/arch/arm/mach-versatile/versatile_dt.c @@ -47,7 +47,7 @@ DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)")  	.init_early	= versatile_init_early,  	.init_irq	= versatile_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &versatile_timer, +	.init_time	= versatile_timer_init,  	.init_machine	= versatile_dt_init,  	.dt_compat	= versatile_dt_match,  	.restart	= versatile_restart, diff --git a/arch/arm/mach-versatile/versatile_pb.c b/arch/arm/mach-versatile/versatile_pb.c index 19738331bd3..1cabc0aa569 100644 --- a/arch/arm/mach-versatile/versatile_pb.c +++ b/arch/arm/mach-versatile/versatile_pb.c @@ -108,7 +108,7 @@ MACHINE_START(VERSATILE_PB, "ARM-Versatile PB")  	.init_early	= versatile_init_early,  	.init_irq	= versatile_init_irq,  	.handle_irq	= vic_handle_irq, -	.timer		= &versatile_timer, +	.init_time	= versatile_timer_init,  	.init_machine	= versatile_pb_init,  	.restart	= versatile_restart,  MACHINE_END diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c index 011661a6c5c..08bd548ef14 100644 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c @@ -291,10 +291,6 @@ static void __init v2m_timer_init(void)  	v2m_sp804_init(ioremap(V2M_TIMER01, SZ_4K), IRQ_V2M_TIMER0);  } -static struct sys_timer v2m_timer = { -	.init	= v2m_timer_init, -}; -  static void __init v2m_init_early(void)  {  	if (ct_desc->init_early) @@ -376,7 +372,7 @@ MACHINE_START(VEXPRESS, "ARM-Versatile Express")  	.map_io		= v2m_map_io,  	.init_early	= v2m_init_early,  	.init_irq	= v2m_init_irq, -	.timer		= &v2m_timer, +	.init_time	= v2m_timer_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= v2m_init,  	.restart	= vexpress_restart, @@ -468,10 +464,6 @@ static void __init v2m_dt_timer_init(void)  				24000000);  } -static struct sys_timer v2m_dt_timer = { -	.init = v2m_dt_timer_init, -}; -  static const struct of_device_id v2m_dt_bus_match[] __initconst = {  	{ .compatible = "simple-bus", },  	{ .compatible = "arm,amba-bus", }, @@ -498,7 +490,7 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express")  	.map_io		= v2m_dt_map_io,  	.init_early	= v2m_dt_init_early,  	.init_irq	= v2m_dt_init_irq, -	.timer		= &v2m_dt_timer, +	.init_time	= v2m_dt_timer_init,  	.init_machine	= v2m_dt_init,  	.handle_irq	= gic_handle_irq,  	.restart	= vexpress_restart, diff --git a/arch/arm/mach-vt8500/vt8500.c b/arch/arm/mach-vt8500/vt8500.c index 3c66d48ea08..d5b9c6689c9 100644 --- a/arch/arm/mach-vt8500/vt8500.c +++ b/arch/arm/mach-vt8500/vt8500.c @@ -175,10 +175,6 @@ static void __init vt8500_init_irq(void)  	of_irq_init(vt8500_irq_match);  }; -static struct sys_timer vt8500_timer = { -	.init = vt8500_timer_init, -}; -  static const char * const vt8500_dt_compat[] = {  	"via,vt8500",  	"wm,wm8650", @@ -189,7 +185,7 @@ DT_MACHINE_START(WMT_DT, "VIA/Wondermedia SoC (Device Tree Support)")  	.dt_compat	= vt8500_dt_compat,  	.map_io		= vt8500_map_io,  	.init_irq	= vt8500_init_irq, -	.timer		= &vt8500_timer, +	.init_time	= vt8500_timer_init,  	.init_machine	= vt8500_init,  	.restart	= vt8500_restart,  	.handle_irq	= vt8500_handle_irq, diff --git a/arch/arm/mach-w90x900/mach-nuc910evb.c b/arch/arm/mach-w90x900/mach-nuc910evb.c index b4243e4f156..92f1c978f35 100644 --- a/arch/arm/mach-w90x900/mach-nuc910evb.c +++ b/arch/arm/mach-w90x900/mach-nuc910evb.c @@ -37,6 +37,6 @@ MACHINE_START(W90P910EVB, "W90P910EVB")  	.map_io		= nuc910evb_map_io,  	.init_irq	= nuc900_init_irq,  	.init_machine	= nuc910evb_init, -	.timer		= &nuc900_timer, +	.init_time	= nuc900_timer_init,  	.restart	= nuc9xx_restart,  MACHINE_END diff --git a/arch/arm/mach-w90x900/mach-nuc950evb.c b/arch/arm/mach-w90x900/mach-nuc950evb.c index 500fe5932ce..26f7189056e 100644 --- a/arch/arm/mach-w90x900/mach-nuc950evb.c +++ b/arch/arm/mach-w90x900/mach-nuc950evb.c @@ -40,6 +40,6 @@ MACHINE_START(W90P950EVB, "W90P950EVB")  	.map_io		= nuc950evb_map_io,  	.init_irq	= nuc900_init_irq,  	.init_machine	= nuc950evb_init, -	.timer		= &nuc900_timer, +	.init_time	= nuc900_timer_init,  	.restart	= nuc9xx_restart,  MACHINE_END diff --git a/arch/arm/mach-w90x900/mach-nuc960evb.c b/arch/arm/mach-w90x900/mach-nuc960evb.c index cbb3adc3db1..9b4e73fe10e 100644 --- a/arch/arm/mach-w90x900/mach-nuc960evb.c +++ b/arch/arm/mach-w90x900/mach-nuc960evb.c @@ -37,6 +37,6 @@ MACHINE_START(W90N960EVB, "W90N960EVB")  	.map_io		= nuc960evb_map_io,  	.init_irq	= nuc900_init_irq,  	.init_machine	= nuc960evb_init, -	.timer		= &nuc900_timer, +	.init_time	= nuc900_timer_init,  	.restart	= nuc9xx_restart,  MACHINE_END diff --git a/arch/arm/mach-w90x900/nuc9xx.h b/arch/arm/mach-w90x900/nuc9xx.h index 91acb404779..88ef4b26708 100644 --- a/arch/arm/mach-w90x900/nuc9xx.h +++ b/arch/arm/mach-w90x900/nuc9xx.h @@ -15,10 +15,9 @@   *   */  struct map_desc; -struct sys_timer;  /* core initialisation functions */  extern void nuc900_init_irq(void); -extern struct sys_timer nuc900_timer; +extern void nuc900_timer_init(void);  extern void nuc9xx_restart(char, const char *); diff --git a/arch/arm/mach-w90x900/time.c b/arch/arm/mach-w90x900/time.c index fa27c498ac0..d9c3d6b801c 100644 --- a/arch/arm/mach-w90x900/time.c +++ b/arch/arm/mach-w90x900/time.c @@ -167,12 +167,8 @@ static void __init nuc900_clocksource_init(void)  		TDR_SHIFT, clocksource_mmio_readl_down);  } -static void __init nuc900_timer_init(void) +void __init nuc900_timer_init(void)  {  	nuc900_clocksource_init();  	nuc900_clockevents_init();  } - -struct sys_timer nuc900_timer = { -	.init		= nuc900_timer_init, -}; diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c index e16d4bed0f7..2ae4bce652b 100644 --- a/arch/arm/mach-zynq/common.c +++ b/arch/arm/mach-zynq/common.c @@ -93,13 +93,6 @@ static void __init xilinx_zynq_timer_init(void)  	xttcpss_timer_init();  } -/* - * Instantiate and initialize the system timer structure - */ -static struct sys_timer xttcpss_sys_timer = { -	.init		= xilinx_zynq_timer_init, -}; -  /**   * xilinx_map_io() - Create memory mappings needed for early I/O.   */ @@ -120,6 +113,6 @@ MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")  	.init_irq	= xilinx_irq_init,  	.handle_irq	= gic_handle_irq,  	.init_machine	= xilinx_init_machine, -	.timer		= &xttcpss_sys_timer, +	.init_time	= xilinx_zynq_timer_init,  	.dt_compat	= xilinx_dt_match,  MACHINE_END diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h index b69e11dc679..37703ef6dfc 100644 --- a/arch/arm/plat-samsung/include/plat/cpu.h +++ b/arch/arm/plat-samsung/include/plat/cpu.h @@ -194,8 +194,7 @@ extern void s3c24xx_init_uartdevs(char *name,  /* timer for 2410/2440 */ -struct sys_timer; -extern struct sys_timer s3c24xx_timer; +extern void s3c24xx_timer_init(void);  extern struct syscore_ops s3c2410_pm_syscore_ops;  extern struct syscore_ops s3c2412_pm_syscore_ops; diff --git a/arch/arm/plat-samsung/include/plat/s5p-time.h b/arch/arm/plat-samsung/include/plat/s5p-time.h index 3a70aebc920..9c96f3586ce 100644 --- a/arch/arm/plat-samsung/include/plat/s5p-time.h +++ b/arch/arm/plat-samsung/include/plat/s5p-time.h @@ -36,5 +36,5 @@ struct s5p_timer_source {  extern void __init s5p_set_timer_source(enum s5p_timer_mode event,  					enum s5p_timer_mode source); -extern	struct sys_timer s5p_timer; +extern	void s5p_timer_init(void);  #endif /* __ASM_PLAT_S5P_TIME_H */ diff --git a/arch/arm/plat-samsung/s5p-time.c b/arch/arm/plat-samsung/s5p-time.c index 028b6e877eb..dabede46c0e 100644 --- a/arch/arm/plat-samsung/s5p-time.c +++ b/arch/arm/plat-samsung/s5p-time.c @@ -393,13 +393,9 @@ static void __init s5p_timer_resources(void)  	clk_enable(tin_source);  } -static void __init s5p_timer_init(void) +void __init s5p_timer_init(void)  {  	s5p_timer_resources();  	s5p_clockevent_init();  	s5p_clocksource_init();  } - -struct sys_timer s5p_timer = { -	.init		= s5p_timer_init, -}; diff --git a/arch/arm/plat-samsung/time.c b/arch/arm/plat-samsung/time.c index 60552e22f22..73defd00c3e 100644 --- a/arch/arm/plat-samsung/time.c +++ b/arch/arm/plat-samsung/time.c @@ -27,6 +27,7 @@  #include <linux/clk.h>  #include <linux/io.h>  #include <linux/platform_device.h> +#include <linux/syscore_ops.h>  #include <asm/mach-types.h> @@ -95,7 +96,7 @@ static inline unsigned long timer_ticks_to_usec(unsigned long ticks)   * IRQs are disabled before entering here from do_gettimeofday()   */ -static unsigned long s3c2410_gettimeoffset (void) +static u32 s3c2410_gettimeoffset(void)  {  	unsigned long tdone;  	unsigned long tval; @@ -120,7 +121,7 @@ static unsigned long s3c2410_gettimeoffset (void)  			tdone += timer_startval;  	} -	return timer_ticks_to_usec(tdone); +	return timer_ticks_to_usec(tdone) * 1000;  } @@ -271,15 +272,16 @@ static void __init s3c2410_timer_resources(void)  	clk_enable(tin);  } -static void __init s3c2410_timer_init(void) +static struct syscore_ops s3c24xx_syscore_ops = { +	.resume		= s3c2410_timer_setup, +}; + +void __init s3c24xx_timer_init(void)  { +	arch_gettimeoffset = s3c2410_gettimeoffset; +  	s3c2410_timer_resources();  	s3c2410_timer_setup();  	setup_irq(IRQ_TIMER4, &s3c2410_timer_irq); +	register_syscore_ops(&s3c24xx_syscore_ops);  } - -struct sys_timer s3c24xx_timer = { -	.init		= s3c2410_timer_init, -	.offset		= s3c2410_gettimeoffset, -	.resume		= s3c2410_timer_setup -}; diff --git a/arch/blackfin/kernel/time.c b/arch/blackfin/kernel/time.c index 2310b249675..3126b920a4a 100644 --- a/arch/blackfin/kernel/time.c +++ b/arch/blackfin/kernel/time.c @@ -85,7 +85,7 @@ time_sched_init(irqreturn_t(*timer_routine) (int, void *))  /*   * Should return useconds since last timer tick   */ -u32 arch_gettimeoffset(void) +static u32 blackfin_gettimeoffset(void)  {  	unsigned long offset;  	unsigned long clocks_per_jiffy; @@ -141,6 +141,10 @@ void read_persistent_clock(struct timespec *ts)  void __init time_init(void)  { +#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET +	arch_gettimeoffset = blackfin_gettimeoffset; +#endif +  #ifdef CONFIG_RTC_DRV_BFIN  	/* [#2663] hack to filter junk RTC values that would cause  	 * userspace to have to deal with time values greater than diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c index bcffcb6a941..fce7c541d70 100644 --- a/arch/cris/arch-v10/kernel/time.c +++ b/arch/cris/arch-v10/kernel/time.c @@ -55,9 +55,9 @@ unsigned long get_ns_in_jiffie(void)  	return ns;  } -unsigned long do_slow_gettimeoffset(void) +static u32 cris_v10_gettimeoffset(void)  { -	unsigned long count; +	u32 count;  	/* The timer interrupt comes from Etrax timer 0. In order to get  	 * better precision, we check the current value. It might have @@ -65,8 +65,8 @@ unsigned long do_slow_gettimeoffset(void)  	 */  	count = *R_TIMER0_DATA; -	/* Convert timer value to usec */ -	return (TIMER0_DIV - count) * ((NSEC_PER_SEC/1000)/HZ)/TIMER0_DIV; +	/* Convert timer value to nsec */ +	return (TIMER0_DIV - count) * (NSEC_PER_SEC/HZ)/TIMER0_DIV;  }  /* Excerpt from the Etrax100 HSDD about the built-in watchdog: @@ -191,6 +191,8 @@ static struct irqaction irq2  = {  void __init  time_init(void)  {	 +	arch_gettimeoffset = cris_v10_gettimeoffset; +  	/* probe for the RTC and read it if it exists   	 * Before the RTC can be probed the loops_per_usec variable needs   	 * to be initialized to make usleep work. A better value for  diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c index 277ffc459e4..fe6acdabbc8 100644 --- a/arch/cris/kernel/time.c +++ b/arch/cris/kernel/time.c @@ -39,17 +39,6 @@  extern unsigned long loops_per_jiffy; /* init/main.c */  unsigned long loops_per_usec; - -#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET -extern unsigned long do_slow_gettimeoffset(void); -static unsigned long (*do_gettimeoffset)(void) = do_slow_gettimeoffset; - -u32 arch_gettimeoffset(void) -{ -       return do_gettimeoffset() * 1000; -} -#endif -  int set_rtc_mmss(unsigned long nowtime)  {  	D(printk(KERN_DEBUG "set_rtc_mmss(%lu)\n", nowtime)); diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c index 84dd04048db..1a15f81ea1b 100644 --- a/arch/m32r/kernel/time.c +++ b/arch/m32r/kernel/time.c @@ -57,7 +57,7 @@ extern void smp_local_timer_interrupt(void);  static unsigned long latch; -u32 arch_gettimeoffset(void) +static u32 m32r_gettimeoffset(void)  {  	unsigned long  elapsed_time = 0;  /* [us] */ @@ -165,6 +165,8 @@ void read_persistent_clock(struct timespec *ts)  void __init time_init(void)  { +	arch_gettimeoffset = m32r_gettimeoffset; +  #if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \  	|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \  	|| defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index ee01b7a38e5..b819390e29c 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c @@ -95,7 +95,7 @@ static void amiga_sched_init(irq_handler_t handler);  static void amiga_get_model(char *model);  static void amiga_get_hardware_list(struct seq_file *m);  /* amiga specific timer functions */ -static unsigned long amiga_gettimeoffset(void); +static u32 amiga_gettimeoffset(void);  extern void amiga_mksound(unsigned int count, unsigned int ticks);  static void amiga_reset(void);  extern void amiga_init_sound(void); @@ -377,7 +377,7 @@ void __init config_amiga(void)  	mach_init_IRQ        = amiga_init_IRQ;  	mach_get_model       = amiga_get_model;  	mach_get_hardware_list = amiga_get_hardware_list; -	mach_gettimeoffset   = amiga_gettimeoffset; +	arch_gettimeoffset   = amiga_gettimeoffset;  	/*  	 * default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI @@ -482,10 +482,10 @@ static void __init amiga_sched_init(irq_handler_t timer_routine)  #define TICK_SIZE 10000  /* This is always executed with interrupts disabled.  */ -static unsigned long amiga_gettimeoffset(void) +static u32 amiga_gettimeoffset(void)  {  	unsigned short hi, lo, hi2; -	unsigned long ticks, offset = 0; +	u32 ticks, offset = 0;  	/* read CIA B timer A current value */  	hi  = ciab.tahi; @@ -507,7 +507,7 @@ static unsigned long amiga_gettimeoffset(void)  	ticks = jiffy_ticks - ticks;  	ticks = (10000 * ticks) / jiffy_ticks; -	return ticks + offset; +	return (ticks + offset) * 1000;  }  static void amiga_reset(void)  __noreturn; diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index f5565d6eeb8..3ea56b90e71 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c @@ -26,7 +26,7 @@ u_long apollo_model;  extern void dn_sched_init(irq_handler_t handler);  extern void dn_init_IRQ(void); -extern unsigned long dn_gettimeoffset(void); +extern u32 dn_gettimeoffset(void);  extern int dn_dummy_hwclk(int, struct rtc_time *);  extern int dn_dummy_set_clock_mmss(unsigned long);  extern void dn_dummy_reset(void); @@ -151,7 +151,7 @@ void __init config_apollo(void)  	mach_sched_init=dn_sched_init; /* */  	mach_init_IRQ=dn_init_IRQ; -	mach_gettimeoffset   = dn_gettimeoffset; +	arch_gettimeoffset   = dn_gettimeoffset;  	mach_max_dma_address = 0xffffffff;  	mach_hwclk           = dn_dummy_hwclk; /* */  	mach_set_clock_mmss  = dn_dummy_set_clock_mmss; /* */ @@ -203,10 +203,9 @@ void dn_sched_init(irq_handler_t timer_routine)  		pr_err("Couldn't register timer interrupt\n");  } -unsigned long dn_gettimeoffset(void) { - +u32 dn_gettimeoffset(void) +{  	return 0xdeadbeef; -  }  int dn_dummy_hwclk(int op, struct rtc_time *t) { diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c index d8eb32747ac..037c11c9933 100644 --- a/arch/m68k/atari/config.c +++ b/arch/m68k/atari/config.c @@ -74,7 +74,7 @@ static void atari_heartbeat(int on);  /* atari specific timer functions (in time.c) */  extern void atari_sched_init(irq_handler_t); -extern unsigned long atari_gettimeoffset (void); +extern u32 atari_gettimeoffset(void);  extern int atari_mste_hwclk (int, struct rtc_time *);  extern int atari_tt_hwclk (int, struct rtc_time *);  extern int atari_mste_set_clock_mmss (unsigned long); @@ -204,7 +204,7 @@ void __init config_atari(void)  	mach_init_IRQ        = atari_init_IRQ;  	mach_get_model	 = atari_get_model;  	mach_get_hardware_list = atari_get_hardware_list; -	mach_gettimeoffset   = atari_gettimeoffset; +	arch_gettimeoffset   = atari_gettimeoffset;  	mach_reset           = atari_reset;  	mach_max_dma_address = 0xffffff;  #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE) diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c index c0cc68a2c82..da8f981c36d 100644 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c @@ -42,9 +42,9 @@ atari_sched_init(irq_handler_t timer_routine)  #define TICK_SIZE 10000  /* This is always executed with interrupts disabled.  */ -unsigned long atari_gettimeoffset (void) +u32 atari_gettimeoffset(void)  { -  unsigned long ticks, offset = 0; +  u32 ticks, offset = 0;    /* read MFP timer C current value */    ticks = st_mfp.tim_dt_c; @@ -57,7 +57,7 @@ unsigned long atari_gettimeoffset (void)    ticks = INT_TICKS - ticks;    ticks = ticks * 10000L / INT_TICKS; -  return ticks + offset; +  return (ticks + offset) * 1000;  } diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index 0bf850a20ea..8943aa4c18e 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c @@ -38,7 +38,7 @@  static void bvme6000_get_model(char *model);  extern void bvme6000_sched_init(irq_handler_t handler); -extern unsigned long bvme6000_gettimeoffset (void); +extern u32 bvme6000_gettimeoffset(void);  extern int bvme6000_hwclk (int, struct rtc_time *);  extern int bvme6000_set_clock_mmss (unsigned long);  extern void bvme6000_reset (void); @@ -110,7 +110,7 @@ void __init config_bvme6000(void)      mach_max_dma_address = 0xffffffff;      mach_sched_init      = bvme6000_sched_init;      mach_init_IRQ        = bvme6000_init_IRQ; -    mach_gettimeoffset   = bvme6000_gettimeoffset; +    arch_gettimeoffset   = bvme6000_gettimeoffset;      mach_hwclk           = bvme6000_hwclk;      mach_set_clock_mmss	 = bvme6000_set_clock_mmss;      mach_reset		 = bvme6000_reset; @@ -216,13 +216,13 @@ void bvme6000_sched_init (irq_handler_t timer_routine)   * results...   */ -unsigned long bvme6000_gettimeoffset (void) +u32 bvme6000_gettimeoffset(void)  {      volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;      volatile PitRegsPtr pit = (PitRegsPtr)BVME_PIT_BASE;      unsigned char msr = rtc->msr & 0xc0;      unsigned char t1int, t1op; -    unsigned long v = 800000, ov; +    u32 v = 800000, ov;      rtc->msr = 0;	/* Ensure timer registers accessible */ @@ -246,7 +246,7 @@ unsigned long bvme6000_gettimeoffset (void)  	v += 10000;			/* Int pending, + 10ms */      rtc->msr = msr; -    return v; +    return v * 1000;  }  /* diff --git a/arch/m68k/hp300/config.c b/arch/m68k/hp300/config.c index bf16af1edac..b7609f79152 100644 --- a/arch/m68k/hp300/config.c +++ b/arch/m68k/hp300/config.c @@ -251,7 +251,7 @@ void __init config_hp300(void)  	mach_sched_init      = hp300_sched_init;  	mach_init_IRQ        = hp300_init_IRQ;  	mach_get_model       = hp300_get_model; -	mach_gettimeoffset   = hp300_gettimeoffset; +	arch_gettimeoffset   = hp300_gettimeoffset;  	mach_hwclk	     = hp300_hwclk;  	mach_get_ss	     = hp300_get_ss;  	mach_reset           = hp300_reset; diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c index 29a71be9fa5..749543b425a 100644 --- a/arch/m68k/hp300/time.c +++ b/arch/m68k/hp300/time.c @@ -46,7 +46,7 @@ static irqreturn_t hp300_tick(int irq, void *dev_id)  	return vector(irq, NULL);  } -unsigned long hp300_gettimeoffset(void) +u32 hp300_gettimeoffset(void)  {    /* Read current timer 1 value */    unsigned char lsb, msb1, msb2; @@ -59,7 +59,7 @@ unsigned long hp300_gettimeoffset(void)      /* A carry happened while we were reading.  Read it again */      lsb = in_8(CLOCKBASE + 7);    ticks = INTVAL - ((msb2 << 8) | lsb); -  return (USECS_PER_JIFFY * ticks) / INTVAL; +  return ((USECS_PER_JIFFY * ticks) / INTVAL) * 1000;  }  void __init hp300_sched_init(irq_handler_t vector) diff --git a/arch/m68k/hp300/time.h b/arch/m68k/hp300/time.h index 7b98242960d..f5583ec4033 100644 --- a/arch/m68k/hp300/time.h +++ b/arch/m68k/hp300/time.h @@ -1,2 +1,2 @@  extern void hp300_sched_init(irq_handler_t vector); -extern unsigned long hp300_gettimeoffset(void); +extern u32 hp300_gettimeoffset(void); diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h index 825c1c81319..953ca21da8e 100644 --- a/arch/m68k/include/asm/machdep.h +++ b/arch/m68k/include/asm/machdep.h @@ -3,6 +3,7 @@  #include <linux/seq_file.h>  #include <linux/interrupt.h> +#include <linux/time.h>  struct pt_regs;  struct mktime; @@ -16,7 +17,6 @@ extern void (*mach_init_IRQ) (void);  extern void (*mach_get_model) (char *model);  extern void (*mach_get_hardware_list) (struct seq_file *m);  /* machine dependent timer functions */ -extern unsigned long (*mach_gettimeoffset)(void);  extern int (*mach_hwclk)(int, struct rtc_time*);  extern unsigned int (*mach_get_ss)(void);  extern int (*mach_get_rtc_pll)(struct rtc_pll_info *); diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c index d872ce4807c..80cfbe56ea3 100644 --- a/arch/m68k/kernel/setup_mm.c +++ b/arch/m68k/kernel/setup_mm.c @@ -84,7 +84,6 @@ void (*mach_init_IRQ) (void) __initdata = NULL;  void (*mach_get_model) (char *model);  void (*mach_get_hardware_list) (struct seq_file *m);  /* machine dependent timer functions */ -unsigned long (*mach_gettimeoffset) (void);  int (*mach_hwclk) (int, struct rtc_time*);  EXPORT_SYMBOL(mach_hwclk);  int (*mach_set_clock_mmss) (unsigned long); diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index 5d0bcaad2e5..bea6bcf8f9b 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c @@ -80,18 +80,8 @@ void read_persistent_clock(struct timespec *ts)  	}  } -void __init time_init(void) -{ -	mach_sched_init(timer_interrupt); -} -  #ifdef CONFIG_ARCH_USES_GETTIMEOFFSET -u32 arch_gettimeoffset(void) -{ -	return mach_gettimeoffset() * 1000; -} -  static int __init rtc_init(void)  {  	struct platform_device *pdev; @@ -106,3 +96,8 @@ static int __init rtc_init(void)  module_init(rtc_init);  #endif /* CONFIG_ARCH_USES_GETTIMEOFFSET */ + +void __init time_init(void) +{ +	mach_sched_init(timer_interrupt); +} diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index d9f62e0f46c..afb95d5fb26 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c @@ -52,7 +52,7 @@ struct mac_booter_data mac_bi_data;  static unsigned long mac_orig_videoaddr;  /* Mac specific timer functions */ -extern unsigned long mac_gettimeoffset(void); +extern u32 mac_gettimeoffset(void);  extern int mac_hwclk(int, struct rtc_time *);  extern int mac_set_clock_mmss(unsigned long);  extern void iop_preinit(void); @@ -177,7 +177,7 @@ void __init config_mac(void)  	mach_sched_init = mac_sched_init;  	mach_init_IRQ = mac_init_IRQ;  	mach_get_model = mac_get_model; -	mach_gettimeoffset = mac_gettimeoffset; +	arch_gettimeoffset = mac_gettimeoffset;  	mach_hwclk = mac_hwclk;  	mach_set_clock_mmss = mac_set_clock_mmss;  	mach_reset = mac_reset; diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c index 2d85662715f..5d1458bb871 100644 --- a/arch/m68k/mac/via.c +++ b/arch/m68k/mac/via.c @@ -327,7 +327,7 @@ void via_debug_dump(void)   * TBI: get time offset between scheduling timer ticks   */ -unsigned long mac_gettimeoffset (void) +u32 mac_gettimeoffset(void)  {  	unsigned long ticks, offset = 0; @@ -341,7 +341,7 @@ unsigned long mac_gettimeoffset (void)  	ticks = MAC_CLOCK_TICK - ticks;  	ticks = ticks * 10000L / MAC_CLOCK_TICK; -	return ticks + offset; +	return (ticks + offset) * 1000;  }  /* diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index a41c09149e2..1c6262803b9 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c @@ -37,7 +37,7 @@  static void mvme147_get_model(char *model);  extern void mvme147_sched_init(irq_handler_t handler); -extern unsigned long mvme147_gettimeoffset (void); +extern u32 mvme147_gettimeoffset(void);  extern int mvme147_hwclk (int, struct rtc_time *);  extern int mvme147_set_clock_mmss (unsigned long);  extern void mvme147_reset (void); @@ -88,7 +88,7 @@ void __init config_mvme147(void)  	mach_max_dma_address	= 0x01000000;  	mach_sched_init		= mvme147_sched_init;  	mach_init_IRQ		= mvme147_init_IRQ; -	mach_gettimeoffset	= mvme147_gettimeoffset; +	arch_gettimeoffset	= mvme147_gettimeoffset;  	mach_hwclk		= mvme147_hwclk;  	mach_set_clock_mmss	= mvme147_set_clock_mmss;  	mach_reset		= mvme147_reset; @@ -127,7 +127,7 @@ void mvme147_sched_init (irq_handler_t timer_routine)  /* This is always executed with interrupts disabled.  */  /* XXX There are race hazards in this code XXX */ -unsigned long mvme147_gettimeoffset (void) +u32 mvme147_gettimeoffset(void)  {  	volatile unsigned short *cp = (volatile unsigned short *)0xfffe1012;  	unsigned short n; @@ -137,7 +137,7 @@ unsigned long mvme147_gettimeoffset (void)  		n = *cp;  	n -= PCC_TIMER_PRELOAD; -	return (unsigned long)n * 25 / 4; +	return ((unsigned long)n * 25 / 4) * 1000;  }  static int bcd2int (unsigned char b) diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index b6d7d8a7a3d..080a342458a 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c @@ -43,7 +43,7 @@ static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;  static void mvme16x_get_model(char *model);  extern void mvme16x_sched_init(irq_handler_t handler); -extern unsigned long mvme16x_gettimeoffset (void); +extern u32 mvme16x_gettimeoffset(void);  extern int mvme16x_hwclk (int, struct rtc_time *);  extern int mvme16x_set_clock_mmss (unsigned long);  extern void mvme16x_reset (void); @@ -289,7 +289,7 @@ void __init config_mvme16x(void)      mach_max_dma_address = 0xffffffff;      mach_sched_init      = mvme16x_sched_init;      mach_init_IRQ        = mvme16x_init_IRQ; -    mach_gettimeoffset   = mvme16x_gettimeoffset; +    arch_gettimeoffset   = mvme16x_gettimeoffset;      mach_hwclk           = mvme16x_hwclk;      mach_set_clock_mmss	 = mvme16x_set_clock_mmss;      mach_reset		 = mvme16x_reset; @@ -405,9 +405,9 @@ void mvme16x_sched_init (irq_handler_t timer_routine)  /* This is always executed with interrupts disabled.  */ -unsigned long mvme16x_gettimeoffset (void) +u32 mvme16x_gettimeoffset(void)  { -    return (*(volatile unsigned long *)0xfff42008); +    return (*(volatile u32 *)0xfff42008) * 1000;  }  int bcd2int (unsigned char b) diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c index 1adb5b7b0d1..658542b914f 100644 --- a/arch/m68k/q40/config.c +++ b/arch/m68k/q40/config.c @@ -40,7 +40,7 @@ extern void q40_init_IRQ(void);  static void q40_get_model(char *model);  extern void q40_sched_init(irq_handler_t handler); -static unsigned long q40_gettimeoffset(void); +static u32 q40_gettimeoffset(void);  static int q40_hwclk(int, struct rtc_time *);  static unsigned int q40_get_ss(void);  static int q40_set_clock_mmss(unsigned long); @@ -170,7 +170,7 @@ void __init config_q40(void)  	mach_sched_init = q40_sched_init;  	mach_init_IRQ = q40_init_IRQ; -	mach_gettimeoffset = q40_gettimeoffset; +	arch_gettimeoffset = q40_gettimeoffset;  	mach_hwclk = q40_hwclk;  	mach_get_ss = q40_get_ss;  	mach_get_rtc_pll = q40_get_rtc_pll; @@ -204,9 +204,9 @@ int q40_parse_bootinfo(const struct bi_record *rec)  } -static unsigned long q40_gettimeoffset(void) +static u32 q40_gettimeoffset(void)  { -	return 5000 * (ql_ticks != 0); +	return 5000 * (ql_ticks != 0) * 1000;  } diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c index 2ca25bd01a9..f59ec58083f 100644 --- a/arch/m68k/sun3/config.c +++ b/arch/m68k/sun3/config.c @@ -36,7 +36,7 @@  char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; -extern unsigned long sun3_gettimeoffset(void); +extern u32 sun3_gettimeoffset(void);  static void sun3_sched_init(irq_handler_t handler);  extern void sun3_get_model (char* model);  extern int sun3_hwclk(int set, struct rtc_time *t); @@ -141,7 +141,7 @@ void __init config_sun3(void)          mach_sched_init      =  sun3_sched_init;          mach_init_IRQ        =  sun3_init_IRQ;          mach_reset           =  sun3_reboot; -	mach_gettimeoffset   =  sun3_gettimeoffset; +	arch_gettimeoffset   =  sun3_gettimeoffset;  	mach_get_model	     =  sun3_get_model;  	mach_hwclk           =  sun3_hwclk;  	mach_halt	     =  sun3_halt; diff --git a/arch/m68k/sun3/intersil.c b/arch/m68k/sun3/intersil.c index 94fe8016f1f..889829e11f1 100644 --- a/arch/m68k/sun3/intersil.c +++ b/arch/m68k/sun3/intersil.c @@ -23,9 +23,9 @@  #define START_VAL (INTERSIL_RUN | INTERSIL_INT_ENABLE | INTERSIL_24H_MODE)  /* does this need to be implemented? */ -unsigned long sun3_gettimeoffset(void) +u32 sun3_gettimeoffset(void)  { -  return 1; +  return 1000;  } diff --git a/arch/m68k/sun3x/config.c b/arch/m68k/sun3x/config.c index dd306c84d36..0532d64d191 100644 --- a/arch/m68k/sun3x/config.c +++ b/arch/m68k/sun3x/config.c @@ -48,7 +48,7 @@ void __init config_sun3x(void)  	mach_sched_init      = sun3x_sched_init;  	mach_init_IRQ        = sun3_init_IRQ; -	mach_gettimeoffset   = sun3x_gettimeoffset; +	arch_gettimeoffset   = sun3x_gettimeoffset;  	mach_reset           = sun3x_reboot;  	mach_hwclk           = sun3x_hwclk; diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c index 1d0a7248040..c8eb08add6b 100644 --- a/arch/m68k/sun3x/time.c +++ b/arch/m68k/sun3x/time.c @@ -71,7 +71,7 @@ int sun3x_hwclk(int set, struct rtc_time *t)  	return 0;  }  /* Not much we can do here */ -unsigned long sun3x_gettimeoffset (void) +u32 sun3x_gettimeoffset(void)  {      return 0L;  } diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h index 6909e129753..a4f9126be7e 100644 --- a/arch/m68k/sun3x/time.h +++ b/arch/m68k/sun3x/time.h @@ -2,7 +2,7 @@  #define SUN3X_TIME_H  extern int sun3x_hwclk(int set, struct rtc_time *t); -unsigned long sun3x_gettimeoffset (void); +u32 sun3x_gettimeoffset(void);  void sun3x_sched_init(irq_handler_t vector);  struct mostek_dt { diff --git a/drivers/clocksource/bcm2835_timer.c b/drivers/clocksource/bcm2835_timer.c index bc19f12c20c..7f796d8f750 100644 --- a/drivers/clocksource/bcm2835_timer.c +++ b/drivers/clocksource/bcm2835_timer.c @@ -101,7 +101,7 @@ static struct of_device_id bcm2835_time_match[] __initconst = {  	{}  }; -static void __init bcm2835_time_init(void) +void __init bcm2835_timer_init(void)  {  	struct device_node *node;  	void __iomem *base; @@ -155,7 +155,3 @@ static void __init bcm2835_time_init(void)  	pr_info("bcm2835: system timer (irq = %d)\n", irq);  } - -struct sys_timer bcm2835_timer = { -	.init = bcm2835_time_init, -}; diff --git a/drivers/clocksource/dw_apb_timer_of.c b/drivers/clocksource/dw_apb_timer_of.c index f7dba5b79b4..ab09ed3742e 100644 --- a/drivers/clocksource/dw_apb_timer_of.c +++ b/drivers/clocksource/dw_apb_timer_of.c @@ -107,7 +107,7 @@ static const struct of_device_id osctimer_ids[] __initconst = {  	{},  }; -static void __init timer_init(void) +void __init dw_apb_timer_init(void)  {  	struct device_node *event_timer, *source_timer; @@ -125,7 +125,3 @@ static void __init timer_init(void)  	init_sched_clock();  } - -struct sys_timer dw_apb_timer = { -	.init = timer_init, -}; diff --git a/drivers/clocksource/nomadik-mtu.c b/drivers/clocksource/nomadik-mtu.c index 8914c3c1c88..025afc6dd32 100644 --- a/drivers/clocksource/nomadik-mtu.c +++ b/drivers/clocksource/nomadik-mtu.c @@ -134,12 +134,32 @@ static void nmdk_clkevt_mode(enum clock_event_mode mode,  	}  } +void nmdk_clksrc_reset(void) +{ +	/* Disable */ +	writel(0, mtu_base + MTU_CR(0)); + +	/* ClockSource: configure load and background-load, and fire it up */ +	writel(nmdk_cycle, mtu_base + MTU_LR(0)); +	writel(nmdk_cycle, mtu_base + MTU_BGLR(0)); + +	writel(clk_prescale | MTU_CRn_32BITS | MTU_CRn_ENA, +	       mtu_base + MTU_CR(0)); +} + +static void nmdk_clkevt_resume(struct clock_event_device *cedev) +{ +	nmdk_clkevt_reset(); +	nmdk_clksrc_reset(); +} +  static struct clock_event_device nmdk_clkevt = {  	.name		= "mtu_1",  	.features	= CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,  	.rating		= 200,  	.set_mode	= nmdk_clkevt_mode,  	.set_next_event	= nmdk_clkevt_next, +	.resume		= nmdk_clkevt_resume,  };  /* @@ -161,19 +181,6 @@ static struct irqaction nmdk_timer_irq = {  	.dev_id		= &nmdk_clkevt,  }; -void nmdk_clksrc_reset(void) -{ -	/* Disable */ -	writel(0, mtu_base + MTU_CR(0)); - -	/* ClockSource: configure load and background-load, and fire it up */ -	writel(nmdk_cycle, mtu_base + MTU_LR(0)); -	writel(nmdk_cycle, mtu_base + MTU_BGLR(0)); - -	writel(clk_prescale | MTU_CRn_32BITS | MTU_CRn_ENA, -	       mtu_base + MTU_CR(0)); -} -  void __init nmdk_timer_init(void __iomem *base, int irq)  {  	unsigned long rate; diff --git a/drivers/clocksource/sunxi_timer.c b/drivers/clocksource/sunxi_timer.c index 3cd1bd3d7ae..6c2ed56e8b1 100644 --- a/drivers/clocksource/sunxi_timer.c +++ b/drivers/clocksource/sunxi_timer.c @@ -104,7 +104,7 @@ static struct of_device_id sunxi_timer_dt_ids[] = {  	{ }  }; -static void __init sunxi_timer_init(void) +void __init sunxi_timer_init(void)  {  	struct device_node *node;  	unsigned long rate = 0; @@ -165,7 +165,3 @@ static void __init sunxi_timer_init(void)  	clockevents_register_device(&sunxi_clockevent);  } - -struct sys_timer sunxi_timer = { -	.init = sunxi_timer_init, -}; diff --git a/include/linux/bcm2835_timer.h b/include/linux/bcm2835_timer.h index 25680fe0903..ca17aa81700 100644 --- a/include/linux/bcm2835_timer.h +++ b/include/linux/bcm2835_timer.h @@ -17,6 +17,6 @@  #include <asm/mach/time.h> -extern struct sys_timer bcm2835_timer; +extern void bcm2835_timer_init(void);  #endif diff --git a/include/linux/dw_apb_timer.h b/include/linux/dw_apb_timer.h index 1148575fd13..dd755ce2a5e 100644 --- a/include/linux/dw_apb_timer.h +++ b/include/linux/dw_apb_timer.h @@ -53,5 +53,5 @@ void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs);  cycle_t dw_apb_clocksource_read(struct dw_apb_clocksource *dw_cs);  void dw_apb_clocksource_unregister(struct dw_apb_clocksource *dw_cs); -extern struct sys_timer dw_apb_timer; +extern void dw_apb_timer_init(void);  #endif /* __DW_APB_TIMER_H__ */ diff --git a/include/linux/sunxi_timer.h b/include/linux/sunxi_timer.h index b9165bba6e6..18081787e5f 100644 --- a/include/linux/sunxi_timer.h +++ b/include/linux/sunxi_timer.h @@ -19,6 +19,6 @@  #include <asm/mach/time.h> -extern struct sys_timer sunxi_timer; +void sunxi_timer_init(void);  #endif diff --git a/include/linux/time.h b/include/linux/time.h index 4d358e9d10f..05e32a72103 100644 --- a/include/linux/time.h +++ b/include/linux/time.h @@ -142,9 +142,7 @@ void timekeeping_inject_sleeptime(struct timespec *delta);   * finer then tick granular time.   */  #ifdef CONFIG_ARCH_USES_GETTIMEOFFSET -extern u32 arch_gettimeoffset(void); -#else -static inline u32 arch_gettimeoffset(void) { return 0; } +extern u32 (*arch_gettimeoffset)(void);  #endif  extern void do_gettimeofday(struct timeval *tv); diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index cbc6acb0db3..8ed93460158 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -135,6 +135,20 @@ static void tk_setup_internals(struct timekeeper *tk, struct clocksource *clock)  }  /* Timekeeper helper functions. */ + +#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET +u32 (*arch_gettimeoffset)(void); + +u32 get_arch_timeoffset(void) +{ +	if (likely(arch_gettimeoffset)) +		return arch_gettimeoffset(); +	return 0; +} +#else +static inline u32 get_arch_timeoffset(void) { return 0; } +#endif +  static inline s64 timekeeping_get_ns(struct timekeeper *tk)  {  	cycle_t cycle_now, cycle_delta; @@ -151,8 +165,8 @@ static inline s64 timekeeping_get_ns(struct timekeeper *tk)  	nsec = cycle_delta * tk->mult + tk->xtime_nsec;  	nsec >>= tk->shift; -	/* If arch requires, add in gettimeoffset() */ -	return nsec + arch_gettimeoffset(); +	/* If arch requires, add in get_arch_timeoffset() */ +	return nsec + get_arch_timeoffset();  }  static inline s64 timekeeping_get_ns_raw(struct timekeeper *tk) @@ -171,8 +185,8 @@ static inline s64 timekeeping_get_ns_raw(struct timekeeper *tk)  	/* convert delta to nanoseconds. */  	nsec = clocksource_cyc2ns(cycle_delta, clock->mult, clock->shift); -	/* If arch requires, add in gettimeoffset() */ -	return nsec + arch_gettimeoffset(); +	/* If arch requires, add in get_arch_timeoffset() */ +	return nsec + get_arch_timeoffset();  }  static RAW_NOTIFIER_HEAD(pvclock_gtod_chain); @@ -254,8 +268,8 @@ static void timekeeping_forward_now(struct timekeeper *tk)  	tk->xtime_nsec += cycle_delta * tk->mult; -	/* If arch requires, add in gettimeoffset() */ -	tk->xtime_nsec += (u64)arch_gettimeoffset() << tk->shift; +	/* If arch requires, add in get_arch_timeoffset() */ +	tk->xtime_nsec += (u64)get_arch_timeoffset() << tk->shift;  	tk_normalize_xtime(tk);  |