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