MIPI-DSI LP mode命令及格式詳解

D- PHY的物理層支持HS(High Speed)和LP(Low Power)兩種工作模式

  • HS模式:低壓查分信號 功耗大 高速率(80M -1Gbps) 信號幅值(100mv-300mv)
  • LP模式:單端信號 功耗小,速率低(< 10Mbps) 信號幅值(0-1.2V)

在高速模式下,通道狀態是差分的0或1,定義P比N高時定義爲1,P比N低時定義爲0,此時線上典型電壓爲差分200mv

在LP模式下,只用lane0傳輸數據和時鐘,雙向數據傳輸。

鏈路層的模式分爲:Command模式Video模式

  • 鏈路層選擇Command模式時,物理層可以爲HS模式,也可以爲LP模式;
  • 鏈路層選擇Video模式時,物理層只能選擇HS模式。

 

Video模式時,物理層只能選擇HS模式,下面是video模式下傳遞一個些圖片像素數據包(長包)。

和command模式不同的是Data Type,這裏的Data Type是3Eh,下面有一張Data Type的表。

 

 

下面介紹一下qualcomm平臺dtsi配置文件中關於對video模式配置說明:

qcom,mdss-dsi-panel-type = "dsi_video_mode";

qcom,mdss-dsi-on-command = [29 01 00 00 00 00 04 B9 FF 83 94

29 01 00 00 00 00 02 C6 EF

05 01 00 00 78 00 02 11 00

05 01 00 00 14 00 02 29 00];

qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00

05 01 00 00 78 00 02 10 00];

qcom,mdss-dsi-on-command-state = "dsi_lp_mode";

qcom,mdss-dsi-off-command-state = "dsi_hs_mode";

qcom,mdss-dsi-on-command 是在Mdss_dsi_panel.c (drivers\video\msm\mdss)的

static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)函數裏用到的,點亮LCM的指令,未來這個函數將會被FB驅動resume裏面調用到。

類似的,qcom,mdss-dsi-off-command 同樣在文件

Mdss_dsi_panel.c (drivers\video\msm\mdss)的static int mdss_dsi_panel_off(struct mdss_panel_data *pdata)用到,未來將會被FB驅動的suspend函數裏調用,用於關掉LCM的指令。

 

定義這個panel爲"dsi_video_mode",在下發mdss-dsi-on-command之後會把DSI轉換到video-hs模式下。

 

那麼mdss-dsi-on-command 和 mdss-dsi-off-command是什麼時候調用的呢?

如果按照MTK平臺對LCM處理的思維,大概是這樣的:

LCM_DRIVER nt52021_hd720_dsi_vdo_lcm_drv =

{

.name = "nt52021_hd720_dsi_vdo",

.set_util_funcs = lcm_set_util_funcs,

.get_params = lcm_get_params,

.init = lcm_init,//reset 調用DSI發初始化數據

.suspend = lcm_suspend,//調用DSI發滅panel數據

.resume = lcm_resume,//reset 調用DSI發初始化數據

.compare_id = lcm_compare_id,

#if (LCM_DSI_CMD_MODE)

.update = lcm_update,

#endif

};

而高通平臺是則是在LCM的FB驅動裏面,probe通過調用MDP驅動結構體的初始化函數,調用DSI驅動想MDPcore註冊的回調函數,這些回調函數就是操作DSI發送不同的數據,而這些數據恰恰就是dtsi裏面需要配置的mdss-dsi-on-command 和 mdss-dsi-off-command。

 

言歸正傳,前面說明了DSI 在video模式下面發送一些像素圖片的數據包內容,但是在實際傳輸這些數據包的時候需要遵守一些時序控制。

Video模式又分三種子模式:

1 Non-burst Mode Sync pulses: 在這種模式下,DSI基於各種不同的同步數據包來做數據同步。這種數據包括:重構,時間校準等。更具體的請參考DSI協議標準。

2 Non-burst Mode Sync event: 這種模式和第一種模式很像,但是這種模式不會發重構和時間校準的數據包,它們只發送一種叫做”Sync event”的包。

3 Burst mode: 在horizontal 的時序是一樣的情況下DSI會把連接的速度提升到Panel支持的最大速度。在這種模式下發送RGB數據包的時間被壓縮,以留出更多的時間用來傳送其他的數據。

爲了使能Video模式Host需要發送各種不同的包到panel用來設置開始和結束的Porch.以下是Video模式中用到的數據包:

• VSS:  DSI Sync Event Packet: V Sync Start

• VSE:  DSI Sync Event Packet: V Sync End

• BLLP: DSI Packet: Arbitrary sequence of non-restricted DSI packets or Low Power Mode incluing optional BTA.

• HSS:  DSI Sync Event Packet: H Sync Start

• HAS:  DSI Blanking Packet: Horizontal Sync Active or Low Power Mode, No Data

• HSE:  DSI Sync Event Packet: H Sync End

• HFP:  DSI Blanking Packet: Horizontal Front Porch or Low Power Mode

• HBP:  DSI Blanking Packet: Horizontal Back Porch or Low Power Mode

• RGB:  DSI Packet: Arbitrary sequence of pixel stream and Null Packets

• LPM:  Low Power Mode incuding optional BTA

 

上圖頂部有圓弧的代表數據包,長方形的代表時序的狀態。

那麼MIPI host如何輸入一幀的數據呢,下面分別是三種video mode下的數據傳輸時序圖:

 

 

 

 

 

結合屏的物理結構纔看得動上面時序圖的含義:

 

 

以BURST mode爲例 :

首先會發送VSPW行(VSA lines)的空數據包,在發送VBP lines的空數據包,接着發送VACT lines(屏寬)的有效RGB數據,其中每一行數據都包含HSS 行開始信號+HBP數據包+RGB+HFP數據包。最後就是發送VFP lines的空數據包。這樣就刷滿了一整屏,也就是一幀的數據。

 

那麼這三種video模式的區別就是傳遞的數序和數據包位置的不同,至於最終在dtsi配置哪一個模式就要根據實際的panel IC所支持video 模式來。

dtsi對應項:

qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";

 

另外說明一下dtsi 裏面qcom,mdss-dsi-h-sync-pulse 的含義

在kernel/Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt:196中說明了:

 

這裏所說的pulse mode就是Non-burst Mode Sync pulses模式。

根據時序圖,如果這個值爲1就會發圖中紅色圈圈的部分,如果爲0就不會發,不過這個只用於這種模式下有效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章