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 dummy_timer_set_mode(enum clock_event_mode mode,struct clock_event_device * clk)42static void dummy_timer_set_mode(enum clock_event_mode mode, 43 struct clock_event_device *clk) 44 { 45 } 46 local_timer_setup(unsigned int cpu)47void local_timer_setup(unsigned int cpu) 48 { 49 struct clock_event_device *clk = &per_cpu(local_clockevent, cpu); 50 51 clk->name = "dummy_timer"; 52 clk->features = CLOCK_EVT_FEAT_ONESHOT | 53 CLOCK_EVT_FEAT_PERIODIC | 54 CLOCK_EVT_FEAT_DUMMY; 55 clk->rating = 400; 56 clk->mult = 1; 57 clk->set_mode = dummy_timer_set_mode; 58 clk->broadcast = smp_timer_broadcast; 59 clk->cpumask = cpumask_of(cpu); 60 61 clockevents_register_device(clk); 62 } 63 local_timer_stop(unsigned int cpu)64void local_timer_stop(unsigned int cpu) 65 { 66 } 67