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