msm: display: reset vsync state when display is turned on

In the case that vsync ctrl is unbalanced, vsync IRQ is cleared
in suspend,  vsync cannot be enabled after resume.
Clear the status when display is turned on

CRs-fixed: 449155
Change-Id: I5ecf23053b60d1fbd91f042758d67d39c83ab444
Signed-off-by: Ken Zhang <kenz@codeaurora.org>
This commit is contained in:
Ken Zhang 2013-02-14 20:25:21 -05:00 committed by Iliyan Malchev
parent c58e2f4bb2
commit 8a2eb95560
6 changed files with 8 additions and 1 deletions

View file

@ -1033,6 +1033,7 @@ int mdp4_dsi_cmd_on(struct platform_device *pdev)
vctrl = &vsync_ctrl_db[cndx];
vctrl->mfd = mfd;
vctrl->dev = mfd->fbi->dev;
vctrl->vsync_enabled = 0;
mdp_clk_ctrl(1);
mdp4_overlay_update_dsi_cmd(mfd);

View file

@ -42,6 +42,7 @@
static int first_pixel_start_x;
static int first_pixel_start_y;
static int dsi_video_enabled;
static int vsync_irq_cnt;
#define MAX_CONTROLLER 1
@ -283,7 +284,6 @@ int mdp4_dsi_video_pipe_commit(int cndx, int wait)
static void mdp4_video_vsync_irq_ctrl(int cndx, int enable)
{
struct vsycn_ctrl *vctrl;
static int vsync_irq_cnt;
vctrl = &vsync_ctrl_db[cndx];
@ -570,6 +570,8 @@ int mdp4_dsi_video_on(struct platform_device *pdev)
vctrl->mfd = mfd;
vctrl->dev = mfd->fbi->dev;
vctrl->blt_ctrl = pinfo->lcd.blt_ctrl;
vctrl->vsync_irq_enabled = 0;
vsync_irq_cnt = 0;
/* mdp clock on */
mdp_clk_ctrl(1);

View file

@ -588,6 +588,7 @@ int mdp4_dtv_on(struct platform_device *pdev)
return -EINVAL;
vctrl->dev = mfd->fbi->dev;
vctrl->vsync_irq_enabled = 0;
mdp_footswitch_ctrl(TRUE);
/* Mdp clock enable */

View file

@ -525,6 +525,7 @@ int mdp4_lcdc_on(struct platform_device *pdev)
vctrl->mfd = mfd;
vctrl->dev = mfd->fbi->dev;
vctrl->vsync_irq_enabled = 0;
/* mdp clock on */
mdp_clk_ctrl(1);

View file

@ -108,6 +108,7 @@ int mdp_dsi_video_on(struct platform_device *pdev)
vsync_cntrl.dev = mfd->fbi->dev;
atomic_set(&vsync_cntrl.suspend, 0);
vsync_cntrl.vsync_irq_enabled = 0;
bpp = fbi->var.bits_per_pixel / 8;
buf = (uint8 *) fbi->fix.smem_start;

View file

@ -126,6 +126,7 @@ int mdp_lcdc_on(struct platform_device *pdev)
var = &fbi->var;
vsync_cntrl.dev = mfd->fbi->dev;
atomic_set(&vsync_cntrl.suspend, 0);
vsync_cntrl.vsync_irq_enabled = 0;
/* MDP cmd block enable */
mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);