RK3568触摸屏驱动调试总结

硬件电路分析

RK3568 CPU通过I2C与触控板外设wdt87xx连接。
首先要根据电路图获取如下I2C的信息:

项目 Value
接在哪个I2C i2c1
I2C 寄存器地址 0x2c
HID 地址 0x20
中断 B5

1、接在哪个I2C
如图,1接在I2C1:
RK3568触摸屏驱动调试总结_第1张图片
2、使用哪个GPIO引脚接收触控板的中断
如图:
CPU使用的是GPIO 0 B5引脚来接收触控板的中断
RK3568触摸屏驱动调试总结_第2张图片

3、I2C1的寄存器地址0x2c
这个需要硬件工程师给出。
可以通过i2cdetect -r 1检测一下。
root@RK356X:/# i2cdetect -r 1
RK3568触摸屏驱动调试总结_第3张图片
I2C1的0X2C位置挂载了一个I2C设备,就是本次的WD87XX触控。
I2C2的0X50位置挂载了一个I2C设备,这是RK628D。

4、HID 地址
查3568手册确认地址。

配置设备树

735 &i2c1 {
736 status = “okay”;
737
738 i2c-scl-rising-time-ns = <345>;
739 i2c-scl-falling-time-ns = <11>;
740 clock-frequency = <400000>;
741
742 touchpad: touchpad@2c {
743 compatible = “hid-over-i2c”;
744 interrupt-parent = <&gpio0>;
745 interrupts = ;
746 pinctrl-names = “default”;
747 pinctrl-0 = <&touchpad_irq_gpio>;
748 reg = <0x2c>;
749 hid-descr-addr = <0x0020>;
750 };
751 };

其中,touchpad_irq_gpio定义:
491 touchpad {
492 touchpad_irq_gpio: touchpad-irq-gpio {
493 rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
494 };
495 };

为什么要这么配?
1、确定TOUCHPAD的寄存器地址REG=2c
2、确定TP挂在I2C1,因此要修改I2C的信息,通过 &i2c1来引用并加以修改。
3、和供应商确认支持的驱动程序是hid-over-i2c
4、HID地址可以向供应商索取相关的模板。

三、驱动工作
1、drivers hid hid-over-i2c 在工作
2、中断
cat /proc/interrupts| grep hid-over-i2c
122: 2 0 0 0 gpio0 13 Level hid-over-i2c

证实其工作正常。触发产生了中断。

你可能感兴趣的:(驱动,RK3568)