diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_vf.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_vf.c index 2bdd0e1bb6a4..9f8bda63f08d 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_vf.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_vf.c @@ -1018,10 +1018,10 @@ void vdin_vf_disp_mode_update(struct vf_entry *vfe, struct vf_pool *p) p->disp_index[0] = 0; vfe->vf.index_disp = p->disp_index[0]; - if (p->disp_mode[p->disp_index[p->skip_vf_num]] != - VFRAME_DISP_MODE_SKIP) - p->disp_mode[p->disp_index[p->skip_vf_num]] = - VFRAME_DISP_MODE_OK; + for (i = p->skip_vf_num; i > 0 && (i < VFRAME_DISP_MAX_NUM); i--) + if (p->disp_mode[p->disp_index[i]] != VFRAME_DISP_MODE_SKIP) + p->disp_mode[p->disp_index[i]] = VFRAME_DISP_MODE_OK; + p->disp_mode[p->disp_index[0]] = VFRAME_DISP_MODE_UNKNOWN; } /*skip all from current