From fc865a10c3cb4f53ee713159ae5c3452be32253b Mon Sep 17 00:00:00 2001 From: "zhiwei.yuan" Date: Mon, 15 Jul 2019 13:54:19 +0800 Subject: [PATCH] vdin: subtitle is disappear after hot_plug signal cable [1/1] PD#SWPL-11151 Problem: signal format is null when start dec Solution: do not change signal format when signal is unstable Verify: verified by t962x2_x301 Change-Id: I14a9247e83c15aecac1939f3270f46642a6d3a22 Signed-off-by: zhiwei.yuan --- drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c | 9 ++++++-- drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c | 29 ++++++++++++++------------ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c index ec0a900..c2a5659 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c @@ -225,12 +225,16 @@ int vdin_open_fe(enum tvin_port_e port, int index, struct vdin_dev_s *devp) devp->frontend = fe; devp->parm.port = port; - /* for atv snow function */ + + /* for atv snow function,no need fmt here*/ + #if 0 if ((port == TVIN_PORT_CVBS3) && (devp->parm.info.fmt == TVIN_SIG_FMT_NULL)) devp->parm.info.fmt = TVIN_SIG_FMT_CVBS_NTSC_M; else devp->parm.info.fmt = TVIN_SIG_FMT_NULL; + #endif + devp->parm.info.status = TVIN_SIG_STATUS_NULL; /* clear color para*/ memset(&devp->pre_prop, 0, sizeof(devp->pre_prop)); @@ -2428,7 +2432,7 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg) mutex_unlock(&devp->fe_lock); break; } - if ((devp->parm.info.fmt == TVIN_SIG_FMT_NULL) && + if ((parm.info.fmt == TVIN_SIG_FMT_NULL) && (devp->parm.port == TVIN_PORT_CVBS3)) { de_fmt_flag = 1; fmt = devp->parm.info.fmt = TVIN_SIG_FMT_CVBS_NTSC_M; @@ -2436,6 +2440,7 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg) de_fmt_flag = 0; fmt = devp->parm.info.fmt = parm.info.fmt; } + devp->fmt_info_p = (struct tvin_format_s *)tvin_get_fmt_info(fmt); if (!devp->fmt_info_p) { diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c index 1ac4fbe..3246fdc 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c @@ -395,7 +395,8 @@ void tvin_smr(struct vdin_dev_s *devp) if (sm_p->state_cnt >= unstb_in) { sm_p->state_cnt = unstb_in; info->status = TVIN_SIG_STATUS_UNSTABLE; - info->fmt = TVIN_SIG_FMT_NULL; + /*info->fmt = TVIN_SIG_FMT_NULL;*/ + if (sm_debug_enable && !sm_print_unstable) { pr_info("[smr.%d] unstable\n", @@ -438,23 +439,14 @@ void tvin_smr(struct vdin_dev_s *devp) devp->parm.info.fps = prop->fps; } - } else - info->fmt = TVIN_SIG_FMT_NULL; - if (info->fmt == TVIN_SIG_FMT_NULL) { - /* remove unsupport status */ - info->status = TVIN_SIG_STATUS_UNSTABLE; - if (sm_debug_enable && - !sm_print_notsup) { - pr_info("[smr.%d] unstable --> not support\n", - devp->index); - sm_print_notsup = 1; - } - } else { + if (sm_ops->fmt_config) sm_ops->fmt_config(fe); + tvin_smr_init_counter(devp->index); sm_p->state = TVIN_SM_STATUS_PRESTABLE; sm_atv_prestable_fmt = info->fmt; + if (sm_debug_enable) { pr_info("[smr.%d]unstable-->prestable", devp->index); @@ -462,11 +454,22 @@ void tvin_smr(struct vdin_dev_s *devp) info->fmt, tvin_sig_fmt_str(info->fmt)); } + sm_print_nosig = 0; sm_print_unstable = 0; sm_print_fmt_nosig = 0; sm_print_fmt_chg = 0; sm_print_prestable = 0; + + } else { + info->status = TVIN_SIG_STATUS_UNSTABLE; + + if (sm_debug_enable && + !sm_print_notsup) { + pr_info("[smr.%d] unstable --> not support\n", + devp->index); + sm_print_notsup = 1; + } } } } -- 2.7.4