From db7cef2b18d89f0520f1d2a4c6774f88bf8bb055 Mon Sep 17 00:00:00 2001 From: Ding Wei Date: Fri, 14 Jan 2022 16:57:09 +0800 Subject: [PATCH] video: rockchip: mpp: rkvdec2: Disable irq when soft ccu reset 1. it is not need save qos when resetting. 2. In the ccu mode, force core idle is an asynchronous operation. while the core may still be working and will report irq. However, since it is currently a reset operation, IRQ can directly disabled without processing. Change-Id: I2b32f1fdaf77ecf244ae15fdf22341f55b7f3ffc Signed-off-by: Ding Wei --- drivers/video/rockchip/mpp/mpp_rkvdec2_link.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c index 2d03d1dff6c5..9021f67383d1 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c @@ -1707,11 +1707,11 @@ static int rkvdec2_soft_ccu_reset(struct mpp_taskqueue *queue) if (!atomic_read(&mpp->reset_request)) continue; dev_info(mpp->dev, "resetting...\n"); + disable_hardirq(mpp->irq); + /* foce idle, disconnect core and ccu */ writel(dec->core_mask, dec->ccu->reg_base + RKVDEC_CCU_CORE_IDLE_BASE); - rockchip_save_qos(mpp->dev); rkvdec2_reset(mpp); - rockchip_restore_qos(mpp->dev); /* clear error mask */ writel_relaxed(dec->core_mask & RKVDEC_CCU_CORE_RW_MASK, @@ -1723,6 +1723,7 @@ static int rkvdec2_soft_ccu_reset(struct mpp_taskqueue *queue) writel(dec->core_mask & RKVDEC_CCU_CORE_RW_MASK, dec->ccu->reg_base + RKVDEC_CCU_CORE_IDLE_BASE); + enable_irq(mpp->irq); dev_info(mpp->dev, "reset done\n"); } atomic_set(&queue->reset_request, 0);