From 7cadf9707e1e95e57deecdef62e0a349080e35f8 Mon Sep 17 00:00:00 2001 From: Randy Xu Date: Thu, 24 May 2012 17:33:55 +0800 Subject: [PATCH] Revert "GFX-Display: resolved the flashing issue when booting up SC1." BZ: 38205 Patch 47708 may cause instability on PR1 flashing This reverts commit 677278e8e7adc7bbcc49298cf83809cd5e2d6b64. Change-Id: I88356102f94296c8abc0f97a253047ee3d9e566d Signed-off-by: Randy Xu Reviewed-on: http://android.intel.com:8080/50038 Reviewed-by: Hu, Austin Tested-by: Tong, BoX Reviewed-by: buildbot Tested-by: buildbot --- drivers/staging/mrst/drv/auo_sc1_cmd.c | 51 ++++++++++------------ drivers/staging/mrst/drv/mdfld_dsi_dbi.c | 11 ++--- drivers/staging/mrst/drv/psb_drv.c | 2 - drivers/staging/mrst/drv/psb_drv.h | 3 -- drivers/staging/mrst/drv/psb_fb.c | 4 -- drivers/staging/mrst/drv/psb_intel_display2.c | 8 ---- .../linux_framebuffer_drm/drmlfb_displayclass.c | 4 +- .../3rdparty/linux_framebuffer_drm/drmlfb_linux.c | 1 - 8 files changed, 28 insertions(+), 56 deletions(-) diff --git a/drivers/staging/mrst/drv/auo_sc1_cmd.c b/drivers/staging/mrst/drv/auo_sc1_cmd.c index 9a9faf2..ee455e8 100644 --- a/drivers/staging/mrst/drv/auo_sc1_cmd.c +++ b/drivers/staging/mrst/drv/auo_sc1_cmd.c @@ -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]) { diff --git a/drivers/staging/mrst/drv/mdfld_dsi_dbi.c b/drivers/staging/mrst/drv/mdfld_dsi_dbi.c index 6eb9c7b..5708f62 100644 --- a/drivers/staging/mrst/drv/mdfld_dsi_dbi.c +++ b/drivers/staging/mrst/drv/mdfld_dsi_dbi.c @@ -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; diff --git a/drivers/staging/mrst/drv/psb_drv.c b/drivers/staging/mrst/drv/psb_drv.c index c2924ae..e574ccd 100644 --- a/drivers/staging/mrst/drv/psb_drv.c +++ b/drivers/staging/mrst/drv/psb_drv.c @@ -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) diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 121504b..44268b8 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -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. */ diff --git a/drivers/staging/mrst/drv/psb_fb.c b/drivers/staging/mrst/drv/psb_fb.c index 61c1b8d..c3a5cbb 100644 --- a/drivers/staging/mrst/drv/psb_fb.c +++ b/drivers/staging/mrst/drv/psb_fb.c @@ -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; } diff --git a/drivers/staging/mrst/drv/psb_intel_display2.c b/drivers/staging/mrst/drv/psb_intel_display2.c index 928c9f2..ca2f063 100755 --- a/drivers/staging/mrst/drv/psb_intel_display2.c +++ b/drivers/staging/mrst/drv/psb_intel_display2.c @@ -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) diff --git a/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_displayclass.c b/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_displayclass.c index b6f50c0..27e2e13 100644 --- a/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_displayclass.c +++ b/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_displayclass.c @@ -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; } diff --git a/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_linux.c b/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_linux.c index 2cb56b7..e1b7f33 100644 --- a/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_linux.c +++ b/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_drm/drmlfb_linux.c @@ -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; } -- 2.7.4