<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SM7250(高通5G)平臺LCD bringup

          共 12975字,需瀏覽 26分鐘

           ·

          2021-04-24 01:38


          寫在前面的話

          高通平臺顯示這一塊,自從去年開始,高通全面使用SMxxxx命名的芯片

          比如高端系列:SM8350(驍龍888),SM8250(驍龍865),SM8150(驍龍855)

          中端系列:SM7250(驍龍765g),SM7350(驍龍775g)

          低端系列:SM6250,SM6350

          入門系列:SM4250,SM4350

          SMxxxx系列跟SDMxxx系列相比較,主要變化如下:

          1. SMxxxx系列采用了DRM顯示架構(gòu)(Direct Rendering Manager),代碼位于:kernel/drivers/gpu/drm
          2. SDMxxx系列采用FB(framebuffer)顯示架構(gòu),代碼位于:kernel/drivers/video/fbdev

          1. 代碼路徑

          • display驅(qū)動路徑:

          部分平臺kernel/msm-4.19/techpack/display部分平臺kernel/msm-4.19/drivers總之都是在kernel下,可以搜素關(guān)鍵文件來查找find ./ -name dsi_display.c

          • displayDTS路徑:

          arch/arm64/boot/dts軟連接到 vendor/qcom/proprietary/devicetree-4.19/qcom/display

          • display UEFI路徑:

          boot_images/QcomPkg/SocPkg/XXXpanPkg

          2.準(zhǔn)備工作:

          原理圖端:

          1. 查看原理圖,確定LCD上電和接口
          2. 查看背光控制方式
          3. 查看與TP的連接

          代碼端:

          1. 根據(jù)原理圖寫出lcd的dts配置文件

          2. 查看驅(qū)動代碼中的關(guān)鍵代碼:

            1> lcd panel的選擇和加載

            2> 背光的初始化和控制

            3> Lcd 初始化時序和init code下載流程確認(rèn)

          3.點(diǎn)亮順序:

          先點(diǎn)亮kernel,再點(diǎn)亮UEFI。Lcd的點(diǎn)亮工作2-3天之內(nèi)完成,kernel點(diǎn)亮后,lcd功能正常,不會影響別的模塊的開發(fā)

          工作,uefi可以慢慢調(diào)試,盡量自己掌握工作的進(jìn)度,不要被工作牽著鼻子走。

          1. 關(guān)閉UEFI panel的添加(DISP_MODE_PANEL_NONE)和禁止連續(xù)顯示(DISABLE_SEAMLESS_SPLASH)
          2. kernel正確加載dts中配置的panel,獲取panel的name
          3. 點(diǎn)亮背光
          4. 點(diǎn)亮lcd
          5. 調(diào)試LCD的休眠喚醒
          6. 點(diǎn)亮UEFI。

          4.LCD 原理圖分析:

          lcd接線引腳原理圖

          Lcd引腳主要包括:

          MIPI信號線:(4對差分信號MIPI_DSI0~3_LANE0_P_CON MIPI_DSI0~3_LANE0_N_CON

          1對時鐘線:MIPI_DSI0_CLK_P>_CON、MIPI_DSI0_CLK_N_CON)

          偏壓供電:(+5V5_LCD_VSP -5V5_LCD_VSN),1.8v常用電(VREG_L1C_1P80)

          LCD 復(fù)位引腳:LCM_RESET_N

          背光控制引腳:PWM控制或者(PMIC DC控制,接背光led正極)

          背光負(fù)極引腳:LCD_LED_K1、LCD_LED_K2(背光物理結(jié)構(gòu)布局為2串并列起來,所以負(fù)極有2串)

          Lcd TE引腳:LCM_FTE(video mode不用)

          LCD背光控制IC

          LCD兼容問題

          LCD ID引腳: LCD_ID0 LCD_ID1 LCD_ID2這個3個引腳主要用來同一套代碼,不同項(xiàng)目,不同屏幕之間的兼容。多

          款屏幕兼容最極端的條件是,一套代碼,做3-5款產(chǎn)品,都使用了相同的屏幕IC,相同的模組。兼容的方法有3種

          1>通過ID引腳讀取電平高低確定哪款LCD

          2>通過讀取lcd的只讀寄存器確定哪款LCD

          3>通過product id( 這個變量里面加入產(chǎn)品name  IC name  模組name)

          這些識別要在UEFI中實(shí)現(xiàn),通過cmdline傳遞到kernel解析出來

          LCD 偏壓芯片

          LCD供電方式

          Lcd的供電一般有兩種方式:

          1>外接regulator(外接的regulator本身也需要使能和控制),輸出vsp和vsn(+-5.5V)

          2>PMIC (ldo 和ncp)直接輸出

          為了方便描述,本例中l(wèi)cd不外接背光IC和偏壓IC,使用高通原生的設(shè)計方式。

          5.點(diǎn)亮流程:

          5.1 創(chuàng)建并配置Panel的dtsi文件

          1. 在目錄vendor/qcom/proprietary/devicetree-4.19/qcom/display下,創(chuàng)建該主板配套Panel的dtsi文件:dsi-panel-ft8719p-1080p-video.dtsi
          2. 填寫模塊名:參考同目錄下已有的其他型號Panel的dtsi文件,在文件dsi-panel-ft8719p-1080p-video.dtsi中輸入文件頭:
          &mdss_mdp {
           dsi_ft8719p_1080p_video: qcom,mdss_dsi_ft8719p_1080p_video {
            };
          };
          1. 配置LCM參數(shù):LCD屏參數(shù):porch

          根據(jù)從廠商處獲取的porch資料,在文件dsi-panel-ft8719p-1080p-video.dtsi中于步驟2.輸入的{ };中輸入:

          qcom,mdss-dsi-panel-framerate = <60>;
               qcom,mdss-dsi-panel-width = <1080>;
               qcom,mdss-dsi-panel-height = <2340>;
               qcom,mdss-dsi-h-front-porch = <24>;
               qcom,mdss-dsi-h-back-porch = <24>;
               qcom,mdss-dsi-h-pulse-width = <4>;
               qcom,mdss-dsi-h-sync-skew = <0>;
               qcom,mdss-dsi-v-back-porch = <26>;
               qcom,mdss-dsi-v-front-porch = <112>;
               qcom,mdss-dsi-v-pulse-width = <4>;
               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>;

          一般先直接使用廠商提供的porch值,若顯示有問題再進(jìn)行修改

          1. 配置on/off command:根據(jù)從廠商處獲取的init code 在文件dsi-panel-ft8719p-1080p-video.dtsi中與步驟3.并列輸入:
           qcom,mdss-dsi-on-command = [       
                15 01 00 00 00 00 02 00 00
                39 01 00 00 00 00 04 FF 87 19 01
                15 01 00 00 00 00 02 00 80
                39 01 00 00 00 00 03 FF 87 19
                      15 01 00 00 05 00 02 3A 70
                39 01 00 00 00 00 07 B3 04 38 09 24 C0 F8
                15 01 00 00 00 00 02 00 82
                39 01 00 00 00 00 03 a7 22 04
                15 01 00 00 00 00 02 00 83
                      ...
                      05 01 00 00 78 00 02 11 00  
                      05 01 00 00 32 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";

          廠商提供的initcode不可直接使用,需轉(zhuǎn)換command格式,格式要求如下:

          由多個基于 qcom DSI 控制器協(xié)議的 dcs 數(shù)據(jù)包構(gòu)成的字節(jié)流。

          字節(jié) 0:dcs 數(shù)據(jù)類型(無參數(shù)默認(rèn)05;一參數(shù)默認(rèn)15;多參數(shù)默認(rèn)39)

          字節(jié) 1:設(shè)定指明這是獨(dú)立數(shù)據(jù)包(無鏈)

          字節(jié) 2:虛擬通道數(shù)

          字節(jié) 3:需要來自客戶端的確認(rèn)(dcs 讀取命令)

          字節(jié) 4:在傳輸 dcs 命令后等待指定的毫秒數(shù)

          字節(jié) 5 和 6:按網(wǎng)絡(luò)字節(jié)順序列出的 16 位長度

          字節(jié) 7 及以上:凈荷的字節(jié)數(shù)

          Example:第5行數(shù)據(jù)如圖

          字節(jié)0:       一參數(shù)寫:        15(無參數(shù)默認(rèn)05;一參數(shù)默認(rèn)15;多參數(shù)默認(rèn)39)

          字節(jié)1\2\3:                           01 00 00(一般不動)

          字節(jié)4:       5ms:                05

          字節(jié)5\6:    2bytes:            00 02

          字節(jié)7+:     寄存器及參數(shù):3A 70

          5.配置MIPI信號:

          根據(jù)從原理圖中了解到的所使用的MIPI信號,在文件dsi-panel-ft8719p-1080p-video.dtsi中與步驟3.并列輸入:

           qcom,mdss-dsi-lane-0-state;
            qcom,mdss-dsi-lane-1-state;
            qcom,mdss-dsi-lane-2-state;
            qcom,mdss-dsi-lane-3-state;

          6.配置CLK:

          根據(jù)高通提供的計算timing的表格80-nh713-1_yb_dsi timing parameters user interactive spreadsheet.xlsm計算clk timing,在文件dsi-panel-ft8719p-1080p-video.dtsi中與步驟3.并列輸入:

          qcom,mdss-dsi-panel-phy-timings = [
                 00 1E 09 08  0E 0C 09
                 09 06 02 04  00 19 0D];

          SM7250使用的是DSI PHY 4.0.0 DPHY timing,在DSI and MDP registers sheet填寫porch、frame rate(默認(rèn)60),并選擇chip,在DSI PHY 4.0.0 DPHY timing處自動生成timing,舉例如下圖(不是本例中的portch值)結(jié)果如下:

          qcom,mdss-dsi-display-timings { 
          timing@0 { 
                  qcom,mdss-dsi-panel-phy-timings = [00 14 05 05 1f 1e 05 
                                                    05 03 02 04 00 12 15]; 

          qcom,mdss-dsi-t-clk-postqcom,mdss-dsi-t-clk-pre 不再需要配置

          7.配置Panel的其他參數(shù):

          &mdss_mdp {
           dsi_ft8719p_1080p_video: qcom,mdss_dsi_ft8719p_1080p_video {
            qcom,mdss-dsi-panel-name = "ft8719p 1080p video mode dsi panel"
            qcom,mdss-dsi-panel-type = "dsi_video_mode"
            qcom,dsi-ctrl-num = <0>;
            qcom,dsi-phy-num = <0>;
            qcom,dsi-select-clocks = "mux_byte_clk0""mux_pixel_clk0";

            qcom,mdss-dsi-virtual-channel-id = <0>;
            qcom,mdss-dsi-stream = <0>;
            qcom,mdss-dsi-bpp = <24>;
            qcom,mdss-dsi-underflow-color = <0xff>;
            qcom,mdss-dsi-border-color = <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-dma-trigger = "trigger_sw";
            qcom,mdss-dsi-mdp-trigger = "none";
            qcom,mdss-dsi-reset-sequence = <1 20>, <0 10>, <1 100>;
            qcom,mdss-dsi-display-timings {
             timing@0 {
               qcom,mdss-dsi-panel-framerate = <60>;
               qcom,mdss-dsi-panel-width = <1080>;
               qcom,mdss-dsi-panel-height = <2340>;
               qcom,mdss-dsi-h-front-porch = <24>;
               qcom,mdss-dsi-h-back-porch = <24>;
               qcom,mdss-dsi-h-pulse-width = <4>;
               qcom,mdss-dsi-h-sync-skew = <0>;
               qcom,mdss-dsi-v-back-porch = <26>;
               qcom,mdss-dsi-v-front-porch = <112>;
               qcom,mdss-dsi-v-pulse-width = <4>;
               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-on-command = [       
                15 01 00 00 00 00 02 00 00
                39 01 00 00 00 00 04 FF 87 19 01
                15 01 00 00 00 00 02 00 80
                ......
                05 01 00 00 78 00 02 11 00  
                05 01 00 00 32 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-h-sync-pulse = <1>;
               qcom,mdss-dsi-panel-phy-timings = [
                 00 1E 09 08  0E 0C 09
                 09 06 02 04  00 19 0D];
               qcom,display-topology = <1 0 1>;
               qcom,default-topology-index = <0>;
             };
                  };
           };
          };

          5.2 修改文件lito-sde-display.dtsi

          1. 將5.1步驟配置好的dsi-panel-ft8719p-1080p-video.dtsi文件添加到lito-sde-display.dtsi
          +#include "dsi-panel-ft8719p-1080p-video.dtsi"
          1. 配置默認(rèn)屏幕
          lito-sde-display.dtsi
           sde_dsi: qcom,dsi-display-primary {
           qcom,dsi-default-panel = <&dsi_ft8719p_1080p_video>;
          }
          1. 添加背光控制、LCD復(fù)位和上電

          為了LCD dts的規(guī)范性,把背光控制、LCD復(fù)位和上電的配置放到了lito-sde-display.dtsi文件中

          &dsi_ft8719p_1080p_video {
           qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
           qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
           qcom,mdss-dsi-bl-min-level = <1>;
           qcom,mdss-dsi-bl-max-level = <4095>;
           qcom,mdss-brightness-max-level = <255>;
           qcom,platform-reset-gpio = <&pm8150l_gpios 3 0>; 
           qcom,panel-supply-entries = <&dsi_panel_pwr_supply_labibb>;
          };

          5.3驗(yàn)證驅(qū)動是否正常加載

          1.開機(jī)看屏幕是否可以正常顯示開機(jī)logo,背光是否正常點(diǎn)亮,是否正常顯示圖像

          2.進(jìn)入系統(tǒng)后,按power鍵進(jìn)行休眠喚醒,看屏幕是否可以正常滅屏、亮屏

          3.調(diào)節(jié)背光亮度,查看背光亮度是否改變,也可以使用adb命令查看屏幕亮度及調(diào)節(jié)屏幕亮度:

          adb shell

          cd sys/class/leds/lcd-backlight

          cat brightness // 查看當(dāng)前屏幕亮度

          echo * > brightness // 設(shè)置亮度,*可以是0~255之間任意的值


          后面的文章會跟新LCD的dts分析以及其他LCD內(nèi)容。





          推薦閱讀:
          專輯|Linux文章匯總
          專輯|程序人生
          專輯|C語言
          我的知識小密圈

          關(guān)注公眾號,后臺回復(fù)「1024」獲取學(xué)習(xí)資料網(wǎng)盤鏈接。

          歡迎點(diǎn)贊,關(guān)注,轉(zhuǎn)發(fā),在看,您的每一次鼓勵,我都將銘記于心~



          瀏覽 502
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩成人AV电影 | 影音先锋成人影院 | 五月色 亚洲 | 免费黄色视频国产 | 色图综合网 |