rk3368 lcdc: flush update regs worker when switch screen
authorhjc <hjc@rock-chips.com>
Thu, 9 Apr 2015 03:54:56 +0000 (11:54 +0800)
committerhjc <hjc@rock-chips.com>
Thu, 9 Apr 2015 03:55:03 +0000 (11:55 +0800)
Signed-off-by: hjc <hjc@rock-chips.com>
drivers/video/rockchip/lcdc/rk3368_lcdc.c

index 14e969f7b5754d75e7be813bb149b49a50e6d595..42d411723559f59213191a28b6ae51919d743a4b 100755 (executable)
@@ -1733,7 +1733,6 @@ static int lcdc_reset(struct rk_lcdc_driver *dev_drv, bool initscreen)
                mask = m_WIN0_EN;
                val = v_WIN0_EN(0);
                lcdc_msk_reg(lcdc_dev, WIN0_CTRL0, mask, val);
-
                lcdc_msk_reg(lcdc_dev, WIN1_CTRL0, mask, val);
 
                mask = m_WIN2_EN | m_WIN2_MST0_EN |
@@ -1784,6 +1783,8 @@ static int rk3368_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
            container_of(dev_drv, struct lcdc_device, driver);
        struct rk_screen *screen = dev_drv->cur_screen;
        u32 mask, val;
+        if (!lcdc_dev->standby && initscreen && (dev_drv->first_frame != 1))
+                flush_kthread_worker(&dev_drv->update_regs_worker);
 
        spin_lock(&lcdc_dev->reg_lock);
        if (likely(lcdc_dev->clk_on)) {