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