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
10struct 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
21struct 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