From 1fd8baf8c7da3867ecb2d1421f2fb73d9e8681ca Mon Sep 17 00:00:00 2001 From: Mark Yao Date: Wed, 10 Dec 2014 09:42:31 +0800 Subject: [PATCH] rk_fb: rk312x: direct power on lcdc when do fb_unblank when do fb blank, we diretcly off the lcdc, so I think we should power on lcdc in pairs. Signed-off-by: Mark Yao --- drivers/video/rockchip/lcdc/rk312x_lcdc.c | 62 +++++++++++------------ 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/drivers/video/rockchip/lcdc/rk312x_lcdc.c b/drivers/video/rockchip/lcdc/rk312x_lcdc.c index ab97f506d413..b617eb255606 100755 --- a/drivers/video/rockchip/lcdc/rk312x_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk312x_lcdc.c @@ -1763,44 +1763,42 @@ static int rk312x_lcdc_early_resume(struct rk_lcdc_driver *dev_drv) rk_disp_pwr_enable(dev_drv); dev_drv->suspend_flag = 0; - if (lcdc_dev->atv_layer_cnt) { - rk312x_lcdc_clk_enable(lcdc_dev); - rk312x_lcdc_reg_restore(lcdc_dev); - - /* config for the FRC mode of dither down */ - if (dev_drv->cur_screen && - dev_drv->cur_screen->face != OUT_P888) { - lcdc_writel(lcdc_dev, FRC_LOWER01_0, 0x12844821); - lcdc_writel(lcdc_dev, FRC_LOWER01_1, 0x21488412); - lcdc_writel(lcdc_dev, FRC_LOWER10_0, 0x55aaaa55); - lcdc_writel(lcdc_dev, FRC_LOWER10_1, 0x55aaaa55); - lcdc_writel(lcdc_dev, FRC_LOWER11_0, 0xdeb77deb); - lcdc_writel(lcdc_dev, FRC_LOWER11_1, 0xed7bb7de); - } - - /* set screen lut */ - if (dev_drv->cur_screen && dev_drv->cur_screen->dsp_lut) - rk312x_lcdc_set_lut(dev_drv); - /*set hwc lut*/ - rk312x_lcdc_set_hwc_lut(dev_drv, dev_drv->hwc_lut, 0); + rk312x_lcdc_clk_enable(lcdc_dev); + rk312x_lcdc_reg_restore(lcdc_dev); - spin_lock(&lcdc_dev->reg_lock); + /* config for the FRC mode of dither down */ + if (dev_drv->cur_screen && + dev_drv->cur_screen->face != OUT_P888) { + lcdc_writel(lcdc_dev, FRC_LOWER01_0, 0x12844821); + lcdc_writel(lcdc_dev, FRC_LOWER01_1, 0x21488412); + lcdc_writel(lcdc_dev, FRC_LOWER10_0, 0x55aaaa55); + lcdc_writel(lcdc_dev, FRC_LOWER10_1, 0x55aaaa55); + lcdc_writel(lcdc_dev, FRC_LOWER11_0, 0xdeb77deb); + lcdc_writel(lcdc_dev, FRC_LOWER11_1, 0xed7bb7de); + } + + /* set screen lut */ + if (dev_drv->cur_screen && dev_drv->cur_screen->dsp_lut) + rk312x_lcdc_set_lut(dev_drv); + /*set hwc lut*/ + rk312x_lcdc_set_hwc_lut(dev_drv, dev_drv->hwc_lut, 0); - lcdc_msk_reg(lcdc_dev, DSP_CTRL1, m_DSP_OUT_ZERO, - v_DSP_OUT_ZERO(0)); - lcdc_msk_reg(lcdc_dev, SYS_CTRL, m_LCDC_STANDBY, - v_LCDC_STANDBY(0)); - lcdc_msk_reg(lcdc_dev, DSP_CTRL1, m_BLANK_EN, v_BLANK_EN(0)); - lcdc_cfg_done(lcdc_dev); + spin_lock(&lcdc_dev->reg_lock); - if (dev_drv->iommu_enabled) { - if (dev_drv->mmu_dev) - rockchip_iovmm_activate(dev_drv->dev); - } + lcdc_msk_reg(lcdc_dev, DSP_CTRL1, m_DSP_OUT_ZERO, + v_DSP_OUT_ZERO(0)); + lcdc_msk_reg(lcdc_dev, SYS_CTRL, m_LCDC_STANDBY, + v_LCDC_STANDBY(0)); + lcdc_msk_reg(lcdc_dev, DSP_CTRL1, m_BLANK_EN, v_BLANK_EN(0)); + lcdc_cfg_done(lcdc_dev); - spin_unlock(&lcdc_dev->reg_lock); + if (dev_drv->iommu_enabled) { + if (dev_drv->mmu_dev) + rockchip_iovmm_activate(dev_drv->dev); } + spin_unlock(&lcdc_dev->reg_lock); + if (dev_drv->trsm_ops && dev_drv->trsm_ops->enable) dev_drv->trsm_ops->enable(); msleep(160); -- 2.34.1