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 9struct 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 20struct 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