1 /* 2 * Dummy local timer 3 * 4 * Copyright (C) 2008 Paul Mundt 5 * 6 * cloned from: 7 * 8 * linux/arch/arm/mach-realview/localtimer.c 9 * 10 * Copyright (C) 2002 ARM Ltd. 11 * All Rights Reserved 12 * 13 * This program is free software; you can redistribute it and/or modify 14 * it under the terms of the GNU General Public License version 2 as 15 * published by the Free Software Foundation. 16 */ 17 #include <linux/init.h> 18 #include <linux/kernel.h> 19 #include <linux/delay.h> 20 #include <linux/device.h> 21 #include <linux/smp.h> 22 #include <linux/jiffies.h> 23 #include <linux/percpu.h> 24 #include <linux/clockchips.h> 25 #include <linux/hardirq.h> 26 #include <linux/irq.h> 27 28 static DEFINE_PER_CPU(struct clock_event_device, local_clockevent); 29 30 /* 31 * Used on SMP for either the local timer or SMP_MSG_TIMER 32 */ local_timer_interrupt(void)33void local_timer_interrupt(void) 34 { 35 struct clock_event_device *clk = this_cpu_ptr(&local_clockevent); 36 37 irq_enter(); 38 clk->event_handler(clk); 39 irq_exit(); 40 } 41 local_timer_setup(unsigned int cpu)42void local_timer_setup(unsigned int cpu) 43 { 44 struct clock_event_device *clk = &per_cpu(local_clockevent, cpu); 45 46 clk->name = "dummy_timer"; 47 clk->features = CLOCK_EVT_FEAT_ONESHOT | 48 CLOCK_EVT_FEAT_PERIODIC | 49 CLOCK_EVT_FEAT_DUMMY; 50 clk->rating = 400; 51 clk->mult = 1; 52 clk->broadcast = smp_timer_broadcast; 53 clk->cpumask = cpumask_of(cpu); 54 55 clockevents_register_device(clk); 56 } 57 local_timer_stop(unsigned int cpu)58void local_timer_stop(unsigned int cpu) 59 { 60 } 61