diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2009-05-22 00:29:37 -0400 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2009-05-22 00:29:37 -0400 |
| commit | 5f8371cec93b94a24a55ba1de642ce6eade6d62c (patch) | |
| tree | 61b6d2acb10226b3c0f2d31bda3a49288e540eba /arch/sh/kernel/localtimer.c | |
| parent | 8e9bb19ef97d6594e735bee64b6d72103e350854 (diff) | |
| parent | d8586ba6e1415150e1bab89f0a05447bb6f2d6d5 (diff) | |
Merge branches 'sh/stable-updates' and 'sh/sparseirq'
Diffstat (limited to 'arch/sh/kernel/localtimer.c')
| -rw-r--r-- | arch/sh/kernel/localtimer.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/arch/sh/kernel/localtimer.c b/arch/sh/kernel/localtimer.c new file mode 100644 index 000000000000..96e8eaea1e62 --- /dev/null +++ b/arch/sh/kernel/localtimer.c | |||
| @@ -0,0 +1,57 @@ | |||
| 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/irq.h> | ||
| 26 | |||
| 27 | static DEFINE_PER_CPU(struct clock_event_device, local_clockevent); | ||
| 28 | |||
| 29 | /* | ||
| 30 | * Used on SMP for either the local timer or SMP_MSG_TIMER | ||
| 31 | */ | ||
| 32 | void local_timer_interrupt(void) | ||
| 33 | { | ||
| 34 | struct clock_event_device *clk = &__get_cpu_var(local_clockevent); | ||
| 35 | |||
| 36 | clk->event_handler(clk); | ||
| 37 | } | ||
| 38 | |||
| 39 | static void dummy_timer_set_mode(enum clock_event_mode mode, | ||
| 40 | struct clock_event_device *clk) | ||
| 41 | { | ||
| 42 | } | ||
| 43 | |||
| 44 | void __cpuinit local_timer_setup(unsigned int cpu) | ||
| 45 | { | ||
| 46 | struct clock_event_device *clk = &per_cpu(local_clockevent, cpu); | ||
| 47 | |||
| 48 | clk->name = "dummy_timer"; | ||
| 49 | clk->features = CLOCK_EVT_FEAT_DUMMY; | ||
| 50 | clk->rating = 200; | ||
| 51 | clk->mult = 1; | ||
| 52 | clk->set_mode = dummy_timer_set_mode; | ||
| 53 | clk->broadcast = smp_timer_broadcast; | ||
| 54 | clk->cpumask = cpumask_of(cpu); | ||
| 55 | |||
| 56 | clockevents_register_device(clk); | ||
| 57 | } | ||
