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 28static 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 */ 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 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 58void local_timer_stop(unsigned int cpu) 59{ 60} 61