summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAyoungSim <a.sim@samsung.com>2022-10-06 10:18:29 +0900
committerwenchangliu <wenchangliu@google.com>2022-10-06 04:02:42 +0000
commitfe2ef5bf1dcad30aa66356b2ea3b242d9db79b57 (patch)
treee7e5bbfad4371151e3af004749f53a163e202c49
parente641a69fc08feeb29a31cc9151d1e85c79dac396 (diff)
downloadgs-android-gs-pantah-5.10-t-qpr1-beta-3.tar.gz
If the sbwc lossy setting is not cleared, because it operates as lossy even though it is SBWC lossless, it may affect the next instance operation. Bug: 246669701 Signed-off-by: AyoungSim <a.sim@samsung.com> Signed-off-by: wenchangliu <wenchangliu@google.com> Change-Id: Iec3db6eceeea8869a9abaaa4965cca45da8bf4b0
-rw-r--r--drivers/media/platform/exynos/mfc/mfc_core_enc_param.c3
-rw-r--r--drivers/media/platform/exynos/mfc/mfc_core_isr.c8
-rw-r--r--drivers/media/platform/exynos/mfc/mfc_core_nal_q.c8
3 files changed, 17 insertions, 2 deletions
diff --git a/drivers/media/platform/exynos/mfc/mfc_core_enc_param.c b/drivers/media/platform/exynos/mfc/mfc_core_enc_param.c
index 0086f9257f82..63c6e7958098 100644
--- a/drivers/media/platform/exynos/mfc/mfc_core_enc_param.c
+++ b/drivers/media/platform/exynos/mfc/mfc_core_enc_param.c
@@ -287,7 +287,10 @@ static void __mfc_set_enc_params(struct mfc_core *core, struct mfc_ctx *ctx)
mfc_clear_set_bits(reg, 0x3, 24, 1);
else if (ctx->sbwcl_ratio == 75 || ctx->sbwcl_ratio == 80)
mfc_clear_set_bits(reg, 0x3, 24, 2);
+ } else {
+ mfc_clear_set_bits(reg, 0x3, 24, 0);
}
+
/* GDC-MFC vOTF enable */
mfc_clear_bits(reg, 0x1, 26);
if (ctx->gdc_votf && core->has_gdc_votf && core->has_mfc_votf) {
diff --git a/drivers/media/platform/exynos/mfc/mfc_core_isr.c b/drivers/media/platform/exynos/mfc/mfc_core_isr.c
index e6a898542fb3..d78d3162a05e 100644
--- a/drivers/media/platform/exynos/mfc/mfc_core_isr.c
+++ b/drivers/media/platform/exynos/mfc/mfc_core_isr.c
@@ -1385,9 +1385,15 @@ static int __mfc_handle_stream(struct mfc_core *core, struct mfc_ctx *ctx, unsig
}
sbwc_err = mfc_core_get_enc_comp_err();
- if (sbwc_err)
+ if (sbwc_err) {
mfc_ctx_err("[SBWC] Compressor error detected (Source: %d, DPB: %d)\n",
(sbwc_err >> 1) & 0x1, sbwc_err & 0x1);
+ mfc_ctx_err("[SBWC] sbwc: %d, lossy: %d(%d), option: %d, FORMAT: %#x, OPTIONS: %#x\n",
+ ctx->is_sbwc, ctx->is_sbwc_lossy,
+ ctx->sbwcl_ratio, enc->sbwc_option,
+ MFC_CORE_READL(MFC_REG_PIXEL_FORMAT),
+ MFC_CORE_READL(MFC_REG_E_ENC_OPTIONS));
+ }
/* handle source buffer */
__mfc_handle_stream_input(core, ctx, consumed_only);
diff --git a/drivers/media/platform/exynos/mfc/mfc_core_nal_q.c b/drivers/media/platform/exynos/mfc/mfc_core_nal_q.c
index 87e8c29893e0..6df4a4987999 100644
--- a/drivers/media/platform/exynos/mfc/mfc_core_nal_q.c
+++ b/drivers/media/platform/exynos/mfc/mfc_core_nal_q.c
@@ -1522,9 +1522,15 @@ static void __mfc_core_nal_q_handle_stream(struct mfc_core *core, struct mfc_cor
sbwc_err = ((pOutStr->NalDoneInfo >> MFC_REG_E_NAL_DONE_INFO_COMP_ERR_SHIFT)
& MFC_REG_E_NAL_DONE_INFO_COMP_ERR_MASK);
- if (sbwc_err)
+ if (sbwc_err) {
mfc_ctx_err("[NALQ][SBWC] Compressor error detected (Source: %d, DPB: %d)\n",
(sbwc_err >> 1) & 0x1, sbwc_err & 0x1);
+ mfc_ctx_err("[SBWC] sbwc: %d, lossy: %d(%d), option: %d, FORMAT: %#x, OPTIONS: %#x\n",
+ ctx->is_sbwc, ctx->is_sbwc_lossy,
+ ctx->sbwcl_ratio, enc->sbwc_option,
+ MFC_CORE_READL(MFC_REG_PIXEL_FORMAT),
+ MFC_CORE_READL(MFC_REG_E_ENC_OPTIONS));
+ }
/* handle input buffer */
__mfc_core_nal_q_handle_stream_input(core_ctx, pOutStr, consumed_only);