|  | /* | 
|  | * Dummy local timer | 
|  | * | 
|  | * Copyright (C) 2008  Paul Mundt | 
|  | * | 
|  | * cloned from: | 
|  | * | 
|  | *  linux/arch/arm/mach-realview/localtimer.c | 
|  | * | 
|  | *  Copyright (C) 2002 ARM Ltd. | 
|  | *  All Rights Reserved | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or modify | 
|  | * it under the terms of the GNU General Public License version 2 as | 
|  | * published by the Free Software Foundation. | 
|  | */ | 
|  | #include <linux/init.h> | 
|  | #include <linux/kernel.h> | 
|  | #include <linux/delay.h> | 
|  | #include <linux/device.h> | 
|  | #include <linux/smp.h> | 
|  | #include <linux/jiffies.h> | 
|  | #include <linux/percpu.h> | 
|  | #include <linux/clockchips.h> | 
|  | #include <linux/irq.h> | 
|  |  | 
|  | static DEFINE_PER_CPU(struct clock_event_device, local_clockevent); | 
|  |  | 
|  | /* | 
|  | * Used on SMP for either the local timer or SMP_MSG_TIMER | 
|  | */ | 
|  | void local_timer_interrupt(void) | 
|  | { | 
|  | struct clock_event_device *clk = &__get_cpu_var(local_clockevent); | 
|  |  | 
|  | clk->event_handler(clk); | 
|  | } | 
|  |  | 
|  | static void dummy_timer_set_mode(enum clock_event_mode mode, | 
|  | struct clock_event_device *clk) | 
|  | { | 
|  | } | 
|  |  | 
|  | void __cpuinit local_timer_setup(unsigned int cpu) | 
|  | { | 
|  | struct clock_event_device *clk = &per_cpu(local_clockevent, cpu); | 
|  |  | 
|  | clk->name		= "dummy_timer"; | 
|  | clk->features		= CLOCK_EVT_FEAT_DUMMY; | 
|  | clk->rating		= 200; | 
|  | clk->mult		= 1; | 
|  | clk->set_mode		= dummy_timer_set_mode; | 
|  | clk->broadcast		= smp_timer_broadcast; | 
|  | clk->cpumask		= cpumask_of(cpu); | 
|  |  | 
|  | clockevents_register_device(clk); | 
|  | } |