GFX-Display: fix PR0 always off
authorKe Ai <ke.ai@intel.com>
Tue, 22 May 2012 09:01:37 +0000 (17:01 +0800)
committerbuildbot <buildbot@intel.com>
Tue, 22 May 2012 18:11:23 +0000 (11:11 -0700)
BZ: 37685

1.for ic_init function change to have return value,
if still as void, when check the resturn status, it will be
turn, then unnecessory reset happen

2. update it return value

Signed-off-by: Ke Ai <ke.ai@intel.com>
Change-Id: Ieb961bf0031608cc44168c985b230e6775fedc4f
Reviewed-on: http://android.intel.com:8080/49671
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/auo_sc1_vid.c
drivers/staging/mrst/drv/gi_sony_cmd.c
drivers/staging/mrst/drv/gi_sony_vid.c
drivers/staging/mrst/drv/h8c7_cmd.c
drivers/staging/mrst/drv/h8c7_vid.c

index f16044e..44c827e 100644 (file)
@@ -58,7 +58,7 @@ static u32 sc1_set_display_on[] = {0x00000029};
 static u32 sc1_set_display_off[] = {0x00000028};
 static u32 sc1_enter_low_power_mode[] = {0x000001b1};
 
-void mdfld_dsi_sc1_ic_init(struct mdfld_dsi_config *dsi_config, int pipe)
+int mdfld_dsi_sc1_ic_init(struct mdfld_dsi_config *dsi_config, int pipe)
 {
        struct mdfld_dsi_pkg_sender *sender
                        = mdfld_dsi_get_pkg_sender(dsi_config);
@@ -66,7 +66,7 @@ void mdfld_dsi_sc1_ic_init(struct mdfld_dsi_config *dsi_config, int pipe)
 
        if (!sender) {
                DRM_ERROR("Cannot get sender\n");
-               return;
+               return -EINVAL;
        }
 
        /*wait for 5ms*/
@@ -74,6 +74,7 @@ void mdfld_dsi_sc1_ic_init(struct mdfld_dsi_config *dsi_config, int pipe)
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
 
+       return 0;
        /* Now In Sleep Mode */
 }
 
index b0f20c9..2a24396 100644 (file)
@@ -107,7 +107,7 @@ static u32 gi_l5f3_exit_sleep_mode[] = {0x00000011};
 static u32 gi_l5f3_set_display_on[] = {0x00000029};
 
 /* FIXME Optimize the delay time after PO.  */
-static void mdfld_gi_l5f3_dbi_ic_init(struct mdfld_dsi_config *dsi_config,
+static int mdfld_gi_l5f3_dbi_ic_init(struct mdfld_dsi_config *dsi_config,
                int pipe)
 {
        struct mdfld_dsi_pkg_sender *sender
@@ -115,7 +115,7 @@ static void mdfld_gi_l5f3_dbi_ic_init(struct mdfld_dsi_config *dsi_config,
 
        if (!sender) {
                DRM_ERROR("Cannot get sender\n");
-               return;
+               return -EINVAL;
        }
 
        PSB_DEBUG_ENTRY("\n");
@@ -210,6 +210,8 @@ static void mdfld_gi_l5f3_dbi_ic_init(struct mdfld_dsi_config *dsi_config,
        mdfld_ms_delay(MSLEEP, 5);
 
        dsi_config->drv_ic_inited = 1;
+
+       return 0;
 }
 
 static void
index a220f79..210df82 100644 (file)
@@ -97,7 +97,7 @@ static u32 gi_l5f3_disable_cabc[] = {0x00000055};
 static u32 gi_l5f3_exit_sleep_mode[] = {0x00000011};
 
 /* FIXME Optimize the delay time after PO.  */
-static void mdfld_gi_l5f3_dpi_ic_init(struct mdfld_dsi_config *dsi_config,
+static int mdfld_gi_l5f3_dpi_ic_init(struct mdfld_dsi_config *dsi_config,
                int pipe)
 {
        struct mdfld_dsi_pkg_sender *sender
@@ -106,37 +106,113 @@ static void mdfld_gi_l5f3_dpi_ic_init(struct mdfld_dsi_config *dsi_config,
 
        if (!sender) {
                DRM_ERROR("Cannot get sender\n");
-               return;
+               return -EINVAL;
        }
 
        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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_mcs_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_mcs_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_mcs_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_gen_long_hs(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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
        mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_full_brightness, 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);
+       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);
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
+       return 0;
 }
 
 static void
index a51a73b..1102b95 100644 (file)
@@ -98,7 +98,7 @@ static int mdfld_mipi_panel_gpio_parse(struct sfi_table_header *table)
        return 0;
 }
 
-static void mdfld_h8c7_dci_ic_init(
+static int  mdfld_h8c7_dci_ic_init(
                struct mdfld_dsi_config *dsi_config, int pipe)
 {
 
@@ -108,7 +108,7 @@ static void mdfld_h8c7_dci_ic_init(
 
        if (!sender) {
                DRM_ERROR("Cannot get sender\n");
-               return;
+               return -EINVAL;
        }
 
        PSB_DEBUG_ENTRY("\n");
@@ -243,6 +243,8 @@ static void mdfld_h8c7_dci_ic_init(
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+
+       return 0;
 }
 
 
index 96e490b..68dc831 100644 (file)
@@ -78,7 +78,7 @@ static u32 h8c7_enter_sleep_mode[] = {0x00000010};
 #define MIN_BRIGHTNESS_LEVEL 54
 #define MAX_BRIGHTNESS_LEVEL 100
 
-static void mdfld_h8c7_dpi_ic_init(struct mdfld_dsi_config *dsi_config, int pipe)
+static int mdfld_h8c7_dpi_ic_init(struct mdfld_dsi_config *dsi_config, int pipe)
 {
        struct mdfld_dsi_pkg_sender *sender
                        = mdfld_dsi_get_pkg_sender(dsi_config);
@@ -86,142 +86,195 @@ static void mdfld_h8c7_dpi_ic_init(struct mdfld_dsi_config *dsi_config, int pipe
 
        if (!sender) {
                DRM_ERROR("Cannot get sender\n");
-               return;
+               return -EINVAL;
        }
 
        PSB_DEBUG_ENTRY("\n");
+       sender->status = MDFLD_DSI_PKG_SENDER_FREE;
 
        /*wait for 5ms*/
        wait_timeout = jiffies + (HZ / 200);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* sleep out and wait for 150ms. */
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_exit_sleep_mode, 4, 0);
        wait_timeout = jiffies + (3 * HZ / 20);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* set password and wait for 10ms. */
        mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_off, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* set TE on and wait for 10ms. */
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_tear_on, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* set backlight to full brightness and wait for 10ms. */
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_full_brightness, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* set backlight on and wait for 10ms. */
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_turn_on_backlight, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* disalble CABC and wait for 10ms. */
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_disable_cabc, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_ic_bias_current, 8, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_power, 16, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_disp_reg, 16, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_command_cyc, 24, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_mipi_ctrl, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_video_mode, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_blanking_opt_2, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_panel, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_eq_func_ltps, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_ltps_ctrl_output, 24, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_set_video_cyc, 24, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_r, 36, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_g, 36, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_b, 36, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_enter_set_cabc, 10, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        /* disable password and wait for 10ms. */
        mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_on, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_address_mode, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
 
        mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_pixel_format, 4, 0);
        wait_timeout = jiffies + (HZ / 100);
        while (time_before_eq(jiffies, wait_timeout))
                cpu_relax();
+       if (sender->status == MDFLD_DSI_CONTROL_ABNORMAL)
+               return -EIO;
+
+       return 0;
 }
 
 static void