#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 */