美文网首页
platform设备驱动框架和input子系统的疑点

platform设备驱动框架和input子系统的疑点

作者: tzlf | 来源:发表于2020-04-07 16:46 被阅读0次

    platform设备驱动框架和input子系统

    platform设备驱动框架分为driver和device,其中device为硬件参数,可代码写,也可配置DeviceTree由系统解析生成

    input子系统分为driver,core,handler

    driver层:调用input_register_device注册驱动

    input_register_device(struct input_dev *dev)

    input_dev 包含了参数,跟handler层的input_register_handler匹配

    一般都会注册中断函数request_threaded_irq,发生中断后调用input_report_XXX上报事件到core层,最后调用input_sync结束本次事件

    core层:\drivers\input\input.c。负责匹配driver(input_dev )和handler(input_handler),把driver的事件中转到handler

    这里需要吐槽的是还有结构input_handle,保存了每一对input_dev和input_handler,这个结构体应该改个名,比如binder

    有两个static链表分表索引input_dev和input_handler

    static LIST_HEAD(input_dev_list);

    static LIST_HEAD(input_handler_list);

    handler层:调用input_register_handler注册input_register_handler

    input_register_handler(struct input_handler *handler)

    input_handler里面包含了各个函数指针,包括事件处理event,跟driver匹配回调connect等

    在connect回调函数中一般调用cdev_init,cdev_add,device_add。此时会在/dev下创建字符设备节点,暴露给用户程序。而用户程序打开/dev下的文件后回调cdev_init注册的file_operations,在read该文件一般会阻塞直到driver层发生中断后通知事件发生唤醒。

    同时还会调用input_register_handle,通知core层将input_dev 和input_handler绑定。

    开始学了platform框架,后看了input子系统。结果有点分不清两者的区别,现在明了两者是可以一起使用的,input子系统也可以跟其他框架如i2c配合使用。

    相关文章

      网友评论

          本文标题:platform设备驱动框架和input子系统的疑点

          本文链接:https://www.haomeiwen.com/subject/hxeinctx.html