| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef __ASM_SH_PUSH_SWITCH_H | |
| #define __ASM_SH_PUSH_SWITCH_H | |
| #include <linux/timer.h> | |
| #include <linux/interrupt.h> | |
| #include <linux/workqueue.h> | |
| #include <linux/platform_device.h> | |
| struct push_switch { | |
| /* switch state */ | |
| unsigned int state:1; | |
| /* debounce timer */ | |
| struct timer_list debounce; | |
| /* workqueue */ | |
| struct work_struct work; | |
| /* platform device, for workqueue handler */ | |
| struct platform_device *pdev; | |
| }; | |
| struct push_switch_platform_info { | |
| /* IRQ handler */ | |
| irqreturn_t (*irq_handler)(int irq, void *data); | |
| /* Special IRQ flags */ | |
| unsigned int irq_flags; | |
| /* Bit location of switch */ | |
| unsigned int bit; | |
| /* Symbolic switch name */ | |
| const char *name; | |
| }; | |
| #endif /* __ASM_SH_PUSH_SWITCH_H */ |