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 42static void dummy_timer_set_mode(enum clock_event_mode mode, 43 struct clock_event_device *clk) 44{ 45} 46 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 64void local_timer_stop(unsigned int cpu) 65{ 66} 67