vdin: recycle garbage frame for afbc mode [1/1]
authorEvoke Zhang <evoke.zhang@amlogic.com>
Fri, 19 Apr 2019 03:30:42 +0000 (11:30 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Sat, 20 Apr 2019 08:54:37 +0000 (01:54 -0700)
PD#TV-4335

Problem:
switch tvin signals will flash garbage screen

Solution:
recycle barbage frame for afbc mode

Verify:
x301

Change-Id: I17c13b5db7a506403aa5ac74568b7a9e16c075c0
Signed-off-by: Evoke Zhang <evoke.zhang@amlogic.com>
drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c
drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c

index ca8bbd7..25dce3e 100644 (file)
@@ -2131,16 +2131,6 @@ start_chk:
                } else {
                        pr_info("skip_frame_debug: %d\n", skip_frame_debug);
                }
-       } else if (!strcmp(parm[0], "afbc_preview_drop_cnt")) {
-               if (parm[1] != NULL) {
-                       if (kstrtouint(parm[1], 10,
-                               &vdin_afbc_preview_force_drop_frame_cnt) == 0)
-                               pr_info("set vdin_afbc_preview_force_drop_frame_cnt: %d\n",
-                                       vdin_afbc_preview_force_drop_frame_cnt);
-               } else {
-                       pr_info("vdin_afbc_preview_force_drop_frame_cnt: %d\n",
-                               vdin_afbc_preview_force_drop_frame_cnt);
-               }
        } else if (!strcmp(parm[0], "afbc_drop_cnt")) {
                if (parm[1] != NULL) {
                        if (kstrtouint(parm[1], 10,
index a3d97b4..84110d9 100644 (file)
@@ -108,8 +108,7 @@ static int tl1_vdin1_preview_ready_flag;
 static unsigned int vdin_afbc_force_drop_frame = 1;
 static struct vf_entry *vfe_drop_force;
 
-unsigned int vdin_afbc_preview_force_drop_frame_cnt;
-unsigned int vdin_afbc_force_drop_frame_cnt;
+unsigned int vdin_afbc_force_drop_frame_cnt = 2;
 unsigned int max_ignore_frame_cnt = 2;
 unsigned int skip_frame_debug;
 
@@ -679,13 +678,12 @@ void vdin_start_dec(struct vdin_dev_s *devp)
                        tl1_vdin1_preview_flag = 1;
                        tl1_vdin1_data_readied = 0;
                        tl1_vdin1_preview_ready_flag = 0;
-                       vdin_afbc_force_drop_frame =
-                               vdin_afbc_preview_force_drop_frame_cnt;
                        pr_info("vdin.%d tl1_vdin1_preview state init\n",
                                devp->index);
                }
                vfe_drop_force = NULL;
                max_ignore_frames[devp->index] = max_ignore_frame_cnt;
+               vdin_afbc_force_drop_frame = vdin_afbc_force_drop_frame_cnt;
        }
 }