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 #include <linux/platform_device.h>
8 
9 struct push_switch {
10 	/* switch state */
11 	unsigned int		state:1;
12 	/* debounce timer */
13 	struct timer_list	debounce;
14 	/* workqueue */
15 	struct work_struct	work;
16 	/* platform device, for workqueue handler */
17 	struct platform_device	*pdev;
18 };
19 
20 struct push_switch_platform_info {
21 	/* IRQ handler */
22 	irqreturn_t		(*irq_handler)(int irq, void *data);
23 	/* Special IRQ flags */
24 	unsigned int		irq_flags;
25 	/* Bit location of switch */
26 	unsigned int		bit;
27 	/* Symbolic switch name */
28 	const char		*name;
29 };
30 
31 #endif /* __ASM_SH_PUSH_SWITCH_H */
32