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 <leo.ding@rock-chips.com>
This commit is contained in:
Ding Wei
2022-01-14 16:57:09 +08:00
committed by ding wei
parent a8e0df34e1
commit db7cef2b18

View File

@@ -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);