aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/exynos/exynos_mixer.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 2f6727a4e76..3bc01a6b5e9 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -886,7 +886,7 @@ static irqreturn_t mixer_irq_handler(int irq, void *arg)
886 struct exynos_drm_hdmi_context *drm_hdmi_ctx = arg; 886 struct exynos_drm_hdmi_context *drm_hdmi_ctx = arg;
887 struct mixer_context *ctx = drm_hdmi_ctx->ctx; 887 struct mixer_context *ctx = drm_hdmi_ctx->ctx;
888 struct mixer_resources *res = &ctx->mixer_res; 888 struct mixer_resources *res = &ctx->mixer_res;
889 u32 val, val_base; 889 u32 val, base, shadow;
890 890
891 spin_lock(&res->reg_slock); 891 spin_lock(&res->reg_slock);
892 892
@@ -897,12 +897,14 @@ static irqreturn_t mixer_irq_handler(int irq, void *arg)
897 if (val & MXR_INT_STATUS_VSYNC) { 897 if (val & MXR_INT_STATUS_VSYNC) {
898 /* interlace scan need to check shadow register */ 898 /* interlace scan need to check shadow register */
899 if (ctx->interlace) { 899 if (ctx->interlace) {
900 val_base = mixer_reg_read(res, MXR_GRAPHIC_BASE_S(0)); 900 base = mixer_reg_read(res, MXR_GRAPHIC_BASE(0));
901 if (ctx->win_data[0].dma_addr != val_base) 901 shadow = mixer_reg_read(res, MXR_GRAPHIC_BASE_S(0));
902 if (base != shadow)
902 goto out; 903 goto out;
903 904
904 val_base = mixer_reg_read(res, MXR_GRAPHIC_BASE_S(1)); 905 base = mixer_reg_read(res, MXR_GRAPHIC_BASE(1));
905 if (ctx->win_data[1].dma_addr != val_base) 906 shadow = mixer_reg_read(res, MXR_GRAPHIC_BASE_S(1));
907 if (base != shadow)
906 goto out; 908 goto out;
907 } 909 }
908 910