dv: blank screen during Transition tests [1/1]

PD#SWPL-16051

Problem:
Soure changed from DV to sdr, but core1 lut
is not update due to stb_core_setting_update_flag
is reset when frame dropped by amvideo

Solution:
Don't clear stb_core_setting_update_flag until
it has been used.

Verify:
U212

Change-Id: Ib1e445653978583ddda35c266000e812463f3f77
Signed-off-by: yao liu <yao.liu@amlogic.com>
This commit is contained in:
yao liu
2019-10-31 15:47:49 +08:00
committed by Tao Zeng
parent 38fcfe6251
commit 08b606bbad
2 changed files with 25 additions and 2 deletions

View File

@@ -237,6 +237,11 @@ static unsigned int dolby_vision_flags = FLAG_BYPASS_VPP | FLAG_FORCE_CVM;
module_param(dolby_vision_flags, uint, 0664);
MODULE_PARM_DESC(dolby_vision_flags, "\n dolby_vision_flags\n");
/*bit0:set core1 lut; bit1: set core2 lut; bit 3: set all reg*/
static unsigned int force_set;
module_param(force_set, uint, 0664);
MODULE_PARM_DESC(force_set, "\n force_set\n");
#define DV_NAME_LEN_MAX 32
static unsigned int htotal_add = 0x140;
@@ -1951,6 +1956,12 @@ static int dolby_core1_set(
if (dolby_vision_flags & FLAG_DISABLE_COMPOSER)
composer_enable = 0;
if (force_set & 1)
set_lut = true;
if (force_set & 4)
reset = true;
if (dolby_vision_on_count
== dolby_vision_run_mode_delay)
reset = true;
@@ -2296,6 +2307,12 @@ static int dolby_core2_set(
reset = true;
}
if (force_set & 2)
set_lut = true;
if (force_set & 4)
reset = true;
if (stb_core_setting_update_flag & FLAG_CHANGE_TC2)
set_lut = true;
@@ -2439,6 +2456,9 @@ static int dolby_core3_set(
(dolby_vision_flags & FLAG_CERTIFICAION))
reset = true;
if (force_set & 4)
reset = true;
if (is_meson_gxm()) {
if ((first_reseted & 0x2) == 0) {
first_reseted = (first_reseted | 0x2);
@@ -2946,6 +2966,7 @@ static void apply_stb_core_settings(
DOLBY_VISION_OUTPUT_MODE_IPT_TUNNEL,
pps_state);
}
stb_core_setting_update_flag = 0;
}
static void osd_bypass(int bypass)
@@ -6805,7 +6826,7 @@ int dolby_vision_parse_metadata(
&new_dovi_setting);
if (flag >= 0) {
#ifdef V2_4
stb_core_setting_update_flag = flag;
stb_core_setting_update_flag |= flag;
if ((dolby_vision_flags
& FLAG_FORCE_DOVI_LL)
&& (dst_format == FORMAT_DOVI))

View File

@@ -6919,7 +6919,9 @@ static irqreturn_t vsync_isr_in(int irq, void *dev_id)
/* all drop done*/
dovi_drop_flag = false;
omx_drop_done = true;
pr_info("dolby vision drop done\n");
if (debug_flag &
DEBUG_FLAG_OMX_DV_DROP_FRAME)
pr_info("dolby vision drop done\n");
break;
} else
break;