20260113给飞凌OK3588-C开发板适配Rockchip原厂的Android14系统时点亮飞凌的7寸屏时适配CTP触摸屏FT5X06
2026/1/12 20:22
缘起:给飞凌OK3588-C开发板适配Rockchip原厂的Android14后,需要适配CTP触摸屏FT5X06。
当你把荣品RD-RK3588开发板重新适配一把,就相当于从头做了一个项目:【荣品RD-RK3588开发板】。
当然,开发板的功能都是好的,你免除了调试的过程,也就没有解决相关硬件出错的经验/机会了!
1、在DTS的i2c2中挂载CTP触摸屏FT5X06
【下次如果没有的I2C节点要首先注意I2C的冲突了】
如果不指定i2c2的引脚复用,那默认就是i2c2m0了
pin 15 (gpio0-15): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer
pin 16 (gpio0-16): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer
Z:\14TB\OK3588-C\OK3588-android14-source\kernel-6.1\arch\arm64\boot\dts\rockchip\OK3588-C-Common.dtsi
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
&i2c2 {
status = "okay";
// extio: tca6424@23 {
// compatible = "ti,tca6424";
// reg = <0x23>;
// interrupt-parent = <&gpio1>;
// interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
// gpio-controller;
// #gpio-cells = <2>;
// interrupt-controller;
// #interrupt-cells = <2>;
// pinctrl-0 = <&extio_int_gpio>;
// pinctrl-names = "default";
// status = "okay";
// };
ft5x06_dsi0: ft5x06@38 { //dsi0 tp
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
reg = <0x38>;
pinctrl-names = "ft5x06_default";
pinctrl-0 = <&ft5x06_dsi0_gpio>;
interrupt-parent = <&gpio3>;
interrupts = <RK_PC0 IRQ_TYPE_EDGE_FALLING>;
// irq-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
// reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
input-phy = "ft5x06_2_38/input0";
status = "okay";
};
// usbc0: fusb302@22 {
// compatible = "fcs,fusb302";
// reg = <0x22>;
// interrupt-parent = <&gpio1>;
// interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
// pinctrl-names = "default";
// pinctrl-0 = <&usbc0_int>;
// vbus-supply = <&vbus5v0_typec0>;
// status = "okay";
//
// ports {
// #address-cells = <1>;
// #size-cells = <0>;
//
// port@0 {
// reg = <0>;
// usbc0_role_sw: endpoint@0 {
// remote-endpoint = <&dwc3_0_role_switch>;
// };
// };
// };
//
// usb_con: connector {
// compatible = "usb-c-connector";
// label = "USB-C";
// data-role = "dual";
// power-role = "dual";
// try-power-role = "sink";
// op-sink-microwatt = <1000000>;
// sink-pdos =
// <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
// source-pdos =
// <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
//
// altmodes {
// #address-cells = <1>;
// #size-cells = <0>;
//
// altmode@0 {
// reg = <0>;
// svid = <0xff01>;
// vdo = <0xffffffff>;
// };
// };
//
// ports {
// #address-cells = <1>;
// #size-cells = <0>;
//
// port@0 {
// reg = <0>;
// usbc0_orien_sw: endpoint {
// remote-endpoint = <&usbdp_phy0_orientation_switch>;
// };
// };
//
// port@1 {
// reg = <1>;
// dp_altmode_mux: endpoint {
// remote-endpoint = <&usbdp_phy0_dp_altmode_mux>;
// };
// };
// };
// };
// };
};

2、
PWM MIPI_DSI1_EN 3B2
MIPI_DSI1_RESET 3B7
TP_INT MIPI_DSI1_INT 3c0
FT5X06:0x38




&pinctrl {
m2 {
net_m2_rst_gpio: net_m2_rst_gpio {
rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
【这里应该/貌似没用?貌似是GT911需要配置的?】
touch {
touch_gpio: touch-gpio {
rockchip,pins =
<0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>,
<0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
hdmirxdet {
hdmirx_det_gpio: hdmirx-det-gpio {
rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
extio {
extio_int_gpio: extio-int-gpio {
rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
};
};
usb-typec {
usbc0_int: usbc0-int {
rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
};
typec5v_pwren0: typec5v-pwren0 {
rockchip,pins = <0 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
};
usbc1_int: usbc1-int {
rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>;
};
typec5v_pwren1: typec5v-pwren1 {
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
【这里必须的,FT5X06的】
tp_int {
ft5x06_dsi0_gpio: ft5x06-dsi0-gpio {
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>,
<3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
};
ft5x06_dsi1_gpio: ft5x06-dsi1-gpio {
rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>,
<3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
headphone {
hp_det: hp-det {
rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};


3、在.config文件中确认CONFIG_TOUCHSCREEN_EDT_FT5X06的位置和写法:
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\.config
CONFIG_TOUCHSCREEN_INEXIO is not set
CONFIG_TOUCHSCREEN_MK712 is not set
CONFIG_TOUCHSCREEN_PARADE=y
CONFIG_TOUCHSCREEN_PARADE_DEVICETREE_SUPPORT=y
CONFIG_TOUCHSCREEN_PARADE_DEBUG is not set
CONFIG_TOUCHSCREEN_PARADE_I2C=y
CONFIG_TOUCHSCREEN_PARADE_SPI is not set
CONFIG_TOUCHSCREEN_PARADE_MT_A is not set
CONFIG_TOUCHSCREEN_PARADE_MT_B=y
CONFIG_TOUCHSCREEN_PARADE_BUTTON is not set
CONFIG_TOUCHSCREEN_PARADE_PROXIMITY is not set
CONFIG_TOUCHSCREEN_PARADE_DEVICE_ACCESS is not set
CONFIG_TOUCHSCREEN_PARADE_LOADER=y
CONFIG_TOUCHSCREEN_PARADE_PLATFORM_FW_UPGRADE is not set
CONFIG_TOUCHSCREEN_PARADE_BINARY_FW_UPGRADE is not set
CONFIG_TOUCHSCREEN_PARADE_PLATFORM_TTCONFIG_UPGRADE is not set
CONFIG_TOUCHSCREEN_PARADE_MANUAL_TTCONFIG_UPGRADE is not set
CONFIG_TOUCHSCREEN_PARADE_DEBUG_MDL is not set
CONFIG_TOUCHSCREEN_PENMOUNT is not set
CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
CONFIG_TOUCHSCREEN_TOUCHWIN is not set
CONFIG_TOUCHSCREEN_PIXCIR is not set
CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
CONFIG_TOUCHSCREEN_TSC_SERIO is not set
CONFIG_TOUCHSCREEN_TSC2004 is not set
Z:\14TB\OK3588-C\OK3588-android-source\kernel-5.10\.config
CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
CONFIG_TOUCHSCREEN_INEXIO is not set
CONFIG_TOUCHSCREEN_MK712 is not set
CONFIG_TOUCHSCREEN_PENMOUNT is not set
CONFIG_TOUCHSCREEN_EDT_FT5X06=y
CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
CONFIG_TOUCHSCREEN_TOUCHWIN is not set
CONFIG_TOUCHSCREEN_PIXCIR is not set
CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set


Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\arch\arm64\configs\rockchip_defconfig
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_CHIPONE_9551R=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y
CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y
CONFIG_TOUCHSCREEN_FT5726=y
CONFIG_TOUCHSCREEN_GSL3673=y
CONFIG_TOUCHSCREEN_GSL3673_800X1280=y
CONFIG_TOUCHSCREEN_GSLX680_PAD=y
CONFIG_TOUCHSCREEN_GT1X=y
CONFIG_TOUCHSCREEN_ILI210X=y
CONFIG_TOUCHSCREEN_ELAN5515=y
CONFIG_TOUCHSCREEN_WACOM_W9013=y
CONFIG_TOUCHSCREEN_PARADE=y
CONFIG_TOUCHSCREEN_PARADE_DEVICETREE_SUPPORT=y
CONFIG_TOUCHSCREEN_PARADE_I2C=y
CONFIG_TOUCHSCREEN_PARADE_MT_B=y
CONFIG_TOUCHSCREEN_PARADE_LOADER=y
CONFIG_TOUCHSCREEN_EDT_FT5X06=y
CONFIG_ROCKCHIP_REMOTECTL=y
CONFIG_ROCKCHIP_REMOTECTL_PWM=y
CONFIG_SENSOR_DEVICE=y
CONFIG_GSENSOR_DEVICE=y


4、确认edt-ft5x06.c编译成为edt-ft5x06.o了,但是CTP还是不能用。
getevent也没有打印信息。
dmesg | grep ft5
【确认CTP的驱动程序没有被挂载!】
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\drivers\input\touchscreen\edt-ft5x06.o
【应该不用修改】
Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\drivers\input\touchscreen\edt-ft5x06.c

5、
保险起见,替换掉edt-ft5x06.c【无效】


6、这时候想起来可能是GPIO冲突了,重点关注I2C2
【现阶段异常的】
pin 15 (gpio0-15): vcc-3v3-sd-s0-regulator gpio0:15 function sdmmc group sd-s0-pwr
pin 16 (gpio0-16): (MUX UNCLAIMED) (GPIO UNCLAIMED)
【预编译的Android14】
pin 15 (gpio0-15): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer
pin 16 (gpio0-16): feaa0000.i2c (GPIO UNCLAIMED) function i2c2 group i2c2m0-xfer
根据经验/很容易得知:gpio0-15/GPIO0B7被sd-s0-pwr占用了

Y:\new_disk_4t\wyb\OK3588-C\RK3576_Android14.0_SDK_RELEASE\kernel-6.1\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
vcc_3v3_sd_s0: vcc-3v3-sd-s0-regulator {
compatible = "regulator-fixed";
// 2026/1/12 21:04 wenyuanbo i2c2
//gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
//pinctrl-0 = <&sd_s0_pwr>;
regulator-name = "vcc_3v3_sd_s0";
enable-active-high;
};

// 2026/1/12 21:04 wenyuanbo i2c2
//sdmmc {
// sd_s0_pwr: sd-s0-pwr {
// rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>;
// };
//};

7、通了!
130|console:/ #
130|console:/ # getevent
add device 1: /dev/input/event3
name: "Logitech USB Optical Mouse"
add device 2: /dev/input/event1
name: "generic ft5x06 (79)"
add device 3: /dev/input/event2
name: "rockchip,hdmiin rockchip,hdmiin"
add device 4: /dev/input/event5
name: "rockchip-hdmi0 rockchip-hdmi0"
add device 5: /dev/input/event4
name: "adc-keys"
add device 6: /dev/input/event0
name: "rk805 pwrkey"
add device 7: /dev/input/event6
name: "rockchip-hdmi1 rockchip-hdmi1"
【单指头】
/dev/input/event1: 0003 002f 00000000
/dev/input/event1: 0003 0039 00000006
/dev/input/event1: 0003 0035 000000a5
/dev/input/event1: 0003 0036 000000db
/dev/input/event1: 0001 014a 00000001
/dev/input/event1: 0003 0000 000000a5
/dev/input/event1: 0003 0001 000000db
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0039 ffffffff
/dev/input/event1: 0001 014a 00000000
/dev/input/event1: 0000 0000 00000000
72.211461\]\[ T521\] healthd: battery l=50 v=3300 t=2.6 h=2 st=3 c=-1600 fc=100 chg=au 【多指头/五指头?】 /dev/input/event1: 0003 0039 00000007 /dev/input/event1: 0003 0035 00000103 /dev/input/event1: 0003 0036 0000018a /dev/input/event1: 0001 014a 00000001 /dev/input/event1: 0003 0000 00000103 /dev/input/event1: 0003 0001 0000018a /dev/input/event1: 0000 0000 00000000 /dev/input/event1: 0003 002f 00000001 /dev/input/event1: 0003 0039 00000008 /dev/input/event1: 0003 0035 000002ec /dev/input/event1: 0003 0036 000000b6 /dev/input/event1: 0003 002f 00000002 /dev/input/event1: 0003 0039 00000009 /dev/input/event1: 0003 0035 00000329 /dev/input/event1: 0003 0036 00000114 /dev/input/event1: 0000 0000 00000000 /dev/input/event1: 0003 002f 00000001 /dev/input/event1: 0003 0039 ffffffff /dev/input/event1: 0003 002f 00000002 /dev/input/event1: 0003 0039 ffffffff /dev/input/event1: 0000 0000 00000000 /dev/input/event1: 0003 002f 00000000 /dev/input/event1: 0003 0039 ffffffff /dev/input/event1: 0001 014a 00000000 /dev/input/event1: 0000 0000 00000000 \^C 130\|console:/ # \[ 132.211169\]\[ T521\] healthd: battery l=50 v=3300 t=2.6 h=2 st=3 c=-1600 fc=100 chg=au         