1. 程式人生 > >qualcomm平臺 display bring up 過程詳解

qualcomm平臺 display bring up 過程詳解

1.參考文件: 
1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf

2) 80-NN766-1_A_Linux_Android_Display_Driver_Porting_Guide.pdf

3) 80-NH713-1_F_DSI_Timing_Parameters.xlsm

LCD除錯主要有三個任務: 
4.1.1. 供電 
➢ DSI供電 
8974晶片內部的DSI模組需要三個外部供電 
mdss_dsi0: qcom,[email protected]
compatible = “qcom,mdss-dsi-ctrl”; 
label = “MDSS DSI CTRL->0”; 
cell-index = <0>; 
reg = <0xfd922800 0x1f8>, 
<0xfd922b00 0x2b0>, 
<0xfdf30000 0x108>; 
reg-names = “dsi_ctrl”, “dsi_phy”, “mmss_misc_phys”; 
//vdd-supply = <&pm8941_l22>; 
vdd-supply = <&pm8941_lvs3>; // lvs3 is for LCD vddio, not for dsi 
vddio-supply = <&pm8941_l12>; 
vdda-supply = <&pm8941_l2>; 
但是,根據高通的參考原理圖,只有兩個供電vddio-supply, vdda-supply是需要的。其中lvs3是用來給LCD vddio供電,不是給dsi用的。 
➢ LCD供電 
根據原理圖看看LCD需要哪些供電 
&mdss_dsi0 {
qcom,dsi-pref-prim-pan = <&dsi_r69007_wqxga_cmd>;
pinctrl-names = "mdss_default", "mdss_sleep";
pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
qcom,platform-te-gpio = <&tlmm 10 0>;
qcom,platform-reset-gpio = <&tlmm 8 0>;
};


這兩個GPIO是用來控制供電的,AVDD,VDD。 
供電需要根據具體的原理圖來改。 


➢ GPIO配置 
主要有兩個GPIO需要配置,reset和te。根據原理圖配置 
qcom,platform-te-gpio = <&tlmm 10 0>;
qcom,platform-reset-gpio = <&tlmm 8 0>;
4.1.2. 背光 
根據不同型別的螢幕,選擇不同的背光,一般TFT用WLED來做背光,OLED是自發光的,背光電路由屏上的驅動IC提供。


    qcom,[email protected] {
        status = "okay";
        qcom,wled_0 {
            label = "wled";
            linux,name = "wled:backlight";
            linux,default-trigger = "bkl-trigger";
            qcom,cs-out-en;
            qcom,op-fdbck = <0>;
            qcom,default-state = "on";
            qcom,max-current = <20>;
            qcom,ctrl-delay-us = <0>;
            qcom,boost-curr-lim = <3>;
            qcom,cp-sel = <0>;
            qcom,switch-freq = <2>;
            qcom,ovp-val = <2>;
            qcom,num-strings = <2>;
            qcom,id = <0>;
        };
    };
需要注意max-current,高通預設是25mA,但是LCD晶片的資料手冊裡大部分是20mA。設定過高,會導致螢幕發燙,多耗電。 

4.1.3. LCD驅動 
LCD的驅動已經由Vendor廠商做好了,除了一些GPIO的配置可能需要加入到驅動檔案,剩下的主要是製作LCD的配置檔案。 
&mdss_mdp { 
dsi_jdi_1080_vid: qcom,mdss_dsi_jdi_1080p_video { 
qcom,mdss-dsi-panel-name = “jdi 1080p video mode dsi panel”; 
qcom,mdss-dsi-panel-controller = <&mdss_dsi0>; 
qcom,mdss-dsi-panel-type = “dsi_video_mode”;○1 
qcom,mdss-dsi-panel-destination = “display_1”; 
qcom,mdss-dsi-panel-framerate = <60>; 
qcom,mdss-dsi-virtual-channel-id = <0>; 
qcom,mdss-dsi-stream = <0>; 
qcom,mdss-dsi-panel-width = <1080>; 
qcom,mdss-dsi-panel-height = <1920>; 
qcom,mdss-dsi-h-front-porch = <96>;○2 
qcom,mdss-dsi-h-back-porch = <64>; 
qcom,mdss-dsi-h-pulse-width = <16>; 
qcom,mdss-dsi-h-sync-skew = <0>; 
qcom,mdss-dsi-v-back-porch = <16>; 
qcom,mdss-dsi-v-front-porch = <4>; 
qcom,mdss-dsi-v-pulse-width = <1>; 
qcom,mdss-dsi-h-left-border = <0>; 
qcom,mdss-dsi-h-right-border = <0>; 
qcom,mdss-dsi-v-top-border = <0>; 
qcom,mdss-dsi-v-bottom-border = <0>; 
qcom,mdss-dsi-bpp = <24>; 
qcom,mdss-dsi-underflow-color = <0xff>; 
qcom,mdss-dsi-border-color = <0>; 
qcom,mdss-dsi-on-command = [15 01 00 00 00 00 02 55 00○3 
05 01 00 00 78 00 02 29 00 
05 01 00 00 78 00 02 11 00]; 
qcom,mdss-dsi-off-command = [05 01 00 00 02 00 02 28 00 
05 01 00 00 79 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-h-sync-pulse = <0>; 
qcom,mdss-dsi-traffic-mode = “burst_mode”; 
qcom,mdss-dsi-bllp-eof-power-mode; 
qcom,mdss-dsi-bllp-power-mode; 
qcom,mdss-dsi-lane-0-state; 
qcom,mdss-dsi-lane-1-state; 
qcom,mdss-dsi-lane-2-state; 
qcom,mdss-dsi-lane-3-state; 
qcom,mdss-dsi-panel-timings = [e7 4f 26 00 7e 6a 2a 3a 2d 03 04 00];○4 
qcom,mdss-dsi-t-clk-post = <0x04>; 
qcom,mdss-dsi-t-clk-pre = <0x1b>; 
qcom,mdss-dsi-bl-min-level = <1>; 
qcom,mdss-dsi-bl-max-level = <4095>; 
qcom,mdss-dsi-dma-trigger = “trigger_sw”; 
qcom,mdss-dsi-mdp-trigger = “none”; 
qcom,mdss-dsi-bl-pmic-control-type = “bl_ctrl_wled”; 
qcom,mdss-dsi-reset-sequence = <1 20>, <0 200>, <1 20>; 
qcom,mdss-pan-physical-width-dimension = <61>; 
qcom,mdss-pan-physical-height-dimension = <110>; 
}; 
}; 
從LCD廠商提供的資料,確定○1panel type是video還是command。

LCD廠商也會提供○2porch值和初始化序列○3mdss-dsi-on-command。但是廠商提供的初始化序列的格式可能不匹配,需要我們自己來改。 
○4panel timings是用一個表計算出來的80-NH713-1_F_DSI_Timing_Parameters.xlsm,這個excel檔案需要office2010及以上版本的軟體才能執行裡面的巨集。 


4.1.4. LK裡的顯示驅動 
LK的顯示驅動預設是關閉的。LK的顯示和Kernel裡的是獨立的,增加LK裡的顯示是為了更快的顯示Logo,給使用者更好的體驗。Kernel裡第一屏資料大概要7秒左右才能顯示出來。 
1) 使能LK裡的顯示 
bootable/bootloader/lk/target/msm8996/rules.mk 
DEFINES += DISPLAY_SPLASH_SCREEN=1 
2) 生成驅動檔案 
使用高通的GCDG工具可以生成dtsi和h檔案用於kernel和lk。 
device/qcom/common/display/tools/ 
perl parser.pl panel_nt35590_720p_cmd.xml panel


注意這個parser.pl需要xml庫,需要安裝以下兩個庫才能使用:libxml2, libxml-libxml-perl。 
如果驅動正常,手機開機是會顯示一個小企鵝的圖示。 


4.1.5. 除錯 
1) 閃屏,花屏 
調節Porch值 


2) 背光亮度,顏色,對比度等 
需要和屏廠一起除錯

相關推薦

qualcomm平臺 display bring up 過程

1.參考文件: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_Linux_Android_Display_Driver_Porting_Guide.

Nginx實現集群的負載均衡配置過程

post 發現 forward too strong eight glin 內容 請求 Nginx實現集群的負載均衡配置過程詳解 Nginx 的負載均衡功能,其實實際上和 nginx 的代理是同一個功能,只是把代理一臺機器改為多臺機器而已。 Nginx 的負載均衡

使用HeartBeat實現高可用HA的配置過程

接口 dea ive for 64位 doc 主機名 停止 enforce 使用HeartBeat實現高可用HA的配置過程詳解 一、寫在前面 HA即(high available)高可用,又被叫做雙機熱備,用於關鍵性業務。簡單理解就是,有2臺機器 A 和 B,正常

OC學習小結之ios運行過程

for cat 用戶 with res nbsp c學習 launch cati 1)ios核心類 UIView 視圖,屏幕上能看得見的東西都是視圖,例如:按鈕、文本標簽、和表格等 UIViewController:內部默認有個視圖(UIView),負責管理UIView的

storm集群部署和配置過程

多少 帶來 進程 創建 使用 命令 介紹 aml 可能 ---恢復內容開始--- 先整體介紹一下搭建storm集群的步驟: 設置zookeeper集群 安裝依賴到所有nimbus和worker節點 下載並解壓storm發布版本到所有nimbus和worker節點 配置s

TCP協議的3次握手與4次揮手過程

進行 發送數據 不存在 信息 隊列 協議 標識 方式 ar9 所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。所謂四次揮手(Four-Way Wavehand)即終止TCP

轉-Linux啟動過程(inittab、rc.sysinit、rcX.d、rc.local)

dha mage 模塊 都是 交換 如何配置 mas 完全 打開 http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=26042 1)BIOS自檢2)啟動Grub/Lilo3)加載內

TCP數據傳輸過程

握手 ron 布爾 位域 fcm 打開 數據段 2個 處理 在學習三次握手的時候,我們知道其中有seq、ack兩個序列號。 如果不仔細了解,那麽可能只知道發回去的時候要加一。 下文將著重介紹,關於序列號的傳輸過程。 最關鍵的一句話:序列號為當前端成功發送的數據位數,確認號為

嵌入式開發學習(2)<S5PV210啟動過程>

nan ios eight img 啟動方式 margin 需要 外部 啟動 基本概念: 內存:   SRAM 靜態內存 特點:容量小、價格高,優點:不需要軟件初始化,上電就能用。   DRAM 動態內存 特點:容量大、價格低,缺點:上電不能用,需要軟件初始化。  

linux--系統啟動及安裝過程

linux啟動先通過一張圖來簡單了解下整個系統啟動的流程,整個過程基本可以分為POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel本文出自 “運維自動化” 博客,請務必保留此出處http://shower.blog.51cto.co

HBase寫過程

family region -s ont 流程 size 詳解 put 時機 1基本流程 (1)客戶端發起PUT請求 (2)Zookeeper返回hbase:meta所在的region server (3)去(2)返回的server上,根據rowkey查詢寫操作所在的reg

Mysql加鎖過程

插入記錄 控制 uniq null 詳細 server 讀者 index 理論知識 1、背景   MySQL/InnoDB的加鎖分析,一直是一個比較困難的話題。我在工作過程中,經常會有同事咨詢這方面的問題。同時,微博上也經常會收到MySQL鎖相關的私信,讓我幫助解決一些死

Mysql加鎖過程(4)-select for update/lock in share mode 對事務並發性影響

per inno targe 允許 evel transacti 修改 not null warn select for update/lock in share mode 對事務並發性影響 事務並發性理解 事務並發性,粗略的理解就是單位時間內能夠執行的事務數量,常見的單

CentOS 7系統KVM虛擬機安裝過程

選項 安裝 svm roc 支持 linu 系統 kvm flags 一、如何安裝KVM 這裏我是在Windows系統中使用VMware Workstaion安裝了一臺Linux的虛擬機來進行KVM的安裝操作的。首先,我們需要了解我們安裝的Linux系統的CPU是否支持KV

Mysql加鎖過程(9)-innodb下的記錄鎖,間隙鎖,next-key鎖

ans 唯一索引 crazy cimage -h insert tran 存在 gin Mysql加鎖過程詳解(1)-基本知識 Mysql加鎖過程詳解(2)-關於mysql 幻讀理解 Mysql加鎖過程詳解(3)-關於mysql 幻讀理解 Mysql加鎖過程詳解(4)-

SQL語句執行過程

使用 錯誤信息 意思 排錯 表達 對象 data 才會 結果集   一、SQL語句執行原 第一步:客戶端把語句發給服務器端執行當我們在客戶端執行 select 語句時,客戶端會把這條 SQL 語句發送給服務器端,讓服務器端的進程來處理這語句。也就是說,Oracl

淺談Web緩存-緩存的實現過程

根據 直觀 pre -i sha 轉載 align 緩存 請求轉發 在前端開發中,性能一直都是被大家所重視的一點,然而判斷一個網站的性能最直觀的就是看網頁打開的速度。其中提高網頁反應速度的一個方式就是使用緩存。一個優秀的緩存策略可以縮短網頁請求資源的距離,減少延遲,並且

OSPF鄰接關系建立過程

拓撲 由於 ethernet 並且 interval fec 進入 根據 alt 1.Down-OSPF路由器啟動後開始向外發Hello,但是沒有收到對方的Hello報文。2.Attempt-NBMA才會由Down進入此狀態,此狀態只在NBMA網絡上存在,手工指定鄰居後便會

java利用myeclipse自帶三大框架搭建三大框架(Hibernate+Struts2+Spring)過程

sun 過程 9.png att alt 分享圖片 struts apach sch 搭建過程因人而異,我的搭建過程大致是這樣的:   1.創建一個javaweb項目;   2.導入Spring框架,上圖:     2.1:     2.2:     2.3:   3.

Linux啟動過程

linux啟動過程一、Linux系統開機啟動過程第一步:開機自檢,加載BIOS第二步:讀取MBR第三步:Boot Loader grub引導菜單第四步:加載kernel內核第五步:init進程依據inittab文件夾來設定運行級別第六步:init進程執行rc.sysinit第七步:啟動內核模塊第八步:執行不同