參考資料:RockChip發布的DRM Display Driver Development Guide手冊,以及網上大量相關博客資料
首先要拿到《屏幕硬件規格書》和《DataSheet》,軟件配置主要依靠DataSheet提供數據支持。
查閱DataSheet里面on sequence和off sequence說明,這是屏幕上電和下電的時序,將這些數據轉換成RK dts文件對應的格式,轉換方式RK文檔有說明。
在dsi結構樹下配置panel-init-sequence = [ ... ]上電時序,panel-exit-sequence = [...]下電時序。
&dsi1 {status = "okay";rockchip,lane-rate = <420>;dsi1_panel: panel@0 {status = "okay";compatible = "aoly,sl008pa21y1285-b00", "simple-panel-dsi";reg = <0>;backlight = <&backlight>;...panel-init-sequence = [15 00 02 00 0039 00 04 ff 12 83 0115 00 02 00 8039 00 03 ff 12 8315 00 02 00 c615 00 02 b0 03...];panel-exit-sequence = [05 64 01 2805 78 01 10];
比如這條數據
05 78 01 10
05表示DCS Short Write 沒有參數(我也沒明白沒有參數是啥意思?文檔是這么寫的),78代表延時78ms執行下一條,01應該是數據長度1, 最后的10是寫進去的數據。
比如這條數據
15 00 02 E0 00
15代表DCS Short? Write 寫2個數據,
00表示延遲0ms執行下一條指令
02代表數據長度2
E0 寄存器地址
00 是需要寫進去的十六進制數據
比如這條數據
39 00 11 E1 0A 18 1E 0F 08 10 0B 0A 04 07 0C 07 0F 11 0C 06
39代表DCS Long Write 寫2個以上的數據
00代表延時0ms
11代表數據長度,注意這個11是十六進制的,表示寫入的數據長度是17
E1 寄存器地址
后面這些就是寫寄存器的值