diff options
author | Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> | 2010-04-27 21:01:29 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2010-05-05 14:11:10 -0400 |
commit | 60c3bf3f1215453a4f30f0b91db7fd301d558693 (patch) | |
tree | 14d56bfb91cedb836481b3ab820012f11484235c /arch/arm/mach-omap1/include | |
parent | 1c4da2b737cce57f0c17344cda7f9ba1d206bfa5 (diff) |
OMAP1: Amstrad Delta: add FIQ handler for serial keyboardport interrupt processing
This patch introduces a Fast Interrupt Request (FIQ) handler for Amstrad Delta
(E3) videophone. The handler's purpose is to process interrupts generated by a
GPIO line that a serial keyboard clock hangs off. It collects consecutive bits
into words, pushing them into a buffer, then requests a higher level interrupt
after one or more words are ready for further processing by a keyboard port
driver.
The handler also processes interrupts generated by two other GPIO lines, used
by other on-board supported devices, by simply requesting a higher level
interrupt, that in turn should invoke those device's specific irq handlers.
IRQ12 line, not used by OMAP1510 hardware (described as reserved), has been
choosen as a higher level interrupt source.
Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap1/include')
-rw-r--r-- | arch/arm/mach-omap1/include/mach/ams-delta-fiq.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/arch/arm/mach-omap1/include/mach/ams-delta-fiq.h b/arch/arm/mach-omap1/include/mach/ams-delta-fiq.h new file mode 100644 index 000000000000..8dbe75b7b89f --- /dev/null +++ b/arch/arm/mach-omap1/include/mach/ams-delta-fiq.h | |||
@@ -0,0 +1,72 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-omap1/include/ams-delta-fiq.h | ||
3 | * | ||
4 | * Taken from the original Amstrad modifications to fiq.h | ||
5 | * | ||
6 | * Copyright (c) 2004 Amstrad Plc | ||
7 | * Copyright (c) 2006 Matt Callow | ||
8 | * Copyright (c) 2010 Janusz Krzysztofik | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | #ifndef __AMS_DELTA_FIQ_H | ||
15 | #define __AMS_DELTA_FIQ_H | ||
16 | |||
17 | #include <plat/irqs.h> | ||
18 | |||
19 | /* | ||
20 | * Interrupt number used for passing control from FIQ to IRQ. | ||
21 | * IRQ12, described as reserved, has been selected. | ||
22 | */ | ||
23 | #define INT_DEFERRED_FIQ INT_1510_RES12 | ||
24 | /* | ||
25 | * Base address of an interrupt handler that the INT_DEFERRED_FIQ belongs to. | ||
26 | */ | ||
27 | #if (INT_DEFERRED_FIQ < IH2_BASE) | ||
28 | #define DEFERRED_FIQ_IH_BASE OMAP_IH1_BASE | ||
29 | #else | ||
30 | #define DEFERRED_FIQ_IH_BASE OMAP_IH2_BASE | ||
31 | #endif | ||
32 | |||
33 | /* | ||
34 | * These are the offsets from the begining of the fiq_buffer. They are put here | ||
35 | * since the buffer and header need to be accessed by drivers servicing devices | ||
36 | * which generate GPIO interrupts - e.g. keyboard, modem, hook switch. | ||
37 | */ | ||
38 | #define FIQ_MASK 0 | ||
39 | #define FIQ_STATE 1 | ||
40 | #define FIQ_KEYS_CNT 2 | ||
41 | #define FIQ_TAIL_OFFSET 3 | ||
42 | #define FIQ_HEAD_OFFSET 4 | ||
43 | #define FIQ_BUF_LEN 5 | ||
44 | #define FIQ_KEY 6 | ||
45 | #define FIQ_MISSED_KEYS 7 | ||
46 | #define FIQ_BUFFER_START 8 | ||
47 | #define FIQ_GPIO_INT_MASK 9 | ||
48 | #define FIQ_KEYS_HICNT 10 | ||
49 | #define FIQ_IRQ_PEND 11 | ||
50 | #define FIQ_SIR_CODE_L1 12 | ||
51 | #define IRQ_SIR_CODE_L2 13 | ||
52 | |||
53 | #define FIQ_CNT_INT_00 14 | ||
54 | #define FIQ_CNT_INT_KEY 15 | ||
55 | #define FIQ_CNT_INT_MDM 16 | ||
56 | #define FIQ_CNT_INT_03 17 | ||
57 | #define FIQ_CNT_INT_HSW 18 | ||
58 | #define FIQ_CNT_INT_05 19 | ||
59 | #define FIQ_CNT_INT_06 20 | ||
60 | #define FIQ_CNT_INT_07 21 | ||
61 | #define FIQ_CNT_INT_08 22 | ||
62 | #define FIQ_CNT_INT_09 23 | ||
63 | #define FIQ_CNT_INT_10 24 | ||
64 | #define FIQ_CNT_INT_11 25 | ||
65 | #define FIQ_CNT_INT_12 26 | ||
66 | #define FIQ_CNT_INT_13 27 | ||
67 | #define FIQ_CNT_INT_14 28 | ||
68 | #define FIQ_CNT_INT_15 29 | ||
69 | |||
70 | #define FIQ_CIRC_BUFF 30 /*Start of circular buffer */ | ||
71 | |||
72 | #endif | ||