diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-11-23 21:22:57 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-12-05 20:45:38 -0500 |
commit | 9f5e8eee5cfe1328660c71812d87c2a67bda389f (patch) | |
tree | b016c812709e4cc33496caac213a1315ca0d9e39 /include/asm-sh/push-switch.h | |
parent | 99a596f93be10001c50894bcab69e458a49a3b8c (diff) |
sh: generic push-switch framework.
This adds support for a generic push switch framework. Adaptable for
various switches, including GPIO switches and the push switches commonly
found on Renesas debug boards.
This allows switch states to be trivially reported through sysfs.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh/push-switch.h')
-rw-r--r-- | include/asm-sh/push-switch.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/asm-sh/push-switch.h b/include/asm-sh/push-switch.h new file mode 100644 index 000000000000..dfc6bad567f0 --- /dev/null +++ b/include/asm-sh/push-switch.h | |||
@@ -0,0 +1,28 @@ | |||
1 | #ifndef __ASM_SH_PUSH_SWITCH_H | ||
2 | #define __ASM_SH_PUSH_SWITCH_H | ||
3 | |||
4 | #include <linux/timer.h> | ||
5 | #include <linux/interrupt.h> | ||
6 | #include <linux/workqueue.h> | ||
7 | |||
8 | struct push_switch { | ||
9 | /* switch state */ | ||
10 | unsigned int state:1; | ||
11 | /* debounce timer */ | ||
12 | struct timer_list debounce; | ||
13 | /* workqueue */ | ||
14 | struct work_struct work; | ||
15 | }; | ||
16 | |||
17 | struct push_switch_platform_info { | ||
18 | /* IRQ handler */ | ||
19 | irqreturn_t (*irq_handler)(int irq, void *data); | ||
20 | /* Special IRQ flags */ | ||
21 | unsigned int irq_flags; | ||
22 | /* Bit location of switch */ | ||
23 | unsigned int bit; | ||
24 | /* Symbolic switch name */ | ||
25 | const char *name; | ||
26 | }; | ||
27 | |||
28 | #endif /* __ASM_SH_PUSH_SWITCH_H */ | ||