diff options
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/irq.c | 10 | ||||
| -rw-r--r-- | arch/arm/kernel/smp.c | 3 | ||||
| -rw-r--r-- | arch/arm/kernel/smp_twd.c | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/time.c | 53 | 
4 files changed, 13 insertions, 54 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 896165096d6..8e4ef4c83a7 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -117,6 +117,16 @@ void __init init_IRQ(void)  	machine_desc->init_irq();  } +#ifdef CONFIG_MULTI_IRQ_HANDLER +void __init set_handle_irq(void (*handle_irq)(struct pt_regs *)) +{ +	if (handle_arch_irq) +		return; + +	handle_arch_irq = handle_irq; +} +#endif +  #ifdef CONFIG_SPARSE_IRQ  int __init arch_probe_nr_irqs(void)  { diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 365c8d92e2e..60340fa561d 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -401,7 +401,8 @@ static void (*smp_cross_call)(const struct cpumask *, unsigned int);  void __init set_smp_cross_call(void (*fn)(const struct cpumask *, unsigned int))  { -	smp_cross_call = fn; +	if (!smp_cross_call) +		smp_cross_call = fn;  }  void arch_send_call_function_ipi_mask(const struct cpumask *mask) diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index ae0c7bb39ae..c092115d903 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c @@ -24,7 +24,6 @@  #include <asm/smp_twd.h>  #include <asm/localtimer.h> -#include <asm/hardware/gic.h>  /* set up by the platform code */  static void __iomem *twd_base; 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();  } -  |