[嵌入式linux] rk3568 android11點屏流程

tt7643066發表於2022-06-11

rk3568  晶片非常強大,可以支援的螢幕介面有很多,顯示介面支援可是非常豐富的,
[嵌入式linux] rk3568 android11點屏流程

sunychip-rk3568 開發板支援  MIPI  介面的螢幕,介面如下圖所示:
[嵌入式linux] rk3568 android11點屏流程

1  螢幕點亮流程
點亮螢幕基本的流程是一致的,一般是背光使能---->背光點亮---->螢幕使能---->reset 引
腳按照指定的時序/波形拉高或者拉低---->初始化序列命令傳送。
流程主要是以下幾步
需要向螢幕廠商要一些螢幕關鍵引數和資料
進行關鍵引腳對應
進行裝置樹配置
進行驅動配置
原始碼編譯,燒寫映象測試
15.2.1關鍵引腳對應
15.2.2螢幕關鍵引數
15.2.3螢幕初始化序列改寫
2 根據屏參和硬體設計填寫  dts
這一部分是重點,全部之前的工作全為此處進行準備。我們新建一個 dtsi 檔案特意放屏
幕相關的:kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi
然後在kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dts 檔案中加入這個頭文
件,如下圖所示:
[嵌入式linux] rk3568 android11點屏流程


另注意,由於 DTS 檔案設計到層層包含(DTS 檔案可以包含字尾為.dtsi 的檔案,作用就
像 C 語言中的.h 檔案),故建議重要配置及板卡特性配置寫到最後一級的 DTS 檔案中,防
止由於在較高層級的 dtsi 配置後手誤在後面又進行了配置,導致配置被錯誤覆蓋。
共需要以下幾個重點內容:dsi, route_dsi, backlight, vcc_lcd,dsi_in_vopb,
dsi_in_vopl,vopb。
2.1 dsi 節點
mipi 螢幕我們使用 dsi1 介面,所以需要在裝置樹裡面查詢 dsi 節點,如下圖所示:
kernel/arch/arm64/boot/dts/rockchip/rk3568.dtsi


(瑞芯微寫好的)
[嵌入式linux] rk3568 android11點屏流程
kernel/arch/arm64/boot/dts/rockchip/rk3568.dtsi(瑞芯微寫好的)



dsi1: dsi@fe070000 {
compatible = "rockchip,rk3568-mipi-dsi";
reg = <0x0 0xfe070000 0x0 0x10000>;
interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_DSITX_1>, <&cru HCLK_VO>, <&video_phy1>;
clock-names = "pclk", "hclk", "hs_clk";
resets = <&cru SRST_P_DSITX_1>;
reset-names = "apb";
phys = <&video_phy1>;
phy-names = "mipi_dphy";
power-domains = <&power RK3568_PD_VO>;
rockchip,grf = <&grf>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
dsi1_in: port  {
reg = <0>;
#address-cells = <1>; dsi1: dsi@fe070000 {
compatible = "rockchip,rk3568-mipi-dsi";
reg = <0x0 0xfe070000 0x0 0x10000>;
interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_DSITX_1>, <&cru HCLK_VO>, <&video_phy1>;
clock-names = "pclk", "hclk", "hs_clk";
resets = <&cru SRST_P_DSITX_1>;
reset-names = "apb";
phys = <&video_phy1>;
phy-names = "mipi_dphy";
power-domains = <&power RK3568_PD_VO>;
rockchip,grf = <&grf>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
dsi1_in: port  {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
dsi1_in_vp0: endpoint@0 {
reg = <0>;
remote-endpoint = <&vp0_out_dsi1>;
status = "disabled";
};
dsi1_in_vp1: endpoint  {
reg = <1>;
remote-endpoint = <&vp1_out_dsi1>;
status = "disabled";
};
};
};
};


#size-cells = <0>;
dsi1_in_vp0: endpoint@0 {
reg = <0>;
remote-endpoint = <&vp0_out_dsi1>;
status = "disabled";
};
dsi1_in_vp1: endpoint  {
reg = <1>;
remote-endpoint = <&vp1_out_dsi1>;
status = "disabled";
};
};
};


};
預設的原始碼中是配置了 dsi1 節點的,是適配的瑞芯微的螢幕。現在我們要適配迅為的
MIPI 7 寸屏,所以我們在修改之前,要刪掉瑞芯微之前適配的螢幕節點。在下圖的裝置樹中
找到&dsi1 以及和 dsi1 相關的註釋掉。
[嵌入式linux] rk3568 android11點屏流程


我們使用 dsi1 繫結到 vp1 上,所以 dsi1_in_vp0 節點為 disabled,dsi1_in_vp1 節點為 okay
當 dsi1 使能的時候,video_phy1 要使能,video_phy0 要關閉。裝置樹 topeet_rk3568_lcds.dtsi


中新增如下圖所示:
[嵌入式linux] rk3568 android11點屏流程


2.2 Backlight
背光常用的有三種情況:
一是 常開。
二是 背光 IC 使能後,輸入 PWM 訊號調光。
三是 背光 IC 使能後,透過 FB 獲得反饋自動進行調光。


裝置樹裡面配置背光。首先根據原理圖,我們知道使用的是 pwm5,


pwms = <&pwm5 0 25000 0>; 配置 pwm,使用 pwm5,25000 是週期,pwm 為正極性。
brightness-levels 屬性:配置背光亮度陣列,一般以值 255 為一個 scale,當 pwm 設定為正
極時,從 0~255 表示背光為正極,佔空比從 0%~100%變化,,255~0 為負極性,佔空比從
100%~0%變化,當 pwm 設定為負極性時,反之。
default-brightness-level 屬性,時開機時預設背光亮度,範圍是 0~255
2.3 **  顯示
裝置樹kernel/scripts/dtc/include-prefixes/arm64/rockchip/rk3568.dtsi 中節點如下:
[嵌入式linux] rk3568 android11點屏流程
[嵌入式linux] rk3568 android11點屏流程
[嵌入式linux] rk3568 android11點屏流程


所以我們要使用 route_dsi1 顯示通路,繫結到 vp1 上,修改
kernel/scripts/dtc/include-prefixes/arm64/rockchip/topeet_rk3568_lcds.dtsi檔案,新增如下所
示:


3 Config  配置
RK3568 SDK 下 kernel/arch/arm64/configs/*_defconfig 已經把 LCD 相關的配置設定好了,
如果自己做了修改,修改kernel/arch/arm64/configs/rockchip_defconfig 配置檔案,增加如下
所示:
CONFIG_DRM_ROCKCHIP=y
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
CONFIG_DRM_PANEL_SIMPLE=y
4 燒寫驗證
4.1 測試顯示
重新編譯 android 原始碼,燒寫映象,發現 mipi 螢幕顯示正常。如下圖所示:
[嵌入式linux] rk3568 android11點屏流程
4.2  背光亮度調節測試
目前還沒有配置螢幕觸控,我們可以在開發板上插上滑鼠,進入”設定”APP,依次點選
“顯示”,“亮度”,拖動滑條可以調節亮度。
也可以使用命令列來設定螢幕亮度,數值可以在 0~250 中設定,數字越大,亮度越高。


echo 100 >/sys/class/backlight/backlight/brightness


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69948385/viewspace-2900028/,如需轉載,請註明出處,否則將追究法律責任。

相關文章