1. 程式人生 > >高通平臺 lcd 分辨滷更改

高通平臺 lcd 分辨滷更改

1. 更改解析度 需要修改兩部分:

lk部分程式碼:

 static struct panel_config adv7533_720p_video_panel_data = {
        "qcom,mdss_dsi_adv7533_720p", "dsi:0:", "qcom,mdss-dsi-panel",
-       10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "NONE"
+       10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
 };

bootloader/lk/dev/gcdb/display/include/panel_adv7533_720p60.h

開始發現不好用改完,需要把上邊的 "none" 改為   NULL

標頭檔案,是這個LCD的配置,我這裡是一個AD7535轉換晶片,裡邊都是相關的配置和引數

bootloader/lk/target/msm8952/oem_panel.c


diff --git a/bootloader/lk/target/msm8952/oem_panel.c b/bootloader/lk/target/msm8952/oem_panel.c
index 9c87343..378be43 100755
--- a/bootloader/lk/target/msm8952/oem_panel.c
+++ b/bootloader/lk/target/msm8952/oem_panel.c
@@ -55,14 +55,14 @@
 #include "include/panel_nt35597_wqxga_dsc_cmd.h"
 #include "include/panel_byd_1200p_video.h"
 #include "include/panel_nt35523_wqxga_dualdsi_video.h"
-//#include "include/panel_adv7533_720p60.h"
-#include "include/panel_adv7533_1080p60.h"
+#include "include/panel_adv7533_720p60.h"
+//#include "include/panel_adv7533_1080p60.h"
 /*---------------------------------------------------------------------------*/
 /* static panel selection variable                                           */
 /*---------------------------------------------------------------------------*/
 enum {
-//     ADV7533_720P_VIDEO_PANEL,
-       ADV7533_1080P_VIDEO_PANEL,
+       ADV7533_720P_VIDEO_PANEL,
+//     ADV7533_1080P_VIDEO_PANEL,
        TRULY_1080P_VIDEO_PANEL,
        TRULY_1080P_CMD_PANEL,
        OTM1906C_1080P_CMD_PANEL,
@@ -86,8 +86,8 @@ uint32_t panel_regulator_settings[] = {
  * Any panel in this list can be selected using fastboot oem command.
  */
 static struct panel_list supp_panels[] = {
-//     {"adv7533_720p_video",ADV7533_720P_VIDEO_PANEL},
-       {"adv7533_1080p_video",ADV7533_1080P_VIDEO_PANEL},
+       {"adv7533_720p_video",ADV7533_720P_VIDEO_PANEL},
+//     {"adv7533_1080p_video",ADV7533_1080P_VIDEO_PANEL},
        {"truly_1080p_video", TRULY_1080P_VIDEO_PANEL},
        {"truly_1080p_cmd", TRULY_1080P_CMD_PANEL},
        {"sharp_1080p_cmd", SHARP_1080P_CMD_PANEL},
@@ -470,7 +470,7 @@ static int init_panel_data(struct panel_struct *panelstruct,
                        TIMING_SIZE);
                pinfo->mipi.tx_eot_append = true;
                break;
-       case ADV7533_1080P_VIDEO_PANEL:
+/*     case ADV7533_1080P_VIDEO_PANEL:
                panelstruct->paneldata    = &adv7533_1080p_video_panel_data;
                panelstruct->panelres     = &adv7533_1080p_video_panel_res;
                panelstruct->color        = &adv7533_1080p_video_color;
@@ -486,7 +486,25 @@ static int init_panel_data(struct panel_struct *panelstruct,
                pinfo->adv7533.num_of_cfg_i2c_cmds = ADV7533_1080P_CONFIG_COMMANDS;
                memcpy(phy_db->timing,
                                        adv7533_1080p_video_timings, TIMING_SIZE);
+               break;*/
+        case ADV7533_720P_VIDEO_PANEL:
+               panelstruct->paneldata    = &adv7533_720p_video_panel_data;
+               panelstruct->panelres     = &adv7533_720p_video_panel_res;
+               panelstruct->color        = &adv7533_720p_video_color;
+               panelstruct->videopanel   = &adv7533_720p_video_video_panel;
+               panelstruct->commandpanel = &adv7533_720p_video_command_panel;
+               panelstruct->state        = &adv7533_720p_video_state;
+               panelstruct->laneconfig   = &adv7533_720p_video_lane_config;
+               panelstruct->paneltiminginfo
+                                       = &adv7533_720p_video_timing_info;
+               pinfo->adv7533.dsi_tg_i2c_cmd = adv7533_720p_tg_i2c_command;
+               pinfo->adv7533.num_of_tg_i2c_cmds = ADV7533_720P_TG_COMMANDS;
+               pinfo->adv7533.dsi_setup_cfg_i2c_cmd = adv7533_720p_common_cfg;
+               pinfo->adv7533.num_of_cfg_i2c_cmds = ADV7533_720P_CONFIG_COMMANDS;
+               memcpy(phy_db->timing,
+                                       adv7533_720p_video_timings, TIMING_SIZE);
                break;
+
        case UNKNOWN_PANEL:
        default:
                memset(panelstruct, 0, sizeof(struct panel_struct));
@@ -541,9 +559,9 @@ int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
        switch (hw_id) {
        case HW_PLATFORM_MTP:
                if (platform_is_msm8956())
-                       panel_id = ADV7533_1080P_VIDEO_PANEL;
+                       panel_id = ADV7533_720P_VIDEO_PANEL;
                else
-                       panel_id = ADV7533_1080P_VIDEO_PANEL;
+                       panel_id = ADV7533_720P_VIDEO_PANEL;
                break;
        case HW_PLATFORM_SURF:
        case HW_PLATFORM_RCM:
@@ -591,7 +609,7 @@ int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
                        auto_pan_loop++;
                }
                #else
-                       panel_id = ADV7533_1080P_VIDEO_PANEL;
+                       panel_id = ADV7533_720P_VIDEO_PANEL;
 
KERNEL部分:arch/arm/boot/dts/qcom/msm8976-mdss-mtp.dtsi

 75 &mdss_dsi0 {
 76         qcom,dsi-pref-prim-pan = <&dsi_adv7533_720p>;
 77         pinctrl-names = "mdss_default", "mdss_sleep";
 78         pinctrl-0 = <&mdss_dsi_active &mdss_te_active>;
 79         pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>;
 80
 81         qcom,platform-reset-gpio = <&msm_gpio 25 0>;

 82 };

紅色部分新增相應的設定資料

-------------

msm8976 開機的預設圖片儲存在一個數組裡,

這個資料在drivers/video/msm/mdss/splash.h 檔案裡

此外要替換成自己的圖片可以 用img2lcd4.0 工具轉換成 陣列,轉換的圖片我用的是PNG的,輸出為24bit。

好要修改標頭檔案裡的寬和高 ,和自己的圖片對應上,

要注意一點不要太大,不然不能開機