vpp: support the interlace format from vdin afbc [1/2]

PD#SWPL-5205

Problem:
Now vdin support afbc+interlace format

Solution:
In vpp, add case to support vdin afbc with interlace

Verify:
tl1_x301, verify pass

Change-Id: I6540b03a6cb5308fc2bc202069aa87234fd35df6
Signed-off-by: Yong Qin <yong.qin@amlogic.com>
This commit is contained in:
Yong Qin
2019-02-28 11:24:59 +08:00
committed by Jianxin Pan
parent b00582b23b
commit 89a190a7dc
2 changed files with 19 additions and 2 deletions

View File

@@ -494,6 +494,7 @@ const char video_dev_id2[] = "amvideo-dev2";
int onwaitendframe;
static u32 vpp_hold_line = 8;
static u32 stop_update;
struct video_dev_s video_dev[2] = {
{0x1d00 - 0x1d00, 0x1a50 - 0x1a50},
@@ -4026,6 +4027,8 @@ static void vsync_toggle_frame(struct vframe_s *vf)
#endif
}
}
if (stop_update)
frame_par_ready_to_set = 0;
}
static void viu_set_dcu(struct vpp_frame_par_s *frame_par, struct vframe_s *vf)
@@ -7072,7 +7075,15 @@ SET_FILTER:
u32 zoom_start_y, zoom_end_y;
correct_vd1_mif_size_for_DV(cur_frame_par);
if (cur_dispbuf->type & VIDTYPE_INTERLACE) {
if (cur_dispbuf->type & VIDTYPE_VIU_FIELD) {
if (cur_dispbuf->type
& VIDTYPE_COMPRESS) {
/* for vdin afbc and interlace case */
zoom_start_y =
cur_frame_par->VPP_vd_start_lines_;
zoom_end_y =
cur_frame_par->VPP_vd_end_lines_;
} else if (cur_dispbuf->type
& VIDTYPE_VIU_FIELD) {
zoom_start_y =
cur_frame_par->VPP_vd_start_lines_
>> 1;
@@ -12796,6 +12807,9 @@ module_param(toggle_count, uint, 0664);
MODULE_PARM_DESC(vpp_hold_line, "\n vpp_hold_line\n");
module_param(vpp_hold_line, uint, 0664);
MODULE_PARM_DESC(stop_update, "\n stop_update\n");
module_param(stop_update, uint, 0664);
MODULE_PARM_DESC(reference_zorder, "\n reference_zorder\n");
module_param(reference_zorder, uint, 0664);

View File

@@ -2928,7 +2928,10 @@ int vpp_set_filters(
aspect_ratio = (vf->ratio_control & DISP_RATIO_ASPECT_RATIO_MASK)
>> DISP_RATIO_ASPECT_RATIO_BIT;
if (vf->type & VIDTYPE_INTERLACE)
/* the height from vdin afbc will be half */
/* so need no interlace in */
if ((vf->type & VIDTYPE_INTERLACE)
&& !(vf->type & VIDTYPE_COMPRESS))
vpp_flags = VPP_FLAG_INTERLACE_IN;
if (vf->ratio_control & DISP_RATIO_PORTRAIT_MODE)