media: mfc: clear ROI_ENABLE when SEQ_DONE
authorSunyoung Kang <sy0816.kang@samsung.com>
Wed, 24 Jan 2018 05:57:13 +0000 (14:57 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:22:21 +0000 (20:22 +0300)
When HEVC encoding, the ROI is enabled at SEQ_START.
This adds to clear the ROI_ENABLE bit at SEQ_DONE.

Change-Id: If2ce5b25913915edbb8a7860232bdd71eeb028ba
Signed-off-by: Sunyoung Kang <sy0816.kang@samsung.com>
drivers/media/platform/exynos/mfc/s5p_mfc_irq.c
drivers/media/platform/exynos/mfc/s5p_mfc_reg.h

index 19325d0c4782b1d5d532f36b1b98f0b8d591d5b6..0e4c91d548f2807da976545728827f43d1b7e2de 100644 (file)
@@ -1170,6 +1170,9 @@ static int mfc_handle_seq_enc(struct s5p_mfc_ctx *ctx)
        ctx->dpb_count = s5p_mfc_get_enc_dpb_count();
        ctx->scratch_buf_size = s5p_mfc_get_enc_scratch_size();
 
+       /* If the ROI is enabled at SEQ_START, clear ROI_ENABLE bit */
+       s5p_mfc_clear_roi_enable(dev);
+
        ret = s5p_mfc_alloc_codec_buffers(ctx);
        if (ret) {
                mfc_err_ctx("Failed to allocate encoding buffers.\n");
index f8b18c0cd62cbe94dfe0900e821ba697ea9a5198..d8700bb91a804a5527061796029f3731f80c83d1 100644 (file)
@@ -224,6 +224,15 @@ static inline void s5p_mfc_clear_enc_res_change(struct s5p_mfc_dev *dev)
        MFC_WRITEL(reg, S5P_FIMV_E_PARAM_CHANGE);
 }
 
+static inline void s5p_mfc_clear_roi_enable(struct s5p_mfc_dev *dev)
+{
+       unsigned int reg = 0;
+
+       reg = MFC_READL(S5P_FIMV_E_RC_ROI_CTRL);
+       reg &= ~(0x1);
+       MFC_WRITEL(reg, S5P_FIMV_E_RC_ROI_CTRL);
+}
+
 void s5p_mfc_dbg_enable(struct s5p_mfc_dev *dev);
 void s5p_mfc_dbg_disable(struct s5p_mfc_dev *dev);
 void s5p_mfc_dbg_set_addr(struct s5p_mfc_dev *dev);