All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] drm/exynos/decon5433: handle vblank in vblank interrupt
@ 2016-04-29 13:42 Andrzej Hajda
  2016-04-29 13:42 ` [PATCH 2/3] drm/exynos/decon5433: do not use unnecessary software trigger Andrzej Hajda
  2016-04-29 13:42 ` [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration Andrzej Hajda
  0 siblings, 2 replies; 8+ messages in thread
From: Andrzej Hajda @ 2016-04-29 13:42 UTC (permalink / raw)
  To: inki.dae
  Cc: Andrzej Hajda, Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

vblank should be signaled to userspace after reading framebuffers not before,
signaling it in TE interrupt looks wrong. TE triggers reading framebuffers
so it is the worst moment. Tearing is not observable because hardware prevents
it, but there are frequently skipped vblank events.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
index b985b96..a835dd8 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -443,8 +443,6 @@ static void decon_te_irq_handler(struct exynos_drm_crtc *crtc)
 
 	if (test_and_clear_bit(BIT_WIN_UPDATED, &ctx->flags))
 		decon_set_bits(ctx, DECON_TRIGCON, TRIGCON_SWTRIGCMD, ~0);
-
-	drm_crtc_handle_vblank(&ctx->crtc->base);
 }
 
 static void decon_clear_channels(struct exynos_drm_crtc *crtc)
@@ -577,6 +575,7 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id)
 
 		/* clear */
 		writel(val, ctx->addr + DECON_VIDINTCON1);
+		drm_crtc_handle_vblank(&ctx->crtc->base);
 	}
 
 out:
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] drm/exynos/decon5433: do not use unnecessary software trigger
  2016-04-29 13:42 [PATCH 1/3] drm/exynos/decon5433: handle vblank in vblank interrupt Andrzej Hajda
@ 2016-04-29 13:42 ` Andrzej Hajda
  2016-04-29 13:42 ` [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration Andrzej Hajda
  1 sibling, 0 replies; 8+ messages in thread
From: Andrzej Hajda @ 2016-04-29 13:42 UTC (permalink / raw)
  To: inki.dae
  Cc: Andrzej Hajda, Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

Software trigger should not be used if hardware trigger is configured.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
index a835dd8..7b4f699 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -438,7 +438,8 @@ static void decon_te_irq_handler(struct exynos_drm_crtc *crtc)
 {
 	struct decon_context *ctx = crtc->ctx;
 
-	if (!test_bit(BIT_CLKS_ENABLED, &ctx->flags))
+	if (!test_bit(BIT_CLKS_ENABLED, &ctx->flags) ||
+	    (ctx->out_type & I80_HW_TRG))
 		return;
 
 	if (test_and_clear_bit(BIT_WIN_UPDATED, &ctx->flags))
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration
  2016-04-29 13:42 [PATCH 1/3] drm/exynos/decon5433: handle vblank in vblank interrupt Andrzej Hajda
  2016-04-29 13:42 ` [PATCH 2/3] drm/exynos/decon5433: do not use unnecessary software trigger Andrzej Hajda
@ 2016-04-29 13:42 ` Andrzej Hajda
  2016-05-10  5:31   ` Inki Dae
  1 sibling, 1 reply; 8+ messages in thread
From: Andrzej Hajda @ 2016-04-29 13:42 UTC (permalink / raw)
  To: inki.dae
  Cc: Andrzej Hajda, Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

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>
---
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++------
 1 file 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 7b4f699..9ae913b 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -151,11 +151,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;
 	}
@@ -380,9 +382,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)
@@ -652,9 +651,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++) {
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration
  2016-04-29 13:42 ` [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration Andrzej Hajda
@ 2016-05-10  5:31   ` Inki Dae
  2016-05-10  6:08     ` Andrzej Hajda
  0 siblings, 1 reply; 8+ messages in thread
From: Inki Dae @ 2016-05-10  5:31 UTC (permalink / raw)
  To: Andrzej Hajda; +Cc: Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

Hi Andrzej,

2016년 04월 29일 22:42에 Andrzej Hajda 이(가) 쓴 글:
> 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

Andrzej, sorry but I can't understand what above two lines mean. Can you give me more details?

> trigger.
> 
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++------
>  1 file 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 7b4f699..9ae913b 100644
> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
> @@ -151,11 +151,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);

Shouldn't it be configured in case of using SW trigger mode also?

Thanks,
Inki Dae

> +
>  	/* 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;
>  	}
> @@ -380,9 +382,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)
> @@ -652,9 +651,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++) {
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration
  2016-05-10  5:31   ` Inki Dae
@ 2016-05-10  6:08     ` Andrzej Hajda
  2016-05-10  6:24       ` Inki Dae
  0 siblings, 1 reply; 8+ messages in thread
From: Andrzej Hajda @ 2016-05-10  6:08 UTC (permalink / raw)
  To: Inki Dae; +Cc: Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

Hi Inki,


On 05/10/2016 07:31 AM, Inki Dae wrote:
> Hi Andrzej,
>
> 2016년 04월 29일 22:42에 Andrzej Hajda 이(가) 쓴 글:
>> 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
> Andrzej, sorry but I can't understand what above two lines mean. Can you give me more details?

Details below.

>
>> trigger.
>>
>> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++------
>>  1 file 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 7b4f699..9ae913b 100644
>> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>> @@ -151,11 +151,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);
> Shouldn't it be configured in case of using SW trigger mode also?
>
> Thanks,
> Inki Dae
>
>> +
>>  	/* 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;
>>  	}
>> @@ -380,9 +382,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)
>> @@ -652,9 +651,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;

ctx->out_type was overwritten here with IFTYPE_I80. So when
decon_setup_trigger
were called I80_HW_TRG bit was always clear and DECON_TRIGCON was configured
to use soft trigger.

Regards
Andrzej

>>  	}
>>  
>>  	for (i = 0; i < ARRAY_SIZE(decon_clks_name); i++) {
>>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration
  2016-05-10  6:08     ` Andrzej Hajda
@ 2016-05-10  6:24       ` Inki Dae
  2016-05-10  7:08         ` Andrzej Hajda
  0 siblings, 1 reply; 8+ messages in thread
From: Inki Dae @ 2016-05-10  6:24 UTC (permalink / raw)
  To: Andrzej Hajda; +Cc: Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

Hi Andrzej,

2016년 05월 10일 15:08에 Andrzej Hajda 이(가) 쓴 글:
> Hi Inki,
> 
> 
> On 05/10/2016 07:31 AM, Inki Dae wrote:
>> Hi Andrzej,
>>
>> 2016년 04월 29일 22:42에 Andrzej Hajda 이(가) 쓴 글:
>>> 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
>> Andrzej, sorry but I can't understand what above two lines mean. Can you give me more details?
> 
> Details below.
> 
>>
>>> trigger.
>>>
>>> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
>>> ---
>>>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++------
>>>  1 file 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 7b4f699..9ae913b 100644
>>> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>>> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>>> @@ -151,11 +151,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);
>> Shouldn't it be configured in case of using SW trigger mode also?
>>
>> Thanks,
>> Inki Dae
>>
>>> +
>>>  	/* 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;
>>>  	}
>>> @@ -380,9 +382,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)
>>> @@ -652,9 +651,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;
> 
> ctx->out_type was overwritten here with IFTYPE_I80. So when
> decon_setup_trigger
> were called I80_HW_TRG bit was always clear and DECON_TRIGCON was configured
> to use soft trigger.

Indeed. Then shouldn't decon_setup_trigger function be called in both cases - SW and HW trigger modes?
Is there any reason to call the function only in case of HW trigger mode?

Thanks,
Inki Dae

> 
> Regards
> Andrzej
> 
>>>  	}
>>>  
>>>  	for (i = 0; i < ARRAY_SIZE(decon_clks_name); i++) {
>>>
> 
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration
  2016-05-10  6:24       ` Inki Dae
@ 2016-05-10  7:08         ` Andrzej Hajda
  2016-05-10  7:38           ` Inki Dae
  0 siblings, 1 reply; 8+ messages in thread
From: Andrzej Hajda @ 2016-05-10  7:08 UTC (permalink / raw)
  To: Inki Dae; +Cc: Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz

On 05/10/2016 08:24 AM, Inki Dae wrote:
> Hi Andrzej,
>
> 2016년 05월 10일 15:08에 Andrzej Hajda 이(가) 쓴 글:
>> Hi Inki,
>>
>>
>> On 05/10/2016 07:31 AM, Inki Dae wrote:
>>> Hi Andrzej,
>>>
>>> 2016년 04월 29일 22:42에 Andrzej Hajda 이(가) 쓴 글:
>>>> 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
>>> Andrzej, sorry but I can't understand what above two lines mean. Can you give me more details?
>> Details below.
>>
>>>> trigger.
>>>>
>>>> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
>>>> ---
>>>>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++------
>>>>  1 file 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 7b4f699..9ae913b 100644
>>>> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>>>> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>>>> @@ -151,11 +151,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);
>>> Shouldn't it be configured in case of using SW trigger mode also?
>>>
>>> Thanks,
>>> Inki Dae
>>>
>>>> +
>>>>  	/* 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;
>>>>  	}
>>>> @@ -380,9 +382,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)
>>>> @@ -652,9 +651,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;
>> ctx->out_type was overwritten here with IFTYPE_I80. So when
>> decon_setup_trigger
>> were called I80_HW_TRG bit was always clear and DECON_TRIGCON was configured
>> to use soft trigger.
> Indeed. Then shouldn't decon_setup_trigger function be called in both cases - SW and HW trigger modes?
> Is there any reason to call the function only in case of HW trigger mode?

With this patch function is called under following condition:
> +	if (ctx->out_type & (IFTYPE_I80 | I80_HW_TRG))
> +		decon_setup_trigger(ctx);

So it is called always in case of I80 mode, in such case value of I80_HW_TRG
determines if it should use sw or hw trigger.

Regards
Andrzej


>
> Thanks,
> Inki Dae
>
>> Regards
>> Andrzej
>>
>>>>  	}
>>>>  
>>>>  	for (i = 0; i < ARRAY_SIZE(decon_clks_name); i++) {
>>>>
>>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration
  2016-05-10  7:08         ` Andrzej Hajda
@ 2016-05-10  7:38           ` Inki Dae
  0 siblings, 0 replies; 8+ messages in thread
From: Inki Dae @ 2016-05-10  7:38 UTC (permalink / raw)
  To: Andrzej Hajda; +Cc: Marek Szyprowski, dri-devel, Bartlomiej Zolnierkiewicz


2016년 05월 10일 16:08에 Andrzej Hajda 이(가) 쓴 글:
> On 05/10/2016 08:24 AM, Inki Dae wrote:
>> Hi Andrzej,
>>
>> 2016년 05월 10일 15:08에 Andrzej Hajda 이(가) 쓴 글:
>>> Hi Inki,
>>>
>>>
>>> On 05/10/2016 07:31 AM, Inki Dae wrote:
>>>> Hi Andrzej,
>>>>
>>>> 2016년 04월 29일 22:42에 Andrzej Hajda 이(가) 쓴 글:
>>>>> 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
>>>> Andrzej, sorry but I can't understand what above two lines mean. Can you give me more details?
>>> Details below.
>>>
>>>>> trigger.
>>>>>
>>>>> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
>>>>> ---
>>>>>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++------
>>>>>  1 file 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 7b4f699..9ae913b 100644
>>>>> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>>>>> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
>>>>> @@ -151,11 +151,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);
>>>> Shouldn't it be configured in case of using SW trigger mode also?
>>>>
>>>> Thanks,
>>>> Inki Dae
>>>>
>>>>> +
>>>>>  	/* 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;
>>>>>  	}
>>>>> @@ -380,9 +382,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)
>>>>> @@ -652,9 +651,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;
>>> ctx->out_type was overwritten here with IFTYPE_I80. So when
>>> decon_setup_trigger
>>> were called I80_HW_TRG bit was always clear and DECON_TRIGCON was configured
>>> to use soft trigger.
>> Indeed. Then shouldn't decon_setup_trigger function be called in both cases - SW and HW trigger modes?
>> Is there any reason to call the function only in case of HW trigger mode?
> 
> With this patch function is called under following condition:
>> +	if (ctx->out_type & (IFTYPE_I80 | I80_HW_TRG))
>> +		decon_setup_trigger(ctx);
> 
> So it is called always in case of I80 mode, in such case value of I80_HW_TRG
> determines if it should use sw or hw trigger.

Ah, sorry. I misleaded above condition.

Thanks,
Inki Dae

> 
> Regards
> Andrzej
> 
> 
>>
>> Thanks,
>> Inki Dae
>>
>>> Regards
>>> Andrzej
>>>
>>>>>  	}
>>>>>  
>>>>>  	for (i = 0; i < ARRAY_SIZE(decon_clks_name); i++) {
>>>>>
>>>
> 
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-10  7:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-29 13:42 [PATCH 1/3] drm/exynos/decon5433: handle vblank in vblank interrupt Andrzej Hajda
2016-04-29 13:42 ` [PATCH 2/3] drm/exynos/decon5433: do not use unnecessary software trigger Andrzej Hajda
2016-04-29 13:42 ` [PATCH 3/3] drm/exynos/decon5433: fix trigger configuration Andrzej Hajda
2016-05-10  5:31   ` Inki Dae
2016-05-10  6:08     ` Andrzej Hajda
2016-05-10  6:24       ` Inki Dae
2016-05-10  7:08         ` Andrzej Hajda
2016-05-10  7:38           ` Inki Dae

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.