rk312x: lcdc: fix shutdown power and clock deinit
authorMark Yao <mark.yao@rock-chips.com>
Thu, 25 Dec 2014 02:06:38 +0000 (10:06 +0800)
committerMark Yao <mark.yao@rock-chips.com>
Thu, 25 Dec 2014 02:06:38 +0000 (10:06 +0800)
immediately power down lcdc and clock, maybe
regs_update_handler still work, some status would
became wrong.

Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/video/rockchip/lcdc/rk312x_lcdc.c

index 107f7ad231f8af2a02daac9ae7ac1d065a3eb9be..9edc3e1508afd8afdeae0ba4a28244c14f22325e 100755 (executable)
@@ -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);