rk1000: Fix picture error when suspend and switch mode.
authorZheng Yang <zhengyang@rock-chips.com>
Tue, 14 Apr 2015 14:05:41 +0000 (22:05 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Tue, 14 Apr 2015 14:05:41 +0000 (22:05 +0800)
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/tve/rk1000/rk1000_tve.c
drivers/video/rockchip/tve/rk1000/rk1000_tve_cvbs.c

index 483ae0336d1bfac260c4cfbde65cc682bc3fedc7..a8247e783da72005c495510e42ec01539f736141 100755 (executable)
@@ -150,12 +150,12 @@ int rk1000_tv_standby(int type)
                cvbs = rk1000_tve.cvbs->enable;
        if (cvbs || ypbpr)
                return 0;
-       val = 0x00;
+/*     val = 0x00;
        ret = rk1000_control_write_block(0x03, &val, 1);
        if (ret < 0) {
                pr_err("rk1000_control_write_block err!\n");
                return ret;
-       }
+       } */
        val = 0x07;
        ret = rk1000_tv_write_block(0x03, &val, 1);
        if (ret < 0) {
index 4e4e503cbae31af43afabd3137b9ab276965669d..79591a487717a5966500150e024a3a8227d94f27 100755 (executable)
@@ -1,5 +1,6 @@
 #include <linux/ctype.h>
 #include <linux/string.h>
+#include <linux/delay.h>
 #include "rk1000_tve.h"
 
 
@@ -68,6 +69,8 @@ int rk1000_tv_pal_init(void)
 
 static int rk1000_cvbs_set_enable(struct rk_display_device *device, int enable)
 {
+       unsigned char val;
+
        if (cvbs_monspecs.suspend)
                return 0;
        if ((cvbs_monspecs.enable != enable) ||
@@ -76,8 +79,13 @@ static int rk1000_cvbs_set_enable(struct rk_display_device *device, int enable)
                        cvbs_monspecs.enable = 0;
                        rk1000_tv_standby(RK1000_TVOUT_CVBS);
                } else if (enable == 1) {
+                       val = 0x07;
+                       rk1000_tv_write_block(0x03, &val, 1);
                        rk1000_switch_fb(cvbs_monspecs.mode,
                                         cvbs_monspecs.mode_set);
+                       msleep(600);
+                       val = 0x03;
+                       rk1000_tv_write_block(0x03, &val, 1);
                        cvbs_monspecs.enable = 1;
                }
        }