dv: display green when hotplug hdmi after boot [1/1]
authoryao liu <yao.liu@amlogic.com>
Fri, 20 Sep 2019 01:56:22 +0000 (21:56 -0400)
committerYao Liu <yao.liu@amlogic.com>
Fri, 20 Sep 2019 07:19:59 +0000 (00:19 -0700)
PD#SWPL-14323

Problem:
Kernel and uboot is not sync: When kernel startup
without hdmi,dolby_vision_on is not set to true
even if dv is on in uboot. This lead to dv core
can't turn off when bypass dv in sdr->sdr case.

Solution:
Regardless of connecting to hdmi, as long as uboot
turn on dv, set dolby_vision_on up

Verify:
verify on sm1

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

index bfdb289..cc72020 100644 (file)
@@ -3583,7 +3583,7 @@ void enable_dolby_vision(int enable)
                                stb_core_setting_update_flag = FLAG_CHANGE_ALL;
                                stb_core2_const_flag = false;
                                memset(&dovi_setting, 0, sizeof(dovi_setting));
-                               pr_dolby_dbg("Dolby Vision G12a turn off\n");
+                               pr_info("Dolby Vision G12a turn off\n");
                        } else {
                                VSYNC_WR_DV_REG_BITS(
                                        VIU_MISC_CTRL1,
@@ -7201,9 +7201,9 @@ int register_dv_functions(const struct dolby_vision_func_s *func)
        if (dolby_vision_on_in_uboot) {
                if (is_vinfo_available(vinfo)) {
                        is_sink_cap_changed(vinfo);
-                       dolby_vision_on = true;
                } else
                        pr_info("sink not available\n");
+               dolby_vision_on = true;
                dolby_vision_wait_on = false;
                dolby_vision_wait_init = false;
                dolby_vision_on_in_uboot = 0;
@@ -7614,7 +7614,7 @@ unsigned int dolby_vision_check_enable(void)
                        if ((READ_VPP_DV_REG(DOLBY_CORE3_DIAG_CTRL) & 0xff)
                                == 0x20) {
                                /*LL YUV422 mode*/
-                               dv_mode = dv_mode_table[2];
+                               dv_mode = dv_mode_table[1];
                                /*set_dolby_vision_mode(dv_mode);*/
                                dolby_vision_mode = dv_mode;
                                dolby_vision_status = DV_PROCESS;
@@ -7623,7 +7623,7 @@ unsigned int dolby_vision_check_enable(void)
                        } else if ((READ_VPP_DV_REG(DOLBY_CORE3_DIAG_CTRL)
                                & 0xff) == 0x3) {
                                /*LL RGB444 mode*/
-                               dv_mode = dv_mode_table[2];
+                               dv_mode = dv_mode_table[1];
                                /*set_dolby_vision_mode(dv_mode);*/
                                dolby_vision_mode = dv_mode;
                                dolby_vision_status = DV_PROCESS;
@@ -7642,7 +7642,7 @@ unsigned int dolby_vision_check_enable(void)
                                } else if (READ_VPP_DV_REG(DOLBY_CORE3_REG_START
                                        + 1) == 4) {
                                        /*SDR mode*/
-                                       dv_mode = dv_mode_table[4];
+                                       dv_mode = dv_mode_table[5];
                                        /*set_dolby_vision_mode(dv_mode);*/
                                        dolby_vision_mode = dv_mode;
                                        dolby_vision_status = SDR_PROCESS;