Revert "GFX-Display: resolved the flashing issue when booting up SC1."
authorRandy Xu <randy.xu@intel.com>
Thu, 24 May 2012 09:33:55 +0000 (17:33 +0800)
committerbuildbot <buildbot@intel.com>
Thu, 24 May 2012 16:53:40 +0000 (09:53 -0700)
BZ: 38205

Patch 47708 may cause instability on PR1 flashing
This reverts commit 677278e8e7adc7bbcc49298cf83809cd5e2d6b64.

Change-Id: I88356102f94296c8abc0f97a253047ee3d9e566d
Signed-off-by: Randy Xu <randy.xu@intel.com>
Reviewed-on: http://android.intel.com:8080/50038
Reviewed-by: Hu, Austin <austin.hu@intel.com>
Tested-by: Tong, BoX <box.tong@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/staging/mrst/drv/auo_sc1_cmd.c
drivers/staging/mrst/drv/mdfld_dsi_dbi.c
drivers/staging/mrst/drv/psb_drv.c
drivers/staging/mrst/drv/psb_drv.h
drivers/staging/mrst/drv/psb_fb.c
drivers/staging/mrst/drv/psb_intel_display2.c
drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_displayclass.c
drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_linux.c

index 9a9faf2..ee455e8 100644 (file)
@@ -413,13 +413,8 @@ static int mdfld_auo_dsi_dbi_power_on(struct drm_encoder *encoder)
        struct panel_funcs *p_funcs = dbi_output->p_funcs;
        struct mdfld_dsi_hw_registers *regs = NULL;
        struct mdfld_dsi_hw_context *ctx = NULL;
-       struct drm_device *dev = encoder->dev;
-       struct drm_psb_private *dev_priv = dev->dev_private;
        int err = 0;
 
-       if (!dev_priv->dsi_init_done)
-               return 0;
-
        if (!dsi_config)
                return -EINVAL;
 
@@ -464,13 +459,8 @@ static int mdfld_auo_dsi_dbi_power_off(struct drm_encoder *encoder)
                mdfld_dsi_encoder_get_config(dsi_encoder);
        struct panel_funcs *p_funcs = dbi_output->p_funcs;
        struct mdfld_dsi_hw_context *ctx;
-       struct drm_device *dev = encoder->dev;
-       struct drm_psb_private *dev_priv = dev->dev_private;
        int err = 0;
 
-       if (!dev_priv->dsi_init_done)
-               return 0;
-
        if (!dsi_config)
                return -EINVAL;
 
@@ -670,6 +660,26 @@ static void mdfld_auo_dsi_dbi_commit(struct drm_encoder *encoder)
        rect.height = 480;
 #endif
 
+       if (dbi_output->channel_num == 1) {
+               dev_priv->dsr_fb_update |= MDFLD_DSR_2D_3D_2;
+#ifdef CONFIG_MDFLD_DSI_DPU
+               /* if dpu enabled report a fullscreen damage */
+               mdfld_dbi_dpu_report_damage(dev, MDFLD_PLANEC, &rect);
+#endif
+       } else {
+               dev_priv->dsr_fb_update |= MDFLD_DSR_2D_3D_0;
+
+#ifdef CONFIG_MDFLD_DSI_DPU
+               mdfld_dbi_dpu_report_damage(dev, MDFLD_PLANEA, &rect);
+               /* start dpu timer */
+               if (dev_priv->platform_rev_id == MDFLD_PNW_A0)
+                       mdfld_dbi_dpu_timer_start(dev_priv->dbi_dpu_info);
+#else
+               if (dev_priv->platform_rev_id == MDFLD_PNW_A0)
+                       mdfld_dbi_dsr_timer_start(dev_priv->dbi_dsr_info);
+#endif
+       }
+
        dbi_output->mode_flags |= MODE_SETTING_ENCODER_DONE;
 }
 
@@ -693,7 +703,7 @@ static void mdfld_auo_dsi_dbi_dpms(struct drm_encoder *encoder, int mode)
                if (bdispoff)
                        mdfld_dsi_dbi_exit_dsr(dev, MDFLD_DSR_2D_3D, 0, 0);
 
-               mdfld_auo_dsi_dbi_set_power(encoder, true);
+               mdfld_dsi_dbi_set_power(encoder, true);
 
                if (gbgfxsuspended)
                        gbgfxsuspended = false;
@@ -706,7 +716,7 @@ static void mdfld_auo_dsi_dbi_dpms(struct drm_encoder *encoder, int mode)
                 * turn rpm on since we still have a lot of CRTC turnning
                 * on work to do.
                 */
-               mdfld_auo_dsi_dbi_set_power(encoder, false);
+               mdfld_dsi_dbi_set_power(encoder, false);
                bdispoff = true;
                gbdispstatus = false;
        }
@@ -714,15 +724,9 @@ static void mdfld_auo_dsi_dbi_dpms(struct drm_encoder *encoder, int mode)
 
 void mdfld_auo_dsi_dbi_save(struct drm_encoder *encoder)
 {
-       struct drm_device *dev = encoder->dev;
-       struct drm_psb_private *dev_priv = dev->dev_private;
-
        if (!encoder)
                return;
 
-       if (!dev_priv->dsi_init_done)
-               return;
-
        /*turn off*/
        mdfld_auo_dsi_dbi_set_power(encoder, false);
 }
@@ -731,15 +735,10 @@ void mdfld_auo_dsi_dbi_restore(struct drm_encoder *encoder)
 {
        struct mdfld_dsi_encoder *dsi_encoder = NULL;
        struct mdfld_dsi_config *dsi_config = NULL;
-       struct drm_device *dev = encoder->dev;
-       struct drm_psb_private *dev_priv = dev->dev_private;
 
        if (!encoder)
                return;
 
-       if (!dev_priv->dsi_init_done)
-               return;
-
        dsi_encoder = MDFLD_DSI_ENCODER(encoder);
        dsi_config = mdfld_dsi_encoder_get_config(dsi_encoder);
 
@@ -759,7 +758,6 @@ static void auo_dsi_dbi_update_fb(struct mdfld_dsi_dbi_output *dbi_output,
        struct mdfld_dsi_pkg_sender *sender =
                mdfld_dsi_encoder_get_pkg_sender(&dbi_output->base);
        struct drm_device *dev = dbi_output->dev;
-       struct drm_psb_private *dev_priv = dev->dev_private;
        struct drm_crtc *crtc = dbi_output->base.base.crtc;
        struct psb_intel_crtc *psb_crtc =
                (crtc) ? to_psb_intel_crtc(crtc) : NULL;
@@ -769,9 +767,6 @@ static void auo_dsi_dbi_update_fb(struct mdfld_dsi_dbi_output *dbi_output,
        u32 dsplinoff_reg = DSPALINOFF;
        u32 dspsurf_reg = DSPASURF;
 
-       if (!dev_priv->dsi_init_done)
-               return;
-
        /* if mode setting on-going, back off */
        if ((dbi_output->mode_flags & MODE_SETTING_ON_GOING) ||
                        (psb_crtc &&
@@ -912,8 +907,6 @@ static int mdfld_auo_dsi_panel_reset(struct mdfld_dsi_config *dsi_config,
                }
 
                b_gpio_required[dsi_config->pipe] = true;
-
-               goto fun_exit;
        }
 
        if (b_gpio_required[dsi_config->pipe]) {
index 6eb9c7b..5708f62 100644 (file)
@@ -1009,12 +1009,9 @@ struct mdfld_dsi_encoder *mdfld_dsi_dbi_init(struct drm_device *dev,
        }
 
        /*init DSI controller*/
-       if (p_funcs->dsi_controller_init) {
-               if (get_panel_type(dev, pipe) == AUO_SC1_CMD)
-                       p_funcs->dsi_controller_init(dsi_config, pipe, false);
-               else
-                       p_funcs->dsi_controller_init(dsi_config, pipe, true);
-       }
+       if (p_funcs->dsi_controller_init)
+               p_funcs->dsi_controller_init(dsi_config, pipe, true);
+
        if (dsi_connector->status == connector_status_connected) {
                if (pipe == 0)
                        dev_priv->panel_desc |= DISPLAY_A;
@@ -1073,7 +1070,7 @@ struct mdfld_dsi_encoder *mdfld_dsi_dbi_init(struct drm_device *dev,
 
        dev_priv->dsr_fb_update = 0;
        dev_priv->b_dsr_enable = false;
-       dev_priv->b_async_flip_enable = false;
+       dev_priv->b_async_flip_enable = true;
        dev_priv->exit_idle = mdfld_dsi_dbi_exit_dsr;
        dev_priv->async_flip_update_fb = mdfld_dsi_dbi_async_flip_fb_update;
        dev_priv->async_check_fifo_empty = mdfld_dsi_dbi_async_check_fifo_empty;
index c2924ae..e574ccd 100644 (file)
@@ -2034,8 +2034,6 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
 #endif
        }
 
-       dev_priv->dsi_init_done = 1;
-
        /*must be after mrst_get_fuse_settings()*/
        ret = psb_backlight_init(dev);
        if (ret)
index 121504b..44268b8 100644 (file)
@@ -445,9 +445,6 @@ struct drm_psb_private {
        int te_pipe;
        struct work_struct reset_panel_work;
        bool is_in_panel_reset;
-
-       int dsi_init_done;
-
        /*
         *TTM Glue.
         */
index 61c1b8d..c3a5cbb 100644 (file)
@@ -741,10 +741,6 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 
        }
 
-       if ((is_panel_vid_or_cmd(dev) == MDFLD_DSI_ENCODER_DBI) &&
-                       dev_priv->exit_idle)
-               dev_priv->exit_idle(dev, MDFLD_DSR_2D_3D, NULL, true);
-
        return 0;
 }
 
index 928c9f2..ca2f063 100755 (executable)
@@ -1164,10 +1164,6 @@ static void mdfld_crtc_dpms(struct drm_crtc *crtc, int mode)
        }
 #endif
 
-       if (get_panel_type(dev, pipe) == AUO_SC1_CMD &&
-               !dev_priv->dsi_init_done)
-               return;
-
        if (!ospm_power_using_hw_begin(OSPM_DISPLAY_ISLAND,
                                       OSPM_UHB_FORCE_POWER_ON))
                return;
@@ -1931,10 +1927,6 @@ static int mdfld_crtc_mode_set(struct drm_crtc *crtc,
 
        PSB_DEBUG_ENTRY("pipe = 0x%x\n", pipe);
 
-       if (get_panel_type(dev, pipe) == AUO_SC1_CMD &&
-               !dev_priv->dsi_init_done)
-               return;
-
        if (pipe == 0)   //h8c7_cmd
                dsi_config = dev_priv->dsi_configs[0];
        else if (pipe == 2)
index b6f50c0..27e2e13 100644 (file)
@@ -1223,7 +1223,7 @@ static IMG_BOOL ProcessFlip2(IMG_HANDLE hCmdCookie,
         */
        if (!dev_priv->um_start) {
                dev_priv->um_start = true;
-               dev_priv->b_async_flip_enable = true;
+
                if (dev_priv->b_dsr_enable_config)
                        dev_priv->b_dsr_enable = true;
        }
@@ -1340,7 +1340,7 @@ static IMG_BOOL ProcessFlip(IMG_HANDLE  hCmdCookie,
        psFlipItem = &psSwapChain->psVSyncFlips[psSwapChain->ulInsertIndex];
        if (!dev_priv->um_start) {
                dev_priv->um_start = true;
-               dev_priv->b_async_flip_enable = true;
+
                if (dev_priv->b_dsr_enable_config)
                        dev_priv->b_dsr_enable = true;
        }
index 2cb56b7..e1b7f33 100644 (file)
@@ -149,7 +149,6 @@ void MRSTLFBFlipToSurface(MRSTLFB_DEVINFO *psDevInfo,  unsigned long uiAddr)
         } else if (IS_MDFLD(dev)) {
                if (!dev_priv->um_start) {
                        dev_priv->um_start = true;
-                       dev_priv->b_async_flip_enable = true;
                        if (dev_priv->b_dsr_enable_config)
                                dev_priv->b_dsr_enable = true;
                }