input 子系统架构分析
文章平均质量分 73
深入分析input子系统,解析数据的上报和读取
dianlong_lee
普通造bug码农一枚。。。
展开
-
linux input子系统 -- 06 解析数据
其实在input_init中有这样的代码static int __init input_proc_init(void){ struct proc_dir_entry *entry; proc_bus_input_dir = proc_mkdir("bus/input", NULL); if (!proc_bus_input_dir) return -ENOMEM; entry = proc_create("devices", 0, proc_bus_input_dir,原创 2021-05-28 17:56:20 · 643 阅读 · 0 评论 -
linux input子系统 -- 05 数据上报
还是以gpio-keys.c为例分析static void gpio_keys_gpio_report_event(struct gpio_button_data *bdata){ const struct gpio_keys_button *button = bdata->button; struct input_dev *input = bdata->input; unsigned int type = button->type ?: EV_KEY; int state原创 2021-05-28 16:06:50 · 1927 阅读 · 0 评论 -
linux input子系统 -- 04 操作input设备
既然要操作一个input设备,那么对应的file_operations是什么?前面文章分析了evdev handler相关的东西,这里要操作的节点也就是/dev/eventX,所以其对应的file_operations就是 evdev_fops先从open函数看起evdev_open()static int evdev_open(struct inode *inode, struct file *file){ struct evdev *evdev = container_of(ino原创 2021-05-27 16:21:57 · 502 阅读 · 0 评论 -
linux input子系统 -- 03 找到正确的handler
handler都有什么?搜索源码drivers/macintosh/mac_hid.c: err = input_register_handler(&mac_hid_emumouse_handler);net/rfkill/input.c: return input_register_handler(&rfkill_handler);drivers/tty/sysrq.c: error = input_register_handler(&sysrq_hand...原创 2021-05-11 21:46:00 · 1197 阅读 · 4 评论 -
linux input子系统 -- 02 注册一个设备
以gpio-key.c开始分析drivers/input/keyboard/gpio_keys.c这里说一下环境:rv1126 linux4.19如果手里没有源码,可以看这里Linux source code (v4.19.111) - Bootlingpio_keys_probe()static int gpio_keys_probe(struct platform_device *pdev){ const struct gpio_keys_platfor.原创 2021-05-04 19:35:42 · 1505 阅读 · 0 评论 -
linux input子系统 -- 01 从简单的框架开始
在实际项目开发中,input子系统用的最多的是按键,以前搞android手机开发的时候,各种sensor及触摸屏都是使用input子系统上报数据。19年的时候,个人笔记中就把input子系统的代码大体看了一遍,也做了系统的笔记。前段时间帮别人分析input驱动发现之前的理解还是有点错误,另外加上发现手里的板子使用adc+input做按键的时候,觉得之前的input分析的并不完善所以这里打算再重新分析一遍。个人理解的input子系统数据上报流程如下:软件框架如下:可以看到.原创 2021-05-04 14:21:25 · 342 阅读 · 0 评论