临滴 LKD3588-Android11 移植 MIPI DSI 显示 (ATK-MIPI-720p)
硬件信息:临滴LCB3588、ATK-5.5寸MIPI屏(720*1280)
主页有MIPI DSI 协议简述,搭配食用更佳MIPI DSI 协议简述
一、适配 ATK-MIPI-720p 屏幕显示
1. LKD3588开发板的MIPI接口
临滴的LKD3588开发板显示接口HDMI1.4、HDMI2.0、双通道LVDS、DP,并未将MIPI接口引出,但是RK3588芯片是有MIPI信号接口的,查看临滴LKD3588原理图有两路MIPI-D-Phy输出,只不过临滴将其转为LVDS接口和HDMI接口了,下面就将 MIPI_DPHY1_TX 引出并适配到正点原子的720PMIPI屏幕:
MIPI_DPHY1_TX 信号本身是转换为 HDMI 信号的,方便起见直接在 Neardi-3588-SDK-Android-V2.0/kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-neardi-android-ld160-mipi2hdmi.dtsi 设备树文件中进行修改,修改之前先看下MIPI屏幕相关。
2. MIPI屏幕硬件原理图
使用的MIPI屏幕有两个接口( 4Lane 和 2Lane ),这里使用 4Lane 接口。
3. MIPI 屏幕驱动调试
调试 MIPI 屏幕主要有三部分内容:
1)、屏幕背光调试,这个是首先要搞定的,背光不亮,屏幕也就什么都看不到。这个比较简单,属于 PWM 相关知识,后面也会讲解如何调试背光。
2)、向屏幕发送初始化序列。
3)、调试屏幕的 DPI 参数,最后需要调试 MIPI 屏幕的 DPI 参数,也就是 HBP、HFP、VBP、VFP 等这些参数。
3.1. 屏幕背光调试
3.1.1. PWM
屏幕背光使用 PWM 来控制,通过 PWM 波形来调节屏幕亮度。接口图中 Pin7(LCD_BL)便是控制背光的,因为LKD3588上没有引出MIPI接口,自然就没有相关引脚配置。因为 LKD3588 的 PWM7 引脚引出,我们就直接使用PWM7 (PWM7_M3_GPIO4_C6_d_IO3_1V8) 控制背光,将 GPIO4_C6 连接 MIPI 屏的 LCD_BL 引脚。
GPIO4_C6 pinctrl 配置,在 rk3588s-pinctrl.dtsi 或 rk3588-vccio3-pinctrl.dtsi 找到如下内容:
pwm7 {
/omit-if-no-ref/
pwm7m3_pins: pwm7m3-pins {
rockchip,pins =
/* pwm7_ir_m3 */
<4 RK_PC6 11 &pcfg_pull_none>;
};
};
然后在 rk3588-neardi-android-ld160-mipi2hdmi.dtsi 中向pwm7追加如下内容:
pwm7: pwm@febd0030 {
compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
reg = <0x0 0xfebd0030 0x0 0x10>;
#pwm-cells = <3>;
pinctrl-names = "active";
pinctrl-0 = <&pwm7m3_pins>; // 使用 rk3588-vccio3-pinctrl.dtsi 中的配置
clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
clock-names = "pwm", "pclk";
status = "okay"; // 启用状态
};
3.1.2. backlight 节点设置
直接沿用 mipi2hdmi 的背光设置,稍加修改:
backlight: backlight {
status="okay";
compatible = "pwm-backlight";
pwms = <&pwm7 0 25000 0>; // 使用pwm7
brightness-levels = <
0 20 20 21 21 22 22 23
23 24 24 25 25 26 26 27
27 28 28 29 29 30 30 31
31 32 32 33 33 34 34 35
35 36 36 37 37 38 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103
104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119
120 121 122 123 124 125 126 127
128 129 130 131 132 133 134 135
136 137 138 139 140 141 142 143
144 145 146 147 148 149 150 151
152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167
168 169 170 171 172 173 174 175
176 177 178 179 180 181 182 183
184 185 186 187 188 189 190 191
192 193 194 195 196 197 198 199
200 201 202 203 204 205 206 207
208 209 210 211 212 213 214 215
216 217 218 219 220 221 222 223
224 225 226 227 228 229 230 231
232 233 234 235 236 237 238 239
240 241 242 243 244 245 246 247
248 249 250 251 252 253 254 255
>;
default-brightness-level = <255>; // 默认亮度
};
};
修改到这里,背光应该已经点亮了。
3.2. DSI 设备树节点修改
因为我们只修改一个接口使用,所有的修改都在最后一级的设备树文件追加 ( rk3588-neardi-android-ld160-mipi2hdmi.dtsi ) ,DSI设备节点追加修改如下:
&dsi1 {
status = "okay";
dsi1_panel: panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>; //复位
pinctrl