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