Root/
1 | /* |
2 | * arch/arm/mach-lh7a40x/time.c |
3 | * |
4 | * Copyright (C) 2004 Logic Product Development |
5 | * |
6 | * This program is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU General Public License |
8 | * version 2 as published by the Free Software Foundation. |
9 | * |
10 | */ |
11 | #include <linux/module.h> |
12 | #include <linux/kernel.h> |
13 | #include <linux/interrupt.h> |
14 | #include <linux/irq.h> |
15 | #include <linux/time.h> |
16 | #include <linux/io.h> |
17 | |
18 | #include <mach/hardware.h> |
19 | #include <asm/irq.h> |
20 | #include <asm/leds.h> |
21 | |
22 | #include <asm/mach/time.h> |
23 | #include "common.h" |
24 | |
25 | #if HZ < 100 |
26 | # define TIMER_CONTROL TIMER_CONTROL2 |
27 | # define TIMER_LOAD TIMER_LOAD2 |
28 | # define TIMER_CONSTANT (508469/HZ) |
29 | # define TIMER_MODE (TIMER_C_ENABLE | TIMER_C_PERIODIC | TIMER_C_508KHZ) |
30 | # define TIMER_EOI TIMER_EOI2 |
31 | # define TIMER_IRQ IRQ_T2UI |
32 | #else |
33 | # define TIMER_CONTROL TIMER_CONTROL3 |
34 | # define TIMER_LOAD TIMER_LOAD3 |
35 | # define TIMER_CONSTANT (3686400/HZ) |
36 | # define TIMER_MODE (TIMER_C_ENABLE | TIMER_C_PERIODIC) |
37 | # define TIMER_EOI TIMER_EOI3 |
38 | # define TIMER_IRQ IRQ_T3UI |
39 | #endif |
40 | |
41 | static irqreturn_t |
42 | lh7a40x_timer_interrupt(int irq, void *dev_id) |
43 | { |
44 | TIMER_EOI = 0; |
45 | timer_tick(); |
46 | |
47 | return IRQ_HANDLED; |
48 | } |
49 | |
50 | static struct irqaction lh7a40x_timer_irq = { |
51 | .name = "LHA740x Timer Tick", |
52 | .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, |
53 | .handler = lh7a40x_timer_interrupt, |
54 | }; |
55 | |
56 | static void __init lh7a40x_timer_init (void) |
57 | { |
58 | /* Stop/disable all timers */ |
59 | TIMER_CONTROL1 = 0; |
60 | TIMER_CONTROL2 = 0; |
61 | TIMER_CONTROL3 = 0; |
62 | |
63 | setup_irq (TIMER_IRQ, &lh7a40x_timer_irq); |
64 | |
65 | TIMER_LOAD = TIMER_CONSTANT; |
66 | TIMER_CONTROL = TIMER_MODE; |
67 | } |
68 | |
69 | struct sys_timer lh7a40x_timer = { |
70 | .init = &lh7a40x_timer_init, |
71 | }; |
72 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9