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