问题描述
被测屏幕:小米Pad6
分辨率:1800X2880
模式:Video Mode/MIPI Dphy 8Lane/DSC 144HZ
PPS:
11 00 00 89 30 80 0B 40 03 84 00 14 01 C2 01 C2 02 00 01 F4 00 20 01 AB 00 06 00 0D 05 7A 06 1A 18 00 10 F0 03 0C 20 00 06 0B 0B 33 0E 1C 2A 38 46 54 62 69 70 77 79 7B 7D 7E 01 02 01 00 09 40 09 BE 19 FC 19 FA 19 F8 1A 38 1A 78 1A B6 2A F6 2B 34 2B 74 3B 74 6B F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
特别处:屏幕显示有两颗Driver IC。PPS 里的分辨率为:900X2880,再主板上两个port需要同时发初始化。
解决方案:
之前调试过双通道的C-PHY。按照相同的配置改为压缩屏配置。出现花屏问题
此时按照如下要求调整屏幕参数
HSYNC/HBP/HFP设置为大于16,8对齐
VSYNC/VBP/VFP设置为4对齐
clock-frequency = htotalvtotalfps,1000000对齐
lane-rate = clock-frequency + 余量100左右,1000对齐
重新烧录点亮屏幕
可以看出底部切图与顶部出现了图像分层。
此时尝试修改前后肩参数无作用。
使用示波器抓取MIPI-D0+信号:
使用io命令查看colorbar
io -4 0xfdd90c08 0x00000001
io -4 0xfdd90d08 0x00000001
io -4 0xfdd90e08 0x00000001
io -4 0xfdd90f08 0x00000001
io -4 0xfdd90000 0xffffffff
从示波器抓取的一帧的行数据和查看colorbar 确定了少了大概180行的数据。
这种情况一般为初始化问题。让客户检查初始化重新调试后。正常点亮屏幕。
附上如下dts配置:
&dsi0 {
status = "okay";
rockchip,lane-rate = <900>;
rockchip,dual-channel = <&dsi1>;
dsi0_panel: panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reg = <0>;
backlight = <&backlight>;
reset-delay-ms = <120>;
enable-delay-ms = <120>;
prepare-delay-ms = <120>;
init-delay-ms = <120>;
unprepare-delay-ms = <120>;
disable-delay-ms = <60>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
dsi,lanes = <8>;
compressed-data;
slice-width = <450>;
slice-height = <20>;
version-major = <1>;
version-minor = <1>;
panel-init-sequence = [
...
...
...
05 78 01 11
05 16 01 29
//特殊原因只附上PPS参数
0A 00 80 11 00 00 89 30 80 0B 40 03 84 00 14 01 C2 01 C2 02 00 01 F4 00 20 01 AB 00 06 00 0D 05 7A 06 1A 18 00 10 F0 03 0C 20 00 06 0B 0B 33 0E 1C 2A 38 46 54 62 69 70 77 79 7B 7D 7E 01 02 01 00 09 40 09 BE 19 FC 19 FA 19 F8 1A 38 1A 78 1A B6 2A F6 2B 34 2B 74 3B 74 6B F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
];
panel-exit-sequence = [
05 14 01 28
05 00 01 10
];
//1952 2930
disp_timings0: display-timings {
native-mode = <&dsi0_timing0>;
dsi0_timing0: timing0 {
clock-frequency = <686000000>;//120
hactive = <1800>;
vactive = <2880>;
hsync-len = <16>;
hfront-porch = <96>;
hback-porch = <40>;
vsync-len = <8>;
vfront-porch = <26>;
vback-porch = <16>;
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_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>;
};
};
};
};
&dsi1 {
status = "okay";
};