tve:rk1000: When set mode , judge whether delay
authorShenZhengyi <szy@rock-chips.com>
Tue, 16 Jun 2015 05:33:55 +0000 (13:33 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Tue, 16 Jun 2015 08:10:10 +0000 (16:10 +0800)
      If the set mode is the same of current mode , it does not delay.

Signed-off-by: ShenZhengyi <szy@rock-chips.com>
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/tve/rk1000/rk1000_tve_cvbs.c

index 3c8e4e81d6a8093cf6e52e3836338ce286c0ebc5..af16805aa3f19fc4dfee0409e05f6299090a60fb 100755 (executable)
@@ -12,6 +12,7 @@ static const struct fb_videomode rk1000_cvbs_mode[] = {
 
 static struct rk1000_monspecs cvbs_monspecs;
 extern int cvbsformat;
+static int changeflag;
 
 int rk1000_tv_ntsc_init(void)
 {
@@ -98,11 +99,13 @@ static int rk1000_cvbs_set_enable(struct rk_display_device *device, int enable)
                                rk1000_tv_write_block(0x03, &val, 1);
                                rk1000_switch_fb(cvbs_monspecs.mode,
                                                 cvbs_monspecs.mode_set);
-                               msleep(600);
+                               if (changeflag == 1)
+                                       msleep(600);
                                val = 0x03;
                                rk1000_tv_write_block(0x03, &val, 1);
                        }               
                        cvbs_monspecs.enable = 1;
+                       changeflag = 0;
                }
        }
        return 0;
@@ -139,6 +142,7 @@ static int rk1000_cvbs_set_mode(struct rk_display_device *device,
                                cvbs_monspecs.mode_set = i + 1;
                                cvbs_monspecs.mode = (struct fb_videomode *)
                                                        &rk1000_cvbs_mode[i];
+                               changeflag = 1;
                        }
                        return 0;
                }