Android 驱动之 jogball 详解
2010-03-17 16:15:00 来源:WEB开发网struct gpio_event_info **info;/*gpio_event的结构指针*/
size_t info_count;/*注册到axis中的info 结构体的数量*/
int (*power)(const struct gpio_event_platform_data *pdata, bool on);/*电源管理回调函数*/
};
5 代码分析
5.1 通用代码
driver/input/misc/gpio_event.c
/*gpio_event基本数据结构*/
struct gpio_event {
struct input_dev *input_dev;
const struct gpio_event_platform_data *info;
struct early_suspend early_suspend;
void *state[0];
};
/*注册给input的回调函数*/
static int gpio_input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
/*调用下层给的回调函数来实现具体的注册*/
static int gpio_event_call_all_func(struct gpio_event *ip, int func)
/*电源管理*/
#ifdef CONFIG_HAS_EARLYSUSPEND
void gpio_event_suspend(struct early_suspend *h)
void gpio_event_resume(struct early_suspend *h)
#endif
/*注册*/
static int __init gpio_event_probe(struct platform_device *pdev)
/*注销*/
static int gpio_event_remove(struct platform_device *pdev)
static struct platform_driver gpio_event_driver
static int __devinit gpio_event_init(void)
static void __exit gpio_event_exit(void)
gpio_event.c:主要是gpio_event子系统的框架
5.2 soc代码
driver/input/misc/gpio_axis.c
struct gpio_axis_state {
struct input_dev *input_dev;/*input设备结构*/
struct gpio_event_axis_info *info; /*坐标系数据结构*/
uint32_t pos; /*位置*/
struct hrtimer emc_hrtimer_delay; /* 延时时间*/
atomic_t atomic_emc_hrtimer_is_run; /*延时的原子变量*/
};
/*上报input数据*/
static void gpio_event_update_axis(struct gpio_axis_state *as, int
更多精彩
赞助商链接