Based on the Taishanpai 4-inch 86-inch screen adapter - LCSC open-source hardware platform (oshwhub.com), modified
platform Wildfire Lubancat 2BTB version
MIPI DSI0
chip platform: RK3568
2024/08/19 Touch has been updated.
Different development boards have different DTSI, please pay attention to identification.
Example: I chose rk3568-lubancat-2io-dsi-800p.
Put the following content into the device tree:
&i2c1 {
status = "okay";
clock-frequency = ;
FT5X06@38 {
status = "okay";
compatible = "edt,edt-ft5406";
reg = ;
interrupt-parent = ;
interrupts
= ; reset_gpio = ;
wake_gpio=;
touchscreen-size-x = ;
touchscreen-size-y = ;
touch_type = ;
}; The device tree node directly calls the edt-ft5x06.c file without needing a patch
. Since it's unknown which makefiles Luban Cat uses , some defs are loaded for this driver, and other drivers are disabled. It's recommended to disable unnecessary models to improve compilation speed and prevent address errors and driver loading failures. # CONFIG_TOUCHSCREEN_GOODIX=y # CONFIG_TOUCHSCREEN_GSLX6801=y # CONFIG_TOUCHSCREEN_GSLX680_PAD=y # CONFIG_TOUCHSCREEN_GSLX680_VR=y # CONFIG_TOUCHSCREEN_GSL3673=y # CONFIG_TOUCHSCREEN_GSL3673_800X1280=y # CONFIG_TOUCHSCREEN_GSL3676=y # CONFIG_TOUCHSCREEN_HYN_CST2XX=y # CONFIG_TOUCHSCREEN_WACOM_W9013=y# CONFIG_TOUCHSCREEN_GT1X=y#CONFIG_TOUCHSCREEN_FTS=y#CONFIG_TOUCHSCREEN_ROCKPI_FT5406=yCONFIG_TOUCHSCREEN_EDT_FT5X06=y //86 screen driver# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5=y# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICETREE_SUPPORT=y# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_I2C=y# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_DEVICE_ACCESS=y# Adding a # before CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y indicates that I mainly modified lubancat2_android11_defconfig //This configuration file is most likely the one I compiled for MIPI800P . I also tested lubancat2_buildroot_defconfig, lubancat2_defconfig , rockchip_defconfig , and rockchip_linux_defconfig. I haven't done specific testing yet . The file path is in kernel/arch/arm64/configs. The driver file path is in kernel/drivers/input/touchscreen/makefile. bj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o This driver is loaded by default. If it's not there, add it yourself and then compile. Complete device tree // SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright (c) 2020 Rockchip Electronics Co., Ltd. * */ &route_dsi0 { status = "okay"; connect = ; }; &video_phy0 { status = "okay"; }; &dsi0_in_vp0 { status = "okay"; }; &dsi0_in_vp1 { status = "disabled"; }; &dsi0 { status = "okay"; rockchip,lane-rate = ; power-supply = ; dsi0_panel:panel@0 { compatible = "simple-panel-dsi"; reg = ; backlight = ; reset-gpios = ; enable-delay-ms = ; prepare-delay-ms = ; reset-delay-ms = ; init-delay-ms = ; unprepare-delay-ms = ;
disable-delay-ms = ;
size,width = ;
size,height = ;
dsi,flags = ;
dsi,format = ;
dsi,lanes = ;
panel-init-sequence = [
23 01 02 7A C1
23 01 02 20 E0
23 01 02 21 E0
23 01 02 22 11
23 01 02 23 02
23 01 02 24 02
23 01 02 25 12
23 01 02 26 00
23 01 02 27 02
23 01 02 28 02
23 01 02 29 12
23 01 02 34 80
23 01 02 36 02
23 01 02 86 29
23 01 02 B5 A0
23 01 02 5C FF
//23 01 02 14 43 // Test mode
//23 01 02 2A 49 // Test mode
23 01 02 2A 01
23 01 02 56 92
23 01 02 6B 72
23 01 02 69 12
23 01 02 10 10
23 01 02 11 88
23 01 02 B6 20
23 01 02 51 20
23 01 02 09 10
05 78 01 11
05 14 01 29
];
panel-exit-sequence = [
05 00 01 28
05 00 01 10
];
disp_timing: display-timings {
native-mode = ;
dsi0_timing: timing {
clock-frequency = ;
hactive = ;
hfront-porch = ;
hback-porch = ;
hsync-len = ;
vactive = ;
vfront-porch = ;
vback-porch = ;
vsync-len = ;
hsync-active = ;
vsync-active = ;
de-active = ;
pixelclk-active = ;
swap-rb = ;
swap-rg = ;
swap-gb = ;
};
};
ports {
#address-cells = ;
#size-cells = ;
port@0 {
reg = ;
panel_in_dsi0: endpoint {
remote-endpoint = ;
};
};
};
};
ports {
#address-cells = ;
#size-cells = ;
port@1 {
reg = ;
dsi0_out_panel: endpoint {
remote-endpoint = ;
};
};
};
};
&i2c1 {
status = "okay";
clock-frequency = ;
FT5X06@38 {
status = "okay";
compatible = "edt,edt-ft5406";
reg = ;
interrupt-parent = ;
interrupts = ;
reset_gpio= ;
wake_gpio=;
touchscreen-size-x = ;
touchscreen-size-y = ;
touch_type = ;
};
};
&route_dsi1 {
status = "okay";
connect = ;
};
&video_phy1 {
status = "okay";
};
&dsi1_in_vp0 {
status = "disabled";
};
&dsi1_in_vp1 {
status = "okay";
};
&dsi1 {
status = "okay";
power-supply = ;
dsi1_panel:panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reg = ;
backlight = ;
reset-gpios = ;
enable-delay-ms = ;
prepare-delay-ms = ;
reset-delay-ms = ;
init-delay-ms = ;
unprepare-delay-ms = ;
disable-delay-ms = ;
size,width = ;
size,height = ;
dsi,flags = ;
dsi,format = ;
dsi,lanes = ;
panel-init-sequence = [
39 05 04 FF 98 81 03
15 05 02 01 00
15 05 02 02 00
15 05 02 03 53
15 05 02 04 D3
15 05 02 05 00
15 05 02 06 0D
15 05 02 07 08
15 05 02 08 00
15 05 02 09 00
15 05 02 0a 00
15 05 02 0b 00
15 05 02 0c 00
15 05 02 0d 00
15 05 02 0e 00
15 05 02 0f 28
15 05 02 10 28
15 05 02 11 00
15 05 02 12 00
15 05 02 13 00
15 05 02 14 00
15 05 02 15 00
15 05 02 16 00
15 05 02 17 00
15 05 02 18 00
15 05 02 19 00
15 05 02 1a 00
15 05 02 1b 00
15 05 02 1d 00
15 05 02 1e 40
15 05 02 1f 80
15 05 02 20 06
15 05 02 21 01
15 05 02 22 00
15 05 02 23 00
15 05 02 24 00
15 05 02 25 00
15 05 02 26 00
15 05 02 27 00
15 05 02 28 33
15 05 02 29 33
15 05 02 2a 00
15 05 02 2b 00
15 05 02 2c 00
15 05 02 2d 00
15 05 02 2e 00
15 05 02 2f 00
15 05 02 30 00
15 05 02 31 00
15 05 02 32 00
15 05 02 33 00
15 05 02 34 03
15 05 02 35 00
15 05 02 36 00
15 05 02 37 00
15 05 02 38 96
15 05 02 39 00
15 05 02 3a 00
15 05 02 3b 00
15 05 02 3c 00
15 05 02 3d 00
15 05 02 3e 00
15 05 02 3f 00
15 05 02 40 00
15 05 02 41 00
15 05 02 42 00
15 05 02 43 00
15 05 02 44 00
15 05 02 50 00
15 05 02 51 23
15 05 02 52 45
15 05 02 53 67
15 05 02 54 89
15 05 02 55 AB
15 05 02 56 01
15 05 02 57 23
15 05 02 58 45
15 05 02 59 67
15 05 02 5a 89
15 05 02 5b AB
15 05 02 5c CD
15 05 02 5d EF
15 05 02 5e 00
15 05 02 5f 08
15 05 02 60 08
15 05 02 61 06
15 05 02 62 06
15 05 02 63 01
15 05 02 64 01
15 05 02 65
00 15 05 02 66 00
15 05 02 67
02 15 05 02 68 15
15 05 02 69 15
15 05 02 6a 14
15 05 02 6b 14
15 05 02 6c 0D
15 05 02 6d 0D
15 05 02 6e 0C
15 05 02 6f 0C
15 05 02 70 0F
15 05 02 71 0F
15 05 02 72 0E
15 05 02 73 0E
15 05 02 74 02
15 05 02 75 08
15 05 02 76 08
15 05 02 77 06
15 05 02 78 06
15 05 02 79 01
15 05 02 7a 01
15 05 02 7b 00
15 05 02 7c 00
15 05 02 7d 02
15 05 02 7e 15
15 05 02 7f 15
15 05 02 80 14
15 05 02 81 14
15 05 02 82 0D
15 05 02 83 0D
15 05 02 84 0C
15 05 02 85 0C
15 05 02 86 0F
15 05 02 87 0F
15 05 02 88 0E
15 05 02 89 0E
15 05 02 8A 02
39 05 04 FF 98 81 04
15 05 02 6E 2B
15 05 02 6F 37
15 05 02 3A 24
15 05 02 8D 1A
15 05 02 87 BA
15 05 02 B2 D1
15 05 02 88 0B
15 05 02 38 01
15 05 02 39 00
15 05 02 B5 02
15 05 02 31
25 15 05 02 3B 98
39 05 04 FF 98 81 01
15 05 02 22 0A
15 05 02 31 00
15 05 02
53 3D
15 05
02 55 3D
15
05 02 50
A0 00
15 05 02 A1 21
15 05 02 A2 35
15 05 02 A3 19
15 05 02 A4 1E
15 05 02 A5 33
15 05 02 A6
27 15 05 02 A7 26
15 05 02 A8 AF
15 05 02 A9 1B
15 05 02 AA 27
15 05 02 AB 8D
15 05 02 AC 1A
15 05 02 AD 1B
15 05 02 AE 50
15 05 02 AF 26
15 05 02 B0 2B
15 05 02 B1 54
15 05 02 B2 5E
15 05 02 B3 23
15 05 02 C0 00
15 05 02 C1 21
15 05 02 C2 35
15 05 02 C3 19
15 05 02 C4 1E
15 05 02 C5 33
15 05 02 C6 27
15 05 02 C7 26
15 05 02 C8 AF
15 05 02 C9 1B
15 05 02 CA 27
15 05 02 CB 8D
15 05 02 CC 1A
15 05 02 CD 1B
15 05 02 CE 50
15 05 02 CF 26
15 05 02 D0 2B
15 05 02 D1 54
15 05 02 D2 5E
15 05 02 D3 23
39 05 04 FF 98 81 00
15 78 02 11 00
15 05 02 29 00
];
panel-exit-sequence = [
05 78 01 28
05 00 01 10
];
disp_timings: display-timings {
native-mode = ;
dsi1_timing: timing {
clock-frequency = ;
hactive = ;
vactive = ;
hsync-len = ;
hback-porch = ;
hfront-porch = ;
vsync-len = ;
vback-porch = ;
vfront-porch = ;
hsync-active = ;
vsync-active = ;
de-active = ;
pixelclk-active = ;
};
};
ports {
#address-cells = ;
#size-cells = ;
port@0 {
reg = ;
panel_in_dsi1: endpoint {
remote-endpoint = ;
};
};
};
};
ports {
#address-cells = ;
#size-cells = ;
port@1 {
reg = ;
dsi1_out_panel: endpoint {
remote-endpoint = ;
};
};
};
};
&i2c5 {
status = "okay";
clock-frequency = ;
gt911_2: gt911_2@5d {
status = "okay";
compatible = "goodix,gt911";
reg = ;
interrupt-parent = ;
interrupts = ;
reset-gpios = ;
irq-gpios = ;
};
};
&route_hdmi {
status = "disabled";
};
&hdmi_in_vp0 {
status = "disabled";
};
&hdmi_in_vp1 {
status = "disabled";
};
&hdmi {
status = "disabled";
};
视频效果见附件