diff options
author | Andrzej Hajda <a.hajda@samsung.com> | 2016-04-29 15:42:49 +0200 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2016-05-10 23:11:46 +0900 |
commit | dd65a6867454117ecaeb8944dc231a4737681782 (patch) | |
tree | 7521025d7c10d7778110013b820839a5307fdb66 /drivers/gpu/drm/exynos | |
parent | 17ef49bd23eadfb22ad4ddcdaf1f6a08691ec49e (diff) |
drm/exynos/decon5433: fix trigger configuration
It seems trigger cannot be configured too early, otherwise it does not work in
case of panel. The patch fixes also trigger flag logic, previously HW-TRIGGER
flag was cleared in case of panel - as a result panel used always software
trigger.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index 737b8b3ad350..ac21b4000835 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -147,11 +147,13 @@ static void decon_commit(struct exynos_drm_crtc *crtc) val = CMU_CLKGAGE_MODE_SFR_F | CMU_CLKGAGE_MODE_MEM_F; writel(val, ctx->addr + DECON_CMU); + if (ctx->out_type & (IFTYPE_I80 | I80_HW_TRG)) + decon_setup_trigger(ctx); + /* lcd on and use command if */ val = VIDOUT_LCD_ON; if (ctx->out_type & IFTYPE_I80) { val |= VIDOUT_COMMAND_IF; - decon_setup_trigger(ctx); } else { val |= VIDOUT_RGB_IF; } @@ -376,9 +378,6 @@ static void decon_swreset(struct decon_context *ctx) writel(VIDCON1_VCLK_RUN_VDEN_DISABLE, ctx->addr + DECON_VIDCON1); writel(CRCCTRL_CRCEN | CRCCTRL_CRCSTART_F | CRCCTRL_CRCCLKEN, ctx->addr + DECON_CRCCTRL); - - if (ctx->out_type & IFTYPE_I80) - decon_setup_trigger(ctx); } static void decon_enable(struct exynos_drm_crtc *crtc) @@ -648,9 +647,8 @@ static int exynos5433_decon_probe(struct platform_device *pdev) if (ctx->out_type & IFTYPE_HDMI) { ctx->first_win = 1; - ctx->out_type = IFTYPE_I80; } else if (of_get_child_by_name(dev->of_node, "i80-if-timings")) { - ctx->out_type = IFTYPE_I80; + ctx->out_type |= IFTYPE_I80; } for (i = 0; i < ARRAY_SIZE(decon_clks_name); i++) { |