rk3368 lcdc: fix crash when close display
authorhjc <hjc@rock-chips.com>
Thu, 25 Dec 2014 05:59:21 +0000 (13:59 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Thu, 25 Dec 2014 06:26:22 +0000 (14:26 +0800)
Signed-off-by: hjc <hjc@rock-chips.com>
drivers/video/rockchip/lcdc/rk3368_lcdc.c

index 305fef7bf24de9ccd81d110da21d13b33b1efad7..30a4289fc07f9c3ed70c2c1b00bb573aaf28dc74 100644 (file)
@@ -435,7 +435,8 @@ static int rk3368_lcdc_pre_init(struct rk_lcdc_driver *dev_drv)
        return 0;
 }
 
-static void rk3368_lcdc_deint(struct lcdc_device *lcdc_dev)
+static void __maybe_unused
+       rk3368_lcdc_deint(struct lcdc_device *lcdc_dev)
 {
        rk3368_lcdc_disable_irq(lcdc_dev);
        spin_lock(&lcdc_dev->reg_lock);
@@ -4369,8 +4370,12 @@ static void rk3368_lcdc_shutdown(struct platform_device *pdev)
 {
        struct lcdc_device *lcdc_dev = platform_get_drvdata(pdev);
 
-       rk3368_lcdc_deint(lcdc_dev);
-       rk_disp_pwr_disable(&lcdc_dev->driver);
+       if (0) {/*maybe lead to crash*/
+               rk3368_lcdc_deint(lcdc_dev);
+               rk_disp_pwr_disable(&lcdc_dev->driver);
+       } else {
+               rk3368_lcdc_early_suspend(&lcdc_dev->driver);
+       }
 }
 
 #if defined(CONFIG_OF)