基于泰山派4寸86屏转接 - 立创开源硬件平台 (oshwhub.com)修改
平台野火鲁班猫2BTB 版本
MIPI DSI0
芯片平台:RK3568

2024/08/19 触摸已更新
各开发板DTSI不同注意辨别
例:我选择的是rk3568-lubancat-2io-dsi-800p
将以下内容放进设备树
&i2c1 {
status = "okay";
clock-frequency = <400000>;
FT5X06@38 {
status = "okay";
compatible = "edt,edt-ft5406";
reg = <0x38>;
interrupt-parent = <&gpio0>;
interrupts = ;
reset_gpio= <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
wake_gpio=<&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
touchscreen-size-x = <480>;
touchscreen-size-y = <480>;
touch_type = <1>;
};
};
设备树节点,无需使用补丁直接调用 edt-ft5x06.c文件
由于不知道鲁班猫具体使用哪个make files
所以把部分def都加载了该驱动,其他驱动进行了屏蔽
建议屏蔽不需要的型号,一方面提升编译速度,也防止地址错乱,驱动加载失败
# 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=y
CONFIG_TOUCHSCREEN_EDT_FT5X06=y //86屏驱动
# 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
# CONFIG_TOUCHSCREEN_CYPRESS_CYTTSP5_LOADER=y
前方添加#表示屏蔽
我主要修改了
lubancat2_android11_defconfig //大概率我编译的mipi800p是这个配置文件
lubancat2_buildroot_defconfig
lubancat2_defconfig
rockchip_defconfig
rockchip_linux_defconfig
都试验一下具体没做测试
文件路径在 kernel/arch/arm64/configs
修改驱动
文件路径在 kernel/drivers/input/touchscreen/makefile
bj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o
这个驱动是默认装载的,如果没有自己添加
然后编译就行了
完整设备树
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2020 Rockchip Electronics Co., Ltd.
*
*/
&route_dsi0 {
status = "okay";
connect = <&vp0_out_dsi0>;
};
&video_phy0 {
status = "okay";
};
&dsi0_in_vp0 {
status = "okay";
};
&dsi0_in_vp1 {
status = "disabled";
};
&dsi0 {
status = "okay";
rockchip,lane-rate = <480>;
power-supply = <&mipi_dsi0_power>;
dsi0_panel:panel@0 {
compatible = "simple-panel-dsi";
reg = <0>;
backlight = <&backlight0>;
reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;
enable-delay-ms = <100>;
prepare-delay-ms = <20>;
reset-delay-ms = <200>;
init-delay-ms = <120>;
unprepare-delay-ms = <20>;
disable-delay-ms = <20>;
size,width = <72>;
size,height = <72>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = ;
dsi,lanes = <2>;
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>;
dsi0_timing: timing {
clock-frequency = <16800000>;
hactive = <480>;
hfront-porch = <2>;
hback-porch = <18>;
hsync-len = <2>;
vactive = <480>;
vfront-porch = <2>;
vback-porch = <18>;
vsync-len = <2>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
swap-rb = <0>;
swap-rg = <0>;
swap-gb = <0>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in_dsi0: endpoint {
remote-endpoint = <&dsi0_out_panel>;
};
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
dsi0_out_panel: endpoint {
remote-endpoint = <&panel_in_dsi0>;
};
};
};
};
&i2c1 {
status = "okay";
clock-frequency = <400000>;
FT5X06@38 {
status = "okay";
compatible = "edt,edt-ft5406";
reg = <0x38>;
interrupt-parent = <&gpio0>;
interrupts = ;
reset_gpio= <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
wake_gpio=<&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
touchscreen-size-x = <480>;
touchscreen-size-y = <480>;
touch_type = <1>;
};
};
&route_dsi1 {
status = "okay";
connect = <&vp1_out_dsi1>;
};
&video_phy1 {
status = "okay";
};
&dsi1_in_vp0 {
status = "disabled";
};
&dsi1_in_vp1 {
status = "okay";
};
&dsi1 {
status = "okay";
power-supply = <&mipi_dsi1_power>;
dsi1_panel:panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reg = <0>;
backlight = <&backlight1>;
reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>;
enable-delay-ms = <35>;
prepare-delay-ms = <6>;
reset-delay-ms = <0>;
init-delay-ms = <20>;
unprepare-delay-ms = <0>;
disable-delay-ms = <20>;
size,width = <74>;
size,height = <133>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = ;
dsi,lanes = <4>;
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 B5
15 05 02 51 AD
15 05 02 60 06
15 05 02 62 20
15 05 02 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>;
dsi1_timing: timing {
clock-frequency = <67000000>;
hactive = <800>;
vactive = <1280>;
hsync-len = <24>;
hback-porch = <24>;
hfront-porch = <12>;
vsync-len = <2>;
vback-porch = <9>;
vfront-porch = <7>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in_dsi1: endpoint {
remote-endpoint = <&dsi1_out_panel>;
};
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
dsi1_out_panel: endpoint {
remote-endpoint = <&panel_in_dsi1>;
};
};
};
};
&i2c5 {
status = "okay";
clock-frequency = <100000>;
gt911_2: gt911_2@5d {
status = "okay";
compatible = "goodix,gt911";
reg = <0x5d>;
interrupt-parent = <&gpio3>;
interrupts = ;
reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
irq-gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>;
};
};
&route_hdmi {
status = "disabled";
};
&hdmi_in_vp0 {
status = "disabled";
};
&hdmi_in_vp1 {
status = "disabled";
};
&hdmi {
status = "disabled";
};
视频效果见附件
评论