Merge tag 'iommu-updates-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
[platform/kernel/linux-starfive.git] / drivers / media / platform / mediatek / vcodec / mtk_vcodec_enc_drv.c
index 50e5571..168004a 100644 (file)
@@ -89,16 +89,24 @@ static irqreturn_t mtk_vcodec_enc_irq_handler(int irq, void *priv)
        struct mtk_vcodec_ctx *ctx;
        unsigned long flags;
        void __iomem *addr;
+       int core_id;
 
        spin_lock_irqsave(&dev->irqlock, flags);
        ctx = dev->curr_ctx;
        spin_unlock_irqrestore(&dev->irqlock, flags);
 
-       mtk_v4l2_debug(1, "id=%d coreid:%d", ctx->id, dev->venc_pdata->core_id);
-       addr = dev->reg_base[dev->venc_pdata->core_id] +
-                               MTK_VENC_IRQ_ACK_OFFSET;
+       core_id = dev->venc_pdata->core_id;
+       if (core_id < 0 || core_id >= NUM_MAX_VCODEC_REG_BASE) {
+               mtk_v4l2_err("Invalid core id: %d, ctx id: %d",
+                            core_id, ctx->id);
+               return IRQ_HANDLED;
+       }
+
+       mtk_v4l2_debug(1, "id: %d, core id: %d", ctx->id, core_id);
 
-       ctx->irq_status = readl(dev->reg_base[dev->venc_pdata->core_id] +
+       addr = dev->reg_base[core_id] + MTK_VENC_IRQ_ACK_OFFSET;
+
+       ctx->irq_status = readl(dev->reg_base[core_id] +
                                (MTK_VENC_IRQ_STATUS_OFFSET));
 
        clean_irq_status(ctx->irq_status, addr);
@@ -448,7 +456,7 @@ static const struct of_device_id mtk_vcodec_enc_match[] = {
 };
 MODULE_DEVICE_TABLE(of, mtk_vcodec_enc_match);
 
-static int mtk_vcodec_enc_remove(struct platform_device *pdev)
+static void mtk_vcodec_enc_remove(struct platform_device *pdev)
 {
        struct mtk_vcodec_dev *dev = platform_get_drvdata(pdev);
 
@@ -463,12 +471,11 @@ static int mtk_vcodec_enc_remove(struct platform_device *pdev)
        v4l2_device_unregister(&dev->v4l2_dev);
        pm_runtime_disable(dev->pm.dev);
        mtk_vcodec_fw_release(dev->fw_handler);
-       return 0;
 }
 
 static struct platform_driver mtk_vcodec_enc_driver = {
        .probe  = mtk_vcodec_probe,
-       .remove = mtk_vcodec_enc_remove,
+       .remove_new = mtk_vcodec_enc_remove,
        .driver = {
                .name   = MTK_VCODEC_ENC_NAME,
                .of_match_table = mtk_vcodec_enc_match,