diff --git a/drivers/video/msm/mdp_lcdc.c b/drivers/video/msm/mdp_lcdc.c index 64ce0fe8..d27df4da 100644 --- a/drivers/video/msm/mdp_lcdc.c +++ b/drivers/video/msm/mdp_lcdc.c @@ -448,7 +448,13 @@ static int mdp_lcdc_probe(struct platform_device *pdev) lcdc->fb_panel_data.suspend = lcdc_suspend; lcdc->fb_panel_data.resume = lcdc_resume; lcdc->fb_panel_data.wait_vsync = lcdc_wait_vsync; +#if defined(CONFIG_MACH_HTCLEO) + // Temporarily disable vsync to prevent a scheduler bug, need + // to be looked into further. + lcdc->fb_panel_data.request_vsync = 0; +#else lcdc->fb_panel_data.request_vsync = lcdc_request_vsync; +#endif lcdc->fb_panel_data.clear_vsync = lcdc_clear_vsync; lcdc->fb_panel_data.blank = lcdc_blank; lcdc->fb_panel_data.unblank = lcdc_unblank; diff --git a/drivers/video/msm/msm_fb.c b/drivers/video/msm/msm_fb.c index 97ffff07..24b89aa1 100644 --- a/drivers/video/msm/msm_fb.c +++ b/drivers/video/msm/msm_fb.c @@ -230,6 +230,15 @@ static int msmfb_start_dma(struct msmfb_info *msmfb) y = msmfb->update_info.top; w = msmfb->update_info.eright - x; h = msmfb->update_info.ebottom - y; + +#if defined(CONFIG_MACH_HTCLEO) + // For some reason we need to force a full-screen update to prevent + // the screen from mixing up (top +-100px missing, garbled data + // at the bottom +-100px). Maybe it has to do with the vsync we + // had to disable in mdp_lcdc? + x = 0; y = 0; w = msmfb->xres; h = msmfb->yres; +#endif + yoffset = msmfb->yoffset; msmfb->update_info.left = msmfb->xres + 1; msmfb->update_info.top = msmfb->yres + 1; @@ -295,8 +304,11 @@ static void msmfb_pan_update(struct fb_info *info, uint32_t left, uint32_t top, DLOG(SHOW_UPDATES, "update %d %d %d %d %d %d\n", left, top, eright, ebottom, yoffset, pan_display); - if (msmfb->sleeping != AWAKE) - DLOG(SUSPEND_RESUME, "pan_update in state(%d)\n", msmfb->sleeping); +#if !defined(CONFIG_MACH_HTCLEO) + // For some reason we need to remove it here, state is 1, we have to look later to this problem + if (msmfb->sleeping != AWAKE) + DLOG(SUSPEND_RESUME, "pan_update in state(%d)\n", msmfb->sleeping); +#endif #if (defined(CONFIG_USB_FUNCTION_PROJECTOR) || defined(CONFIG_USB_ANDROID_PROJECTOR)) /* Jay, 8/1/09' */