问题背景描述:基于RK3576的板卡调试MIPI LCD显示,发现正常配置MIPI LCD时序无法正常显示。
系统分析:触摸部分与显示部分无直接关联,显示部分与背光、复位信号有关,因此排查可排除触摸软硬件问题。
(1)硬件原理图
(2)背光电路
(3)复位电路
(4)显示电路
设备树配置分析:
&pwm2_8ch_6 {
status = "okay";
pinctrl-0 = <&pwm2m2_ch6>;
};
&backlight {
pwms = <&pwm2_8ch_6 0 25000 0>;
status = "okay";
};
&dsi {
status = "okay";
//rockchip,lane-rate = <1000>;
dsi_panel: panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reg = <0>;
backlight = <&backlight>;
enable-delay-ms = <200>;
prepare-delay-ms = <200>;
unprepare-delay-ms = <200>;
disable-delay-ms = <200>;
width-mm = <94>;
height-mm = <150>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
dsi,lanes = <4>;
panel-init-sequence = [
05 1E 01 01
23 00 02 EE 50
29 00 03 EA 85 55
23 00 02 30 00
23 00 02 31 00
29 00 03 90 50 15
23 00 02 24 20
23 00 02 99 00
23 00 02 79 00
23 00 02 95 74
23 00 02 7A 20
23 00 02 97 09
23 00 02 7D 08
23 00 02 56 83
23 00 02 EE 60
23 00 02 30 01
23 00 02 27 22
23 00 02 3A A4
23 00 02 3B 00
23 00 02 3C 1A
23 00 02 3D 11
23 00 02 3E 93
23 00 02 42 64
23 00 02 43 64
23 00 02 44 0B
23 00 02 46 4E
23 00 02 8B 90
23 00 02 8D 45
23 00 02 91 11
23 00 02 92 11
23 00 02 93 9F
23 00 02 9A 00
23 00 02 9C 80
29 00 06 47 0F 24 2C 39 36
29 00 06 5A 0F 24 2C 39 36
29 00 06 4C 4A 40 51 31 2F
29 00 06 51 2D 10 25 1F 30
29 00 05 56 37 46 5B 7F
29 00 05 69 37 46 5B 7F
23 00 02 EE 70
29 00 05 00 03 07 00 01
29 00 05 04 08 0C 55 01
29 00 03 0C 05 3D
29 00 06 10 05 08 00 01 05
29 00 06 15 00 15 0D 08 00
29 00 03 29 05 3D
29 00 06 60 3C 3C 07 05 17
29 00 06 65 15 13 11 01 03
29 00 06 6A 3C 3C 3C 3C 3C
29 00 06 6F 3C 3C 3C 3C 3C
29 00 03 74 3C 3C
29 00 06 80 3C 3C 06 04 16
29 00 06 85 14 12 10 00 02
29 00 06 8A 3C 3C 3C 3C 3C
29 00 06 8F 3C 3C 3C 3C 3C
29 00 03 94 3C 3C
29 00 03 EA 00 00
23 00 02 EE 00
05 78 01 11
05 1E 01 29
];
panel-exit-sequence = [
05 00 01 28
05 00 01 10
];
disp_timings0: display-timings {
native-mode = <&dsi_timing0>;
dsi_timing0: timing0 {
clock-frequency = <67200000>;
hactive = <800>;
vactive = <1280>;
hfront-porch = <80>;
hsync-len = <20>;
hback-porch = <20>;
vfront-porch = <15>;
vsync-len = <6>;
vback-porch = <8>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <1>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in_dsi: endpoint {
remote-endpoint = <&dsi_out_panel>;
};
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
dsi_out_panel: endpoint {
remote-endpoint = <&panel_in_dsi>;
};
};
};
};
&dsi_panel {
power-supply = <&vcc3v3_lcd_n>;
};
设备树主要在DSI接口里添加了一个panel节点,在该节点里面指定了背光节点,配置了panel上电时序,屏参时序,最终关联到dsi端口。从设备树配置上看是没有任何问题的,但是测试就是无法正常显示。
分析:如果屏幕无法正常显示有可能是上电时序或者屏参时序有问题,但是这些配置在3588平台上是验证过是没有问题的,因此可排除此部分导致的原因。
最终通过排查发现是缺少配置复位信号,在设备树配置中添加复位信号配置内容即可正常显示。
剩下的触摸配置就简单了,本质就是一个i2c驱动配置:
&i2c9 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c9m3_xfer>;
gt911@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
interrupt-parent = <&gpio4>;
interrupts = <9 0>;
irq-gpios = <&gpio4 RK_PB1 0>;
reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <>911_int>;
status = "okay";
};
};
&pinctrl {
touch {
gt911_int: gt911-int {
rockchip,pins = <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
}
总结:在调试MIPI DSI尤其需要关注复位信号,不同的panel复位信号其有效电平也有所差异!!