mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
msm_fb: display: Send pixel data while sending on/off commands
To avoid LCD off sequence violeation for some LCD vendors, we need to keep sending video data during off/sleep commands. This fixes issues seen while going to a suspend. Crs-Fixed: 445707 Change-Id: I0ba2704502e8959d0f82deea60481cd5b1f0be20 Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
This commit is contained in:
parent
a76e7e31e0
commit
90f633305e
3 changed files with 35 additions and 14 deletions
|
@ -2377,6 +2377,22 @@ static int mdp_on(struct platform_device *pdev)
|
||||||
|
|
||||||
pr_debug("%s:+\n", __func__);
|
pr_debug("%s:+\n", __func__);
|
||||||
|
|
||||||
|
if (!(mfd->cont_splash_done)) {
|
||||||
|
if (mfd->panel.type == MIPI_VIDEO_PANEL)
|
||||||
|
mdp4_dsi_video_splash_done();
|
||||||
|
|
||||||
|
/* Clks are enabled in probe.
|
||||||
|
Disabling clocks now */
|
||||||
|
mdp_clk_ctrl(0);
|
||||||
|
mfd->cont_splash_done = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
|
||||||
|
|
||||||
|
ret = panel_next_on(pdev);
|
||||||
|
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
|
||||||
|
|
||||||
|
|
||||||
if (mdp_rev >= MDP_REV_40) {
|
if (mdp_rev >= MDP_REV_40) {
|
||||||
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
|
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
|
||||||
mdp_clk_ctrl(1);
|
mdp_clk_ctrl(1);
|
||||||
|
@ -2405,11 +2421,6 @@ static int mdp_on(struct platform_device *pdev)
|
||||||
atomic_set(&vsync_cntrl.suspend, 1);
|
atomic_set(&vsync_cntrl.suspend, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
|
|
||||||
|
|
||||||
ret = panel_next_on(pdev);
|
|
||||||
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
|
|
||||||
|
|
||||||
mdp_histogram_ctrl_all(TRUE);
|
mdp_histogram_ctrl_all(TRUE);
|
||||||
|
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
|
|
|
@ -783,6 +783,7 @@ int mdp4_dsi_cmd_on(struct platform_device *pdev);
|
||||||
int mdp4_dsi_cmd_off(struct platform_device *pdev);
|
int mdp4_dsi_cmd_off(struct platform_device *pdev);
|
||||||
int mdp4_dsi_video_off(struct platform_device *pdev);
|
int mdp4_dsi_video_off(struct platform_device *pdev);
|
||||||
int mdp4_dsi_video_on(struct platform_device *pdev);
|
int mdp4_dsi_video_on(struct platform_device *pdev);
|
||||||
|
int mdp4_dsi_video_splash_done(void);
|
||||||
void mdp4_primary_vsync_dsi_video(void);
|
void mdp4_primary_vsync_dsi_video(void);
|
||||||
void mdp4_dsi_cmd_base_swap(int cndx, struct mdp4_overlay_pipe *pipe);
|
void mdp4_dsi_cmd_base_swap(int cndx, struct mdp4_overlay_pipe *pipe);
|
||||||
void mdp4_dsi_cmd_wait4vsync(int cndx);
|
void mdp4_dsi_cmd_wait4vsync(int cndx);
|
||||||
|
@ -851,6 +852,11 @@ static inline void mdp4_overlay_dsi_video_start(void)
|
||||||
{
|
{
|
||||||
/* empty */
|
/* empty */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int mdp4_dsi_video_splash_done(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_FB_MSM_MDP40
|
#ifdef CONFIG_FB_MSM_MDP40
|
||||||
static inline void mdp_dsi_cmd_overlay_suspend(struct msm_fb_data_type *mfd)
|
static inline void mdp_dsi_cmd_overlay_suspend(struct msm_fb_data_type *mfd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -500,6 +500,19 @@ static void mdp4_dsi_video_tg_off(struct vsycn_ctrl *vctrl)
|
||||||
mdp4_dsi_video_wait4vsync(0);
|
mdp4_dsi_video_wait4vsync(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mdp4_dsi_video_splash_done(void)
|
||||||
|
{
|
||||||
|
struct vsycn_ctrl *vctrl;
|
||||||
|
int cndx = 0;
|
||||||
|
|
||||||
|
vctrl = &vsync_ctrl_db[cndx];
|
||||||
|
|
||||||
|
mdp4_dsi_video_tg_off(vctrl);
|
||||||
|
mipi_dsi_controller_cfg(0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int mdp4_dsi_video_on(struct platform_device *pdev)
|
int mdp4_dsi_video_on(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int dsi_width;
|
int dsi_width;
|
||||||
|
@ -597,15 +610,6 @@ int mdp4_dsi_video_on(struct platform_device *pdev)
|
||||||
|
|
||||||
atomic_set(&vctrl->suspend, 0);
|
atomic_set(&vctrl->suspend, 0);
|
||||||
|
|
||||||
if (!(mfd->cont_splash_done)) {
|
|
||||||
mfd->cont_splash_done = 1;
|
|
||||||
mdp4_dsi_video_tg_off(vctrl);
|
|
||||||
mipi_dsi_controller_cfg(0);
|
|
||||||
/* Clks are enabled in probe.
|
|
||||||
Disabling clocks now */
|
|
||||||
mdp_clk_ctrl(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
pipe->src_height = fbi->var.yres;
|
pipe->src_height = fbi->var.yres;
|
||||||
pipe->src_width = fbi->var.xres;
|
pipe->src_width = fbi->var.xres;
|
||||||
pipe->src_h = fbi->var.yres;
|
pipe->src_h = fbi->var.yres;
|
||||||
|
|
Loading…
Reference in a new issue