一、兼容两个触摸屏驱动
一个是2046,一个是21023;一个是单点,一个是两点触控。
目标:在编译时同时加上这两个驱动。
由于这两个驱动在硬件上同时连接到一个硬件中断脚,软件上都注册为中断号为7的中断,而项目在贴片时是二选一,所以编译版本时也只是只编译其中之一。
修改包括:
·同时编译2046和21023。
·通过侦测21023,如果存在则将其注册7号中断并且对2046不做初始化,否则注册2046为7号中断并且跳过对21023的最后初始化(注册中断和input子系统)。
·21023先于2046加载。因为要对21023侦测并作为2046加载的判断条件,因此21023必须先于2046加载。只需在Makefile里将21023.o的位置写在2046.o的前面,便可以使21023.o的链接地址先于2046.o。这里只是保证module的init函数加载顺序。
·i2c先于spi加载。21023用的是i2c,2046用的是spi,在各自的probe函数里,都做了如内存分配,input子系统初始化,timer的建立,中断申请等操作。还是侦测21023的需要,因此程序必须先跑21023。而同样还是保证i2c的链接地址先于spi,在driver下的Makefile调整一下i2c和spi的位置,保证i2c总线下的驱动首先得到初始化。
就这样了,同时编译两个驱动,版本的控制上更方便了。