diff --git a/drivers/amlogic/media/deinterlace/deinterlace_hw.c b/drivers/amlogic/media/deinterlace/deinterlace_hw.c index 3918d70e8680..7015e3c1d154 100644 --- a/drivers/amlogic/media/deinterlace/deinterlace_hw.c +++ b/drivers/amlogic/media/deinterlace/deinterlace_hw.c @@ -2656,6 +2656,12 @@ void di_post_switch_buffer( DI_VSYNC_WR_MPEG_REG_BITS(MCVECRD_CTRL1, di_mcvecrd_mif->canvas_num, 16, 8); } + /*motion for current display field.*/ + if (blend_mtn_en) { + DI_VSYNC_WR_MPEG_REG_BITS(MTNRD_CTRL1, + di_mtnprd_mif->canvas_num, 16, 8); + /* current field mtn canvas index.*/ + } } else { if ((VSYNC_RD_MPEG_REG(VIU_MISC_CTRL0) & 0x50000) != 0x50000) DI_VSYNC_WR_MPEG_REG_BITS(VIU_MISC_CTRL0, 5, 16, 3); @@ -2672,6 +2678,12 @@ void di_post_switch_buffer( di_mcvecrd_mif->canvas_num, 0, 10); } + /*motion for current display field.*/ + if (blend_mtn_en) { + DI_VSYNC_WR_MPEG_REG(DI_MTNRD_CTRL, + (di_mtnprd_mif->canvas_num << 8) | (urgent << 16)); + /*current field mtn canvas index.*/ + } } if (!ei_only && (di_ddr_en || di_vpp_en)) { @@ -2686,14 +2698,6 @@ void di_post_switch_buffer( (di_buf2_mif->canvas0_addr0 << 0)); } - /* motion for current display field. */ - if (blend_mtn_en) { - DI_VSYNC_WR_MPEG_REG(DI_MTNRD_CTRL, -(di_mtnprd_mif->canvas_num << 8) | (urgent << 16) - ); /* current field mtn canvas index. */ - - } - if (di_ddr_en) { DI_VSYNC_WR_MPEG_REG(DI_DIWR_CTRL, di_diwr_mif->canvas_num |