From: Mark Yao Date: Thu, 25 Dec 2014 02:06:38 +0000 (+0800) Subject: rk312x: lcdc: fix shutdown power and clock deinit X-Git-Tag: firefly_0821_release~4368 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=78648b80d88a095aa5cc82048d5fe08650a85e5f;p=firefly-linux-kernel-4.4.55.git rk312x: lcdc: fix shutdown power and clock deinit immediately power down lcdc and clock, maybe regs_update_handler still work, some status would became wrong. Signed-off-by: Mark Yao --- diff --git a/drivers/video/rockchip/lcdc/rk312x_lcdc.c b/drivers/video/rockchip/lcdc/rk312x_lcdc.c index 107f7ad231f8..9edc3e1508af 100755 --- a/drivers/video/rockchip/lcdc/rk312x_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk312x_lcdc.c @@ -756,24 +756,6 @@ static int rk312x_lcdc_pre_init(struct rk_lcdc_driver *dev_drv) static void rk312x_lcdc_deinit(struct lcdc_device *lcdc_dev) { - u32 mask, val; - - spin_lock(&lcdc_dev->reg_lock); - if (likely(lcdc_dev->clk_on)) { - mask = m_FS_INT_CLEAR | m_FS_INT_EN | - m_LF_INT_CLEAR | m_LF_INT_EN | - m_BUS_ERR_INT_CLEAR | m_BUS_ERR_INT_EN; - val = v_FS_INT_CLEAR(0) | v_FS_INT_EN(0) | - v_LF_INT_CLEAR(0) | v_LF_INT_EN(0) | - v_BUS_ERR_INT_CLEAR(0) | v_BUS_ERR_INT_EN(0); - lcdc_msk_reg(lcdc_dev, INT_STATUS, mask, val); - lcdc_set_bit(lcdc_dev, SYS_CTRL, m_LCDC_STANDBY); - lcdc_cfg_done(lcdc_dev); - spin_unlock(&lcdc_dev->reg_lock); - } else { - spin_unlock(&lcdc_dev->reg_lock); - } - mdelay(1); } static u32 calc_sclk_freq(struct rk_screen *src_screen, @@ -2609,9 +2591,8 @@ static void rk312x_lcdc_shutdown(struct platform_device *pdev) { struct lcdc_device *lcdc_dev = platform_get_drvdata(pdev); + rk312x_lcdc_early_suspend(&lcdc_dev->driver); rk312x_lcdc_deinit(lcdc_dev); - rk312x_lcdc_clk_disable(lcdc_dev); - rk_disp_pwr_disable(&lcdc_dev->driver); if (lcdc_dev->backlight) put_device(&lcdc_dev->backlight->dev);