From f4ea99506da6deffc0f3b9e69a76afeb3a179e3f Mon Sep 17 00:00:00 2001 From: xuhua zhang Date: Fri, 14 Sep 2018 15:36:46 +0800 Subject: [PATCH] vdin: perfecting vdin_shutdown() interface PD#173740: vdin: perfecting vdin_shutdown() interface Free vdin resource when the system shutdown but the application program was not close vdin at some fortuitous event. Change-Id: I343e1b93c6e2166a247592d8faa39b3f737f91d0 Signed-off-by: xuhua zhang --- drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c index e8fc2c7..70f4ab3 100644 --- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c +++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c @@ -2691,6 +2691,20 @@ static void vdin_drv_shutdown(struct platform_device *pdev) struct vdin_dev_s *vdevp; vdevp = platform_get_drvdata(pdev); + + mutex_lock(&vdevp->fe_lock); + if (vdevp->flags & VDIN_FLAG_DEC_STARTED) { + vdevp->flags |= VDIN_FLAG_DEC_STOP_ISR; + vdin_stop_dec(vdevp); + vdevp->flags &= (~VDIN_FLAG_DEC_STARTED); + pr_info("VDIN(%d) decode stop ok at vdin_drv_shutdown.\n", + vdevp->index); + } else { + pr_info("VDIN(%d) decode has stopped.\n", + vdevp->index); + } + mutex_unlock(&vdevp->fe_lock); + vdevp->flags |= VDIN_FLAG_SM_DISABLE; vdin_enable_module(vdevp->addr_offset, false); pr_info("%s ok.\n", __func__); -- 2.7.4