MSM8909+Android5.1.1之BSP---增加ili9806e(display LCD)的支援(轉)
Mobile display processor: MDP 3.05 for display processing
DCS (DisplayCommandSet):DCS是一個標準化的命令集,用於命令模式的顯示模組
1. 硬體原理圖
圖1
GPIO_24引腳功能是MDP verticalsync – primary Configurable I/O,如果我們有第2個顯示屏,還會用到GPIO_25引腳MDP vertical sync –secondary Configurable I/O,這裡我們只用到GPIO_24。
TP和背光部分後面再介紹。
2. 支援ili9806e顯示屏
Before starting any porting, verify thatyou are using the latest Android device tree and Qualcomm’s proprietary source.How to generate Panel dtsi/header file: Take these steps to update the XMLfiles for display.
參考device\qcom\common\display\tools\README.txt
2.1 生成panel dtsi/標頭檔案
參考device/qcom/common/display/tools/README.txt檔案,以tools資料夾下的《dsi-panel-nt35596-1080p-video.dtsi》為樣本,我們複製一份並命名為取名為panel_ili9806e_wvga_video.xml,根據ili9806e及原理圖修改其中的內容然後用命令:perl parser.pl panel_ili9806e_wvga_video.xml panel生成dsi-panel-ili9806e-wvga-video.dtsi和panel_ili9806e-wvga-video.h檔案
這裡我們重點介紹如何根據顯示屏驅動IC廠家給的初始化程式碼來填寫panel_ili9806e_wvga_video.xml檔案
(1) 上電初始化部分
//***************Page 1 Command******************************//
REGISTER,FF,5,FF,98,06,04,01 //Change to Page 1
REGISTER,08,1,10 // output SDA
REGISTER,21,1,01 // DE = 1 Active
REGISTER,30,1,02 // 480 X 800
…
在bootable/bootloader/lk/dev/gcdb/display/include/找到自帶的檔案panel_ili9806e_fwvga_video.h可知初始化的mipi包資料型別為0x39,見下圖:
圖2
根據初始化程式碼填寫的panel_ili9806e_wvga_video.xml上電初始化內容如下:
圖3
上圖對應的結構體如下:
kernel\drivers\video\msm\mdss\mdss_dsi_cmd.h
struct dsi_ctrl_hdr {
chardtype; /* data type */
charlast; /* last in chain */
charvc; /* virtual chan */
charack; /* ask ACK from peripheral */
charwait; /* ms */
shortdlen; /* 16 bits */
} __packed;
struct dsi_cmd_desc {
structdsi_ctrl_hdr dchdr;
char*payload;
};
(2) MIPI DSI介面
根據原理圖知道採用的是DSI介面,
採用MIPIDSI Interface介面
? DSI相容的外設支援Command或Video操作模式,用哪個模式由外設的構架決定
? Command模式是指採用傳送命令和資料到具有顯示快取的控制器。主機通過命令間接的控制外設。Command模式採用雙向介面
? Video模式是指從主機傳輸到外設採用時實象素流。這種模式只能以高速傳輸。為減少複雜性和節約成本,只採用Video模式的系統可能只有一個單向資料路徑
? Command Mode(類似於MPU介面)
? Video Mode(類似於RGB介面)- 必須用高速模式傳輸資料
command還是video模式由Driver IC RAM決定:
1.帶RAM IC可支援 command及video模式
2.不帶RAM IC只支援video模式
ILI9806E不帶RAM.
2.2 Lk支援ili9806e顯示屏
(1) 增加顯示屏標頭檔案
拷貝上面生成的panel_ili9806e-wvga-video.h檔案到
bootable/bootloader/lk/dev/gcdb/display/include/目錄下。
(2) bootable\bootloader\lk\target\msm8909\oem_panel.c增加對新顯示屏的支援
#include "include/panel_ili9806e_wvga_video.h"
enum {
HX8394D_720P_VIDEO_PANEL,
SHARP_QHD_VIDEO_PANEL,
TRULY_WVGA_CMD_PANEL,
HX8379A_FWVGA_SKUA_VIDEO_PANEL,
ILI9806E_FWVGA_VIDEO_PANEL,
ILI9806E_WVGA_VIDEO_PANEL,//kandi add at 2015.11.26
HX8394D_QHD_VIDEO_PANEL,
HX8379C_FWVGA_VIDEO_PANEL,
NT35512_FWVGA_VIDEO_PANEL,
OTM9605A_QHD_VIDEO_PANEL,
OTM9605A_QHD_CB03_VIDEO_PANEL,
OTM9605AG_QHD_VIDEO_PANEL,
HX8389B_QHD_VIDEO_PANEL,
HX8389BG_QHD_VIDEO_PANEL,
JD9161BA_FWVGA_VIDEO_PANEL,
UNKNOWN_PANEL
};
init_panel_data()函式增加:
case ILI9806E_WVGA_VIDEO_PANEL:
panelstruct->paneldata = &ili9806e_wvga_video_panel_data;
panelstruct->panelres = &ili9806e_wvga_video_panel_res;
panelstruct->color = &ili9806e_wvga_video_color;
panelstruct->videopanel = &ili9806e_wvga_video_video_panel;
panelstruct->commandpanel =&ili9806e_wvga_video_command_panel;
panelstruct->state = &ili9806e_wvga_video_state;
panelstruct->laneconfig = &ili9806e_wvga_video_lane_config;
panelstruct->paneltiminginfo
=&ili9806e_wvga_video_timing_info;
panelstruct->panelresetseq
=&ili9806e_wvga_video_reset_seq;
panelstruct->backlightinfo =&ili9806e_wvga_video_backlight;
pinfo->mipi.panel_cmds
=ili9806e_wvga_video_on_command;
pinfo->mipi.num_of_panel_cmds
=ILI9806E_WVGA_VIDEO_ON_COMMAND;
memcpy(phy_db->timing,
ili9806e_wvga_video_timings, TIMING_SIZE);
pinfo->mipi.signature =ILI9806E_WVGA_VIDEO_SIGNATURE;
panelstruct->paneldata->panel_lp11_init= 1;
break;
oem_panel_select()函式的QRD_SKUE_CB03這case改為用新顯示屏
case QRD_SKUE_CB03:
//panel_id= HX8389BG_QHD_VIDEO_PANEL;
//panel_id= OTM9605A_QHD_CB03_VIDEO_PANEL;
panel_id= ILI9806E_WVGA_VIDEO_PANEL; //kandi add at 2015.11.26
//panel_id= NT35512_FWVGA_VIDEO_PANEL;
break;
2.3 Kernel支援ili9806e顯示屏
(1) 增加顯示屏對應的裝置樹
拷貝上面生成的dsi-panel-ili9806e-wvga-video.dtsi到
kernel\arch\arm\boot\dts\qcom目錄下
(2) kernel\arch\arm\boot\dts\qcom\msm8909-qrd-skue-cb03.dtsi需要包含dsi-panel-ili9806e-wvga-video.dtsi
#include"dsi-panel-ili9806e-wvga-video.dtsi"
&mdss_mdp {
qcom,mdss-pref-prim-intf= "dsi";//DSI設定成主要介面
};
//&dsi_otm9605a_qhd_video {
// qcom,cont-splash-enabled;
//};
&pmx_mdss {
qcom,num-grp-pins= <1>;
qcom,pins= <&gp 8>;
};
&pmx_mdss_te {
qcom,num-grp-pins= <1>;
qcom,pins= <&gp 24>;
};
&mdss_dsi0 {
// qcom,dsi-pref-prim-pan= <&dsi_otm9605a_qhd_video>;
qcom,dsi-pref-prim-pan= <&dsi_ili9806e_wvga_video>;//設定PANEL NODE
pinctrl-names= "mdss_default", "mdss_sleep";
pinctrl-0= <&mdss_dsi_active &mdss_te_active>;
pinctrl-1= <&mdss_dsi_suspend &mdss_te_suspend>;
qcom,platform-reset-gpio= <&msm_gpio 8 0>;
};
需要主要dsi_ili9806e_wvga_video需要和顯示屏的dsi-panel-ili9806e-wvga-video.dtsi中的值一樣,如下:
&mdss_mdp {
dsi_ili9806e_wvga_video:qcom,mdss_dsi_ili9806e_wvga_video {
qcom,mdss-dsi-panel-name= "ili9806e wvga video mode dsi panel";
…
}
}
(3) kernel\arch\arm\boot\dts\qcom\msm8909-mdss.dtsi
&soc {
mdss_mdp: qcom,[email protected] { //包含mdss_mdp
compatible = "qcom,mdss_mdp";
...
}
mdss_dsi0: qcom,[email protected] { //包含mdss_dsi0
compatible = "qcom,mdss-dsi-ctrl";
...
}
}
做上面的修改後分別編譯bootloader和kernel
make aboot
make bootimage
相關帖子:
相關推薦
MSM8909+Android5.1.1之BSP---增加ili9806e(display LCD)的支援(轉)
Mobile display processor: MDP 3.05 for display processing DCS (DisplayCommandSet):DCS是一個標準化的命令集,用於命令模式的顯示模組 1. 硬體原理圖 圖1 GPIO_2
10.1拓展之:載入樣式(圓內轉個不停)
(2018/12/21 0:21 使用推薦插入程式碼功能報錯) HTML程式碼: <div class="circle"></div> CSS程式碼: html, body, .circle{ height: 100%; disp
Android實戰技巧之四十:Android5.1.1原始碼編譯與燒寫
購買Nexus手機的朋友大多是為了自己修改系統玩,再加上其較高的價效比,在開發者中還是廣受歡迎的。我的5太子被我升級到了6.0預覽版,玩的正嗨,捨不得換回到5.1時代了。不過鑑於距6.0原始碼釋出還有段日子,5.1的原始碼編譯與燒寫仍是主流,下面就記錄了整個過程
Wifi原始碼學習(Android5.1)之wifi開關
wifi系列部落格地址: 正文: 老方法,從介面入手: 現在我們看到的這兩個介面就是android5.1 的wifi 設定介面了,我們就從這兒入手。 我們可以看到這個介面大概分為三個部分 1、開關 2、option items 3、列表
msm8909+android5.1.1--開啟除錯(debug)串列埠
1.共同修改的地方 (1)kernel\arch\arm\configs\msm8909-1gb-CB03_defconfig 使以下項有效 CONFIG_SERIAL_MSM_HSL=y CONFIG_SERIAL_MSM_HSL_CONSO
Android實戰技巧之四十 Android5 1 1原始碼編譯與燒寫
購買Nexus手機的朋友大多是為了自己修改系統玩,再加上其較高的價效比,在開發者中還是廣受歡迎的。我的5太子被我升級到了6.0預覽版,玩的正嗨,捨不得換回到5.1時代了。不過鑑於距6.0原始碼釋出還有段日子,5.1的原始碼編譯與燒寫仍是主流,下面就記錄了整個過程(持續
MSM8909與android5.1.1的LCM屏的相容———自我感悟
剛剛接觸高通平臺,需要實現兩個LCM屏組的相容。於是就各種百度,什麼讀LCD_ID,通過AD轉換實現,什麼讀IC_ID軟體實現相容,暈。於是看著前輩的log,簡單實現了屏的相容。 相容的前提是實現屏的替換,高通的屏在Android5.1.1中分為兩部分。lk與kernel。
Android5.1 系統之省電模式探索一啟動流程
文章主要參考網址:http://www.th7.cn/Program/Android/201509/577840.shtml android5.1 省電模式開啟位置: 設定——電池——節電助手(充電狀態下預設無法開啟,即強制關閉) 省電模式開啟後系統狀態: 不同於其他第
Horizon7.1部署之二:Horizon Composer服務器安裝
vmware horizon composerHorizon Composer是個可選服務,如果計劃部署鏈接克隆桌面池(可以節省90%磁盤利用率),則需要安裝。我在windows2016上部署的Sql Server2016,ip是X.X.X.2,並在建立一個名為Horizon Composer的數據庫,防火墻
RecyclerView的使用(1)之HelloWorld
prot pub lines isa osi -s pri 構造函數 java 原創文章。轉載請註明 http://blog.csdn.net/leejizhou/article/details/50670657 RecyclerView是伴隨Andr
webpack 1.x 之配置的坑
blog .html 現在 file output col strong html中 logs 一、靜態資源目錄改變(默認在dist下面) 默認: webpack配置 output: { path: path.join(__dirname, ‘./dist‘)
weblogic 8.1教程之部署(三)
article pan mod post mark 點擊 應該 pass bsp 在 weblogic 都配置好了之後。就能夠部署項目了。部署項目的時候,能夠大體分為兩個步驟: 1,創建緩沖池; 2,配置
[javase學習筆記]-8.1 statickeyword之特點
之前 隨著 小強 pop dsm name 變量 popu tracking 這一節我們來學習java語言中一個新的keyword就是statickeyword。 當然對於每個keyword,我們都要明白的是它有什麽作用,怎麽用。我們先來看一個樣例:
linux集群系列(1) --- LVS之load balancing(NET、DR、TUN)
lvs lb nat 一、簡介 1.1. 負載均衡集群:LB (load balancing) 負載均衡集群為企業需求提供了更實用的系統。如名稱所暗示的,該系統使負載可以在計算機集群中盡可能平均地分攤處理。該負載可能是需要均衡的應用程序處理負載或網絡流量負載。這樣的系統非常適合於運行同
Hadoop-2.4.1學習之edits和fsimage查看器
文件的 順序 rup oev 兼容 require aps block mean 在hadoop中edits和fsimage是兩個至關關鍵的文件。當中edits負責保存自最新檢查點後命名空間的變化。起著日誌的作用,而fsimage則保存了最新的檢查點信息
android BSP與硬件相關子系統讀書筆記(1)android BSP移植綜述
tin 不用 googl csdn splay 編寫 app開發 意圖過濾器 trac 從linux驅動轉行至Android驅動開發大半年了,一開始就產生了一個很糾結目標和問題,就是不停的google如何porting android!這個問題得到的結果對於初出茅廬的我,感
3.1.1蠻力法之選擇排序
特性 序表 sel div wap 數組 排列 code for 選擇排序開始的時候,我們掃描整個列表,找到它的最小元素,然後和第一個元素交換,將最小元素放到它在有序表中的最終位置上。然後我們從第二個元素開始掃描列表,找到最後n-1個元素中的最小元素,再和第
Linux運維之道之網絡基礎學習筆記1.1
達內 linux雲計算運維 網絡基礎1.1TCP/IP詳細解讀:TCP/IP協議簡介:TCP/IP是最廣泛支持的通信協議集合---包括大量internet應用中的標準協議;---支持跨網絡架構,跨操作系統平臺的通信;主機與主機之間通信的三個要素:---IP地址;---子網掩碼;---IP路由;IP地址
1.1 學習之初;1.2 約定;1.3 認識Linux;1.4 創建虛擬機;1.5安裝centos7
安裝centos7給自己定個位:1. 定位:為更好地就業,不被社會淘汰,做一名合格的運維工程師2. 目標:半年左右學習完成基礎,之後跳槽運維工作,工作中多多積累經驗3. 工資:第一次奔著8k+起,一到兩年提升到15k-20k學習:1. 班主任每天安排的學習課程完成後,如果有空余時間精力再繼續預習新的課程,每天
整理第二周C知識點1流程之選擇
tro post 問題: spa 用法 整理 log 循環 必須 流程控制(重點) 1.流程控制:程序執行的數序 分類:1.順序 2.選擇 3.循環 2.選擇:某些代碼可能執行 也可能不執行,有選擇的執行一些代碼 (1)if用法: if(表達式) 語句A;//如果表達式為真