本工程源码已打包进内核,使用gitee托管:地址
前面一段时间移植好了4.3寸电阻屏,但是显示效果很差,也没有时间去和思路去调整,最近一切安定下来,终于能抽时间继续查漏补缺了。
秉着先易后难的原则,就先把触摸屏的驱动给适配上吧,因为Linux官方提供的内核源码中,已经提供了tsc2007触摸芯片的驱动(偶然瞥见的,巧不巧),而恰好讯为的4.3寸屏幕使用的就是这款芯片。
按照惯例,先在内核源码中找到驱动文件。
在内核目录下,找到:
drivers/input/touchscreen/tsc2007_core.c
文件,内核驱动的一贯套路,先看probe函数,tsc2007_probe中,可以看到从设备树里获取资源。那就完事了,把设备树写好,应该就适配完了。
//设备树的属性值可以在.c文件里看到。
#ifdef CONFIG_OF
static const struct of_device_id tsc2007_of_match[] = {
{
.compatible = "ti,tsc2007" },
{
/* sentinel */ }
};
MODULE_DEVICE_TABLE(of, tsc2007_of_match);
#endif
一般内核提供了驱动文件的话,也会配套设备树的实例,跟着简单修改一下应该就能用了,在文档目录里找到了。
Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt
这个文本文件里,比较详细地描述了tsc2007设备树的必须属性,还给了一个例子,我们按照例子修改即可。
Example:
&i2c1 {
/* ... */
tsc2007@49 {
compatible = "ti,tsc2007";
reg = <0x49>;
interrupt-parent = <&gpio4>;
interrupts = <0x0 0x8>;
gpios = <&gpio4 0 0>;
ti,x-plate-ohms = <180>;
};
/* ... */
};
修改后:
讯为的tsc2007芯片接的是I2c7,将设备挂载到I2c7下即可。
&i2c_7 {
samsung,i2