在的基础上今天主要是理解Touch的驅动。
下面是其中的一部分log的截图
在init函数中,会调用函数synaptics_rmi4_bus_init()这个函数的原型在synaptics_dsx_i2c.c中。这个函数很简单可以根据函数名大致猜测出就是注冊i2c的驱动。实际上也可以看成是一个全新的驱动,驱动的类型的i2c之后依旧跑的是通文件中的synaptics_rmi4_i2c_probe函数。这个probe函数相对来说比较复杂这个函数做的事情比较多。包括分配一些内存分析设备树(parse_dt),并且在最后调用platform_device_register函数注册一个设备
3.suspend函数为什么注释掉了?
suspend的意思是挂起掛起一般是为了省电。在学习的源码也就是synaptics_dsx_core.c中发现没有调用suspend函数,并且将原来的函数注释掉了后来发现,是改写了suspend并且使用了EXPORT_SYMBOL(fun_name)嘚形式将函数放出去被别的文件调用了。也就是说并不是没有suspend,而是可能因为一些时序的原因放在别的驱动中去挂起了
4.为什么会有很哆的report?
*fhandler;)然后用了下面的代码进行赋值。至于这个代码的具体含义老实说,我看不懂~~
5.对应于不同的手势(c,z等形状)是怎么处理的?
首先不同的手势,是根据读取寄存器的值得到的两个值gesture_type gesture_alphabet,这两个值会作为不同手势的选择条件但是这个只是必要条件,归根结底还是要看Touch识别出来的姿势的实际上,在驱动中只是单纯地报key,不同的手势只是key的值不一样其处理方法是一样的。在上层可以做相应的处理比如打开某个特定的APP或者实現其他功能。
总结:自己学习的效率实在是低下需要整顿。