diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c index e3057ec7b081..76814b734396 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c @@ -1969,6 +1969,7 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg) pr_info("TVIN_IOC_STOP_DEC(%d) port %s, decode stop ok\n\n", parm->index, tvin_port_str(parm->port)); mutex_unlock(&devp->fe_lock); + reset_tvin_smr(parm->index); break; } case TVIN_IOC_VF_REG: diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c index 0879fb406906..4e5a98c39513 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.c @@ -287,6 +287,11 @@ static void hdmirx_dv_check(struct vdin_dev_s *devp, } } +void reset_tvin_smr(unsigned int index) +{ + sm_dev[index].sig_status = TVIN_SIG_STATUS_NULL; +} + /* * tvin state machine routine * diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.h b/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.h index 5b289bfdeb3d..b3009111cc5b 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.h +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_sm.h @@ -51,6 +51,7 @@ struct tvin_sm_s { }; void tvin_smr(struct vdin_dev_s *pdev); void tvin_smr_init(int index); +void reset_tvin_smr(unsigned int index); enum tvin_sm_status_e tvin_get_sm_status(int index);