tve:rk1000:modify suspend and resume condition
authorShenZhengyi <szy@rock-chips.com>
Thu, 18 Jun 2015 09:08:56 +0000 (17:08 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Thu, 18 Jun 2015 09:36:40 +0000 (17:36 +0800)
Signed-off-by: ShenZhengyi <szy@rock-chips.com>
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/tve/rk1000/rk1000_tve.c

index ea0e0af0bba34b1dca6d557189de3bf3311b5053..82fb904916b58d32e33c398a44e26ccf1c9651e8 100755 (executable)
@@ -214,14 +214,18 @@ static void rk1000_early_suspend(void *h)
 {
        pr_info("rk1000_early_suspend\n");
        if (rk1000_tve.ypbpr) {
-               rk1000_tve.ypbpr->ddev->ops->setenable(rk1000_tve.ypbpr->ddev,
-                                                      0);
-               rk1000_tve.ypbpr->suspend = 1;
+               if (!rk1000_tve.ypbpr->suspend)
+                       rk1000_tve.ypbpr->suspend = 1;
+               if (rk1000_tve.ypbpr->enable)
+                       rk1000_tve.ypbpr->ddev->ops->setenable(
+                       rk1000_tve.ypbpr->ddev, 0);
        }
        if (rk1000_tve.cvbs) {
-               rk1000_tve.cvbs->ddev->ops->setenable(rk1000_tve.cvbs->ddev,
-                                                     0);
-               rk1000_tve.cvbs->suspend = 1;
+               if (!rk1000_tve.cvbs->suspend)
+                       rk1000_tve.cvbs->suspend = 1;
+               if (rk1000_tve.cvbs->enable)
+                       rk1000_tve.cvbs->ddev->ops->setenable(
+                       rk1000_tve.cvbs->ddev, 0);
        }
 }
 
@@ -230,14 +234,22 @@ static void rk1000_early_resume(void *h)
 {
        pr_info("rk1000 tve exit early resume\n");
        if (rk1000_tve.cvbs) {
-               rk1000_tve.cvbs->suspend = 0;
-               if (rk1000_tve.mode < TVOUT_YPBPR_720X480P_60)
-                       rk_display_device_enable((rk1000_tve.cvbs)->ddev);
+               if (rk1000_tve.cvbs->suspend)
+                       rk1000_tve.cvbs->suspend = 0;
+               if (rk1000_tve.mode < TVOUT_YPBPR_720X480P_60) {
+                       if (rk1000_tve.cvbs->enable)
+                               rk_display_device_enable(
+                               (rk1000_tve.cvbs)->ddev);
+               }
        }
        if (rk1000_tve.ypbpr) {
-               rk1000_tve.ypbpr->suspend = 0;
-               if (rk1000_tve.mode > TVOUT_CVBS_PAL)
-                       rk_display_device_enable((rk1000_tve.ypbpr)->ddev);
+               if (rk1000_tve.ypbpr->suspend)
+                       rk1000_tve.ypbpr->suspend = 0;
+               if (rk1000_tve.mode > TVOUT_CVBS_PAL) {
+                       if (rk1000_tve.ypbpr->enable)
+                               rk_display_device_enable(
+                               (rk1000_tve.ypbpr)->ddev);
+               }
        }
 }