vdin: hdmi in 1080i,game mode shakes seriously [1/1]
authorzhiwei.yuan <zhiwei.yuan@amlogic.com>
Mon, 12 Aug 2019 10:41:40 +0000 (18:41 +0800)
committerTao Zeng <tao.zeng@amlogic.com>
Thu, 15 Aug 2019 02:08:48 +0000 (19:08 -0700)
PD#SWPL-9795

Problem:
field top/bottom is inverted in game mode

Solution:
invert top/bottom in game mode 2

Verify:
verified by t962x2_x301

Change-Id: If4eafef9d422a5ba1062a0e398741efcb21266f2
Signed-off-by: zhiwei.yuan <zhiwei.yuan@amlogic.com>
drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.c

index bb52b90..58aac94 100644 (file)
@@ -4428,6 +4428,7 @@ u32 vdin_get_curr_field_type(struct vdin_dev_s *devp)
        } else {
                field_status = vdin_get_field_type(devp->addr_offset);
                /*tvafe FIELD POLARITY 0 TOP,vdin must invert for correct*/
+
                if (invert_top_bot ||
                        (devp->parm.port >= TVIN_PORT_CVBS0 &&
                        devp->parm.port <= TVIN_PORT_CVBS3))
@@ -4436,7 +4437,20 @@ u32 vdin_get_curr_field_type(struct vdin_dev_s *devp)
                else
                        type |= field_status ?
                        VIDTYPE_INTERLACE_BOTTOM : VIDTYPE_INTERLACE_TOP;
+
+               /*md2 get pre field sts, need invert for cur*/
+               if ((devp->game_mode & VDIN_GAME_MODE_2) == VDIN_GAME_MODE_2) {
+                       if ((type & VIDTYPE_INTERLACE_BOTTOM) ==
+                               VIDTYPE_INTERLACE_TOP) {
+                               type |= VIDTYPE_INTERLACE_BOTTOM;
+                       } else if ((type & VIDTYPE_INTERLACE_BOTTOM) ==
+                               VIDTYPE_INTERLACE_BOTTOM) {
+                               type &= ~VIDTYPE_INTERLACE_BOTTOM;
+                               type |= VIDTYPE_INTERLACE_TOP;
+                       }
+               }
        }
+
        format_convert = devp->format_convert;
        if ((format_convert == VDIN_FORMAT_CONVERT_YUV_YUV444) ||
                        (format_convert == VDIN_FORMAT_CONVERT_RGB_YUV444)) {