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