Freescale i.MX 6Q MNC平台移植Goodix GT911x TP驱动

       接手的Freescalei.MX 6Q平台,移植了Android 6.0 MNC系统,Kernel (v3.14.52)可以启动了,从其它项目拿了一块Touch Panel过来。需要移植,Touch Panel移植按理是比较简单的,一开始以为最多半天的活,但实际却用了两天时间,中间走了不少弯路。

 

       Touch Panel的Driver IC用的是Goodix 的GT9110,应该属于比较常用的,屏是8 Inch的屏。先查原理图:

       原理图TP接了四根线,INT/RESET/SDA/SCL,找到主芯片上位置。

 

       对应的管脚分别是EIM_D21(SCL)/EIM_D28(SDA)/EIM_A25(RST)/DISP0_DAT12(INT)。打开Freescale的工具IO Mux,找到这些脚相对的分别是:

       EIM_D21/EIM_D28 为i2c1 的SCL/SDA

       EIM_A25为GPIO5_2

       DISP0_DAT12为GPIO5_6

 

       管脚查清楚了,开始配置,先配置DTS文件,打开kernel_imx/arch/arm/boot/dts/imx6qdl-sabresd.dtsi文件,找到i2c1。在最后增加:

       touchpanel: gd111x@5d {

               compatible ="gd,gd111x";

               reg = <0x5d>;

               interrupt-parent =<&gpio5>;

               interrupts = <6 2>;

               irq-gpios = <&gpio5 61>;

               rst-gpios = <&gpio5 21>;

       };

       以上配置参考了其它项目的代码,I2C地址为0x5D,实际上配置为0x14也可以,因为Goodix的I2C地址是根据开机时RST/INT的逻辑来决定的。驱动中做了自动适配。

       Compatible随便写了一个,只要不容易重名就可以了。

       interrupt-parent设置为gpio5

       irq-gpios和rst-gpios分别是用于中断和复位的。根据之前查出来的值设置正确。

 

       确认一下i2c1的相关GPIO是否正确,相关的PIN为pinctrl_i2c1

&i2c1 {

              clock-frequency = <100000>;

              pinctrl-names ="default";

              pinctrl-0 = <&pinctrl_i2c1>;

              status = "okay";

 

       发现配置不正确,改为正确值。

                pinctrl_i2c1: i2c1grp {

                    fsl,pins = <

-                    MX6QDL_PAD_CSI0_DAT8__I2C1_SDA         0x4001b8b1

-                    MX6QDL_PAD_CSI0_DAT9__I2C1_SCL         0x4001b8b1

+                    MX6QDL_PAD_EIM_D28__I2C1_SDA           0x4001b8b1

+                    MX6QDL_PA

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值