RK平台TP驱动移植(FT6336U)并将竖屏触摸改成横屏触摸

RK平台TP驱动移植(FT6336U)并将竖屏触摸改成横屏触摸

最近要移植一个TP驱动,找了一个TP厂商拿了样品,TP厂商给了一个FT6336U的驱动,里面还有一个高通平台的移植文档,但高通平台dts格式和RK平台dts格式有点不一样,所以将其修改成自己dts的格式,移植步骤如下:

  1. 将TP驱动整个目录放入kernel目录下,比如TP厂商给我的TP目录是focaltech_touch,把整个目录放入drivers/input/touchscreen/

  2. 修改drivers/input/touchscreen/下的Kconfig,把刚刚加进去的驱动目录加入编译规则,在最后增加一行

    source “drivers/input/touchscreen/focaltech_touch/Kconfig”
    
  3. 修改drivers/input/touchscreen/下的Makefile

    obj-$(CONFIG_TOUCHSCREEN_FTS)           += focaltech_touch/
    
  4. 修改makemenuconfig,将驱动目录编进内核,选择 Device Drivers -> Input Device Support ->Touchscreens -> Focaltech Touchscreen
    在这里插入图片描述

  5. dts增加节点,注意需要挂载相应的I2C总线

    focaltech@38{ 
    	status = "okay";
    	compatible = "focaltech,fts";	
    	reg = <0x38>;  					
    	interrupt-parent = <&gpio0>;				
    	interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
    	focaltech,reset-gpio = <&gpio0 12 GPIO_ACTIVE_LOW>; 
    	focaltech,irq-gpio = <&gpio0 11 IRQ_TYPE_LEVEL_LOW>; 
    
    	focaltech,max-touch-number = <10>;			
    	focaltech,display-coords =  <0 0 720 1280>;      //分辨率
    
    	/*focaltech,have-key;             //是否有按键
    	focaltech,key-number = <3>;	
    	focaltech,keys = <139 102 158>; 	
    	focaltech,key-y-coord = <2000>; 
    	focaltech,key-x-coords = <200 600 800>;*/
    };
    
  6. 编译烧录,查看是否有设备节点
    adb root
    adb remount
    adb shell
    cd /sys/bus/i2c/devices/*-0038,*代表使用到的 I2C 编号
    如果能看到一下节点,驱动一般是成功注册,并且可用,也可以通过查看log,当触摸的时候是否有点按下或者上报
    在这里插入图片描述

很幸运,在做完上面操作之后,我的TP已经成功可以用了,但由于FT6336U这个驱动是一款手机TP的驱动,是竖屏触摸,而我们的产品是需要横屏触摸,所以就有需求将竖屏触摸改成横屏触摸.

起初没有一点思路,不知到该如何下手,网上到处查资料,各种去论坛询问,都没有类似这样的资料,到最后自己也就死心了,就打算静下心来从驱动文件开始,一点一点研究一下他的触摸采点和上报流程.
首先看他的采点函数fts_read_touchdata
在这里插入图片描述
采完点之后是上报,fts_input_report_b,上报函数中有一个很重要的也很关键的步骤就是上报x和y的坐标
在这里插入图片描述
这个input_report_abs函数其内部就是我们最为核心,也是最想看到的一个事件上报函数
在这里插入图片描述
经过这个函数将x和y的坐标上报上去之后触摸生效,因此,我马上想到把x和y交换一下不就是横屏触摸了吗,果断将上报时的x坐标和y坐标调换一下
在这里插入图片描述
编译烧录发现是可以横着触摸了,但是触摸,但是有些地方触摸无效,突然想到,我设置的分辨率是720*1280,意味着当我竖着屏触摸时可以正常,因为我屏竖着的时候屏的x是720,y的坐标最大是1280,但是现在我将屏横过来了,以前的x就变成了现在的y,y就变成了x,自然分辨率需要调换一下,所以,修改dts将分辨率调换

	focaltech,display-coords =  <0 0 1280 720>;

编译烧录之后发现,确实有效,但是又有一个问题,就是触摸的时候,可以点击到屏幕图标,但就是左右反了,即你点左边的图标,右边的图标应用打开了,既然只是左右触摸反了,那好办把x坐标反一下就行了
在这里插入图片描述
编译烧录之后,触摸一切正常,成功将竖屏显示改成横屏显示.

虽然在本文将的是FT6336U驱动,但是无论是那个平台的驱动,思路是一样的,如果你想将竖屏触摸改成横屏触摸,可以试着在驱动里找到上报点的地方,将x和y反过来试试,可能不会一次成功,但肯定是会有一定效果.

将x和y调换过来的方法只适用与默认横屏和默认横屏触摸的场合,如果你的设备有gsensor,这样做肯定不符,因为需要根据gsensor的角度调整横竖屏触摸.

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RK3399 是一种强大的处理器芯片,广泛用于嵌入式设备和智能终端。我们将讨论其触摸驱动。 首先,触摸驱动是通过软件和硬件相结合的方式实现的。软件方面,我们通常使用操作系统内核提供的触摸驱动程序来与硬件交互。硬件方面,RK3399芯片支持多种触摸屏接口,包括I2C、SPI和USB。 对于RK3399来说,触摸驱动程序通常会集成在操作系统内核中,例如Android和Linux。在Android系统中,触摸驱动被称为输入设备驱动(Input Device Driver),它负责将触摸事件转换为操作系统能够理解的数据。在Linux系统中,触摸驱动通常被称为输入子系统(Input Subsystem)的一部分。 使用RK3399芯片的嵌入式设备或智能终端,通常需要在操作系统中加载和配置适当的触摸驱动。这样,系统就能够识别触摸屏的输入,并将其转换为相应的操作。 触摸驱动的开发涉及硬件和软件的协同工作。首先,硬件工程师负责与RK3399芯片连接触摸屏模块,并确保硬件电路的正常工作。然后,软件开发人员使用合适的编程语言编写触摸驱动程序,并将其集成到操作系统中。 总结来说,RK3399触摸驱动是通过软件和硬件相结合的方式实现的。它负责将触摸屏输入转换为操作系统可以理解的数据,从而实现对触摸屏的交互。在嵌入式设备或智能终端中,加载和配置适当的触摸驱动是必要的,以确保触摸屏的正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值