rk3188 lcdc: fix suspend
authoryxj <yxj@rock-chips.com>
Tue, 18 Mar 2014 10:40:37 +0000 (18:40 +0800)
committeryxj <yxj@rock-chips.com>
Tue, 18 Mar 2014 10:40:55 +0000 (18:40 +0800)
drivers/video/rockchip/lcdc/rk3188_lcdc.c

index b10d925436c21d2614a6d11e6cf109ace6b08889..dae15425f8e95e3587bed8a3995c9ff88bb379af 100755 (executable)
@@ -1114,9 +1114,6 @@ static int rk3188_lcdc_early_resume(struct rk_lcdc_driver *dev_drv)
 static int rk3188_lcdc_blank(struct rk_lcdc_driver *dev_drv,
                             int win_id, int blank_mode)
 {
-       struct lcdc_device *lcdc_dev =
-           container_of(dev_drv, struct lcdc_device, driver);
-
        switch (blank_mode) {
        case FB_BLANK_UNBLANK:
                rk3188_lcdc_early_resume(dev_drv);
@@ -1485,7 +1482,10 @@ static int rk3188_lcdc_cfg_done(struct rk_lcdc_driver *dev_drv)
 {
        struct lcdc_device *lcdc_dev = container_of(dev_drv, 
                                        struct lcdc_device, driver);
-       lcdc_cfg_done(lcdc_dev);
+       spin_lock(&lcdc_dev->reg_lock);
+       if (lcdc_dev->clk_on)
+               lcdc_cfg_done(lcdc_dev);
+       spin_unlock(&lcdc_dev->reg_lock);
        return 0;
 }