GFX-DISPLAY: Fix screen messy display or flash issue when pressing pwr button to...
authorLi Zhuangzhi <zhuangzhi.li@intel.com>
Thu, 17 May 2012 07:23:06 +0000 (15:23 +0800)
committerbuildbot <buildbot@intel.com>
Wed, 23 May 2012 17:38:23 +0000 (10:38 -0700)
BZ: 36939

Issue:
Board screen display flash while pressing power key to resume system on Lexington DUT.

Solution:
Case1:
When panel and interface are initializing, there maybe some noise showed on display,
We'd better turn on the backlight after the initialization operation, this can avoid some
noise issue. And it's not good turn on backlight with full brightness at the beginning,
it will cause a flash when screen on, the brightness level should be controlled by
lastbrightnesslevel parameter after initialization.
Case2:
__dpi_panel_power_on() will reset the panel and then enable DSI
PLL, config the DSI controller, then exit ULPS state, set low
power output hold, then call p_funcs->drv_ic_init(), at this
moment, the MIPI is in low power mode, so change the hs to lp in
init to improve the ic init stability.

Change-Id: If2b5d748c00a60680536435acb0a1908d163466b
Signed-off-by: Li Zhuangzhi <zhuangzhi.li@intel.com>
Signed-off-by: Tong, Bo <box.tong@intel.com>
Reviewed-on: http://android.intel.com:8080/49302
Reviewed-by: Ai, Ke <ke.ai@intel.com>
Reviewed-by: Xu, Randy <randy.xu@intel.com>
Tested-by: Xu, Randy <randy.xu@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/staging/mrst/drv/gi_sony_vid.c

index 210df82..caa9297 100644 (file)
@@ -112,103 +112,99 @@ static int mdfld_gi_l5f3_dpi_ic_init(struct mdfld_dsi_config *dsi_config,
        PSB_DEBUG_ENTRY("\n");
        sender->status = MDFLD_DSI_PKG_SENDER_FREE;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_column_add, 8, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_set_column_add, 8, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_row_add, 8, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_set_row_add, 8, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_set_address_mode, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_pixel_format, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_set_pixel_format, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_te_scanline, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_set_te_scanline, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_tear_on, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_set_tear_on, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_on, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_passwd1_on, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_disctl, 20, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_disctl, 20, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pwrctl, 16, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_pwrctl, 16, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_vcmctl, 16, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_vcmctl, 16, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_srcctl, 12, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_srcctl, 12, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ifctl, 8, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_ifctl, 8, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_panelctl, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_panelctl, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_gammasel, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_gammasel, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pgammactl, 20, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_pgammactl, 20, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ngammactl, 20, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_ngammactl, 20, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_miectl1, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_miectl1, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_bcmode, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_bcmode, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrmiectl2, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_wrmiectl2, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrblctl, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_set_wrblctl, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_off, 4, 0);
+       mdfld_dsi_send_gen_long_lp(sender, gi_l5f3_passwd1_off, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_full_brightness, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_turn_on_backlight, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_turn_on_backlight, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_disable_cabc, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;
 
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_disable_cabc, 4, 0);
-       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
-               return -EIO;
-
-       mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_exit_sleep_mode, 4, 0);
+       mdfld_dsi_send_mcs_long_lp(sender, gi_l5f3_exit_sleep_mode, 4, 0);
        if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
                return -EIO;