dv: display abnormal at 1080p24hz [1/1]
authoryao liu <yao.liu@amlogic.com>
Tue, 15 Oct 2019 07:34:13 +0000 (15:34 +0800)
committerYao Liu <yao.liu@amlogic.com>
Wed, 16 Oct 2019 09:09:02 +0000 (02:09 -0700)
PD#SWPL-12495

Problem:
vpotch is small at 1080p24hz

Solution:
increase vpotch to 0x60

Verify:
SM1

Change-Id: I1505b0742b7e58c89396673e68b55384fa09551c
Signed-off-by: yao liu <yao.liu@amlogic.com>
drivers/amlogic/media/enhancement/amdolby_vision/amdolby_vision.c

index 03148da..55b5d15 100644 (file)
@@ -2683,6 +2683,7 @@ int get_mute_type(void)
 static void adjust_vpotch(void)
 {
        const struct vinfo_s *vinfo = get_current_vinfo();
+       int sync_duration_num = 60;
 
        if (is_meson_txlx_stbmode()
                || force_stb_mode) {
@@ -2702,11 +2703,17 @@ static void adjust_vpotch(void)
                        g_vpotch = 0x20;
        } else if (is_meson_g12()) {
                if (vinfo) {
+                       if (vinfo->sync_duration_den)
+                               sync_duration_num = vinfo->sync_duration_num /
+                                                   vinfo->sync_duration_den;
                        if (debug_dolby & 2)
-                               pr_dolby_dbg("vinfo %d %d %d\n",
-                                       vinfo->width,
-                                       vinfo->height,
-                                       vinfo->field_height);
+                               pr_dolby_dbg("vinfo %d %d %d %d %d %d\n",
+                                            vinfo->width,
+                                            vinfo->height,
+                                            vinfo->field_height,
+                                            vinfo->sync_duration_num,
+                                            vinfo->sync_duration_den,
+                                            sync_duration_num);
                        if ((vinfo->width < 1280) &&
                                (vinfo->height < 720) &&
                                (vinfo->field_height < 720))
@@ -2714,6 +2721,10 @@ static void adjust_vpotch(void)
                        else if ((vinfo->width == 1280) &&
                                 (vinfo->height == 720))
                                g_vpotch = 0x38;
+                       else if ((vinfo->width == 1920) &&
+                                (vinfo->height == 1080) &&
+                                (sync_duration_num < 30))
+                               g_vpotch = 0x60;
                        else
                                g_vpotch = 0x20;
                        if (vinfo->width > 1920)