From: Andrzej Hajda Date: Thu, 12 May 2016 13:04:01 +0000 (+0200) Subject: drm/exynos/decon5433: enable trigger for decon-tv X-Git-Tag: submit/tizen/20160810.050017~118 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5becc88d0671d327a0c2b454826c9749971db873;p=platform%2Fkernel%2Flinux-exynos.git drm/exynos/decon5433: enable trigger for decon-tv Decon-tv requires working trigger. Additionally whole trigger logic was moved to one function. Change-Id: I0d2aabc3ec3212024499868805ecfe15bdfa7023 Signed-off-by: Andrzej Hajda --- diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index 16242db51cb8..c35c8dc75f21 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -133,13 +133,11 @@ static void decon_disable_vblank(struct exynos_drm_crtc *crtc) static void decon_setup_trigger(struct decon_context *ctx) { enum exynos_drm_trigger_type trg_type = ctx->drv_data->trg_type; - u32 val = 0; + u32 val; - val &= ~(TRIGCON_SWTRIGEN | TRIGCON_HWTRIGEN_I80_RGB | - TRIGCON_HWTRIGMASK_I80_RGB | TRIGCON_TRIGEN_PER_F | - TRIGCON_TRIGEN_F); + if (!ctx->i80_if && trg_type != EXYNOS_DISPLAY_HW_TRIGGER) + return; - /* HW trigger mode is mandatory for HDMI. */ if (trg_type == EXYNOS_DISPLAY_HW_TRIGGER) val = TRIGCON_TRIGEN_PER_F | TRIGCON_TRIGEN_F | TRIGCON_HWTRIGMASK_I80_RGB | TRIGCON_HWTRIGEN_I80_RGB; @@ -189,6 +187,8 @@ static void decon_commit(struct exynos_drm_crtc *crtc) interlaced = true; } + decon_setup_trigger(ctx); + val = VIDOUT_LCD_ON; if (interlaced) val |= VIDOUT_INTERLACE_EN_F; @@ -241,10 +241,6 @@ static void decon_commit(struct exynos_drm_crtc *crtc) return; } } - - if (ctx->i80_if) - decon_setup_trigger(ctx); - /* enable output and display signal */ decon_set_bits(ctx, DECON_VIDCON0, VIDCON0_ENVID | VIDCON0_ENVID_F, ~0); decon_update(ctx); @@ -826,8 +822,7 @@ static int exynos5433_decon_probe(struct platform_device *pdev) drv_data = get_driver_data(pdev); ctx->drv_data = drv_data; - if (of_get_child_by_name(dev->of_node, "i80-if-timings") || - drv_data->type == EXYNOS_DISPLAY_TYPE_HDMI) + if (of_get_child_by_name(dev->of_node, "i80-if-timings")) ctx->i80_if = true; ctx->sysreg = syscon_regmap_lookup_by_phandle(dev->of_node,