From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: [PATCH] drm: rcar-du: Re-update the DSYSR register value for start/stop To: Laurent Pinchart Cc: linux-renesas-soc@vger.kernel.org, geert+renesas@glider.be, kuninori.morimoto.gx@renesas.com, yoshihiro.shimoda.uh@renesas.com, h-inayoshi@jinso.co.jp, nv-dung@jinso.co.jp, cv-dong@jinso.co.jp References: <1540189854-14726-1-git-send-email-na-hoan@jinso.co.jp> <35008313.pubLakprOv@avalon> From: Hoan Message-ID: Date: Tue, 23 Oct 2018 19:10:14 +0900 MIME-Version: 1.0 In-Reply-To: <35008313.pubLakprOv@avalon> Content-Type: multipart/alternative; boundary="------------5BB7DD29ECD9DD23D87CE38A" Content-Language: en-US List-ID: This is a multi-part message in MIME format. --------------5BB7DD29ECD9DD23D87CE38A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Dear Laurent-san On 2018/10/22 20:23, Laurent Pinchart wrote: > Hello Hoan, > > Thank you for the patch. > > On Monday, 22 October 2018 09:30:54 EEST Nguyen An Hoan wrote: >> From: Hoan Nguyen An >> >> From previous commit 0521ccb "drm: rcar-du: Cache DSYSR value to ensure >> known initial value" > What exact commit are you referring to ? The mainline commit that has this > subject is 9144adc5e5a99577bce0d4ee2ca3615f53b9d296. > >> We only need to update DSYSR0, DSYSR2 for start/stop. >> So using rgrp-> mmio_offset is enough, the change back from rcar_du_crtc -> >> rcar_du_group -> rcar_du_crtc leading to mmio addresses for DSYSR may be >> different. > Is this fixing an actual problem ? If you look at the code, the line > > struct rcar_du_crtc *rcrtc = &rgrp->dev->crtcs[rgrp->index * 2]; > > makes sure that we select DU0 or DU2 only, so the register write > > rcar_du_crtc_dsysr_clr_set(rcrtc, DSYSR_DRES | DSYSR_DEN, > start ? DSYSR_DEN : DSYSR_DRES); > > should only access DSYSR0 and DSYSR2. Dear Laurent-san I add information about the current error occurring at M3N-r8a77965 when probe rcar-du driver: [   13.027115] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:55:crtc-2] flip_done timed out [   23.267103] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:55:crtc-2] flip_done timed out [   33.507102] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:57:VGA-1] flip_done timed out [   43.747100] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-1] flip_done timed out [   53.987100] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:55:crtc-2] flip_done timed out [   53.989913] Console: switching to colour frame buffer device 128x48 [   64.227102] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:55:crtc-2] flip_done timed out [   74.467099] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:57:VGA-1] flip_done timed out [   84.707100] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-1] flip_done timed out [   94.947100] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:55:crtc-2] flip_done timed out [   95.040076] rcar-du feb00000.display: fb0: DRM emulated frame buffer device [   95.047747] [drm] Initialized rcar-du 1.0.0 20130110 for feb00000.display on minor 0 [   95.055512] [drm] Device feb00000.display probed [   95.061252] bd9571mwv 7-0030: Device: BD9571MWV rev. 4 renesas-drivers-2018-10-09-v4.19-rc7 Thank you! Hoan. >> Signed-off-by: Hoan Nguyen An >> --- >> drivers/gpu/drm/rcar-du/rcar_du_group.c | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_group.c >> b/drivers/gpu/drm/rcar-du/rcar_du_group.c index d85f0a1..a5f7eed 100644 >> --- a/drivers/gpu/drm/rcar-du/rcar_du_group.c >> +++ b/drivers/gpu/drm/rcar-du/rcar_du_group.c >> @@ -202,10 +202,9 @@ void rcar_du_group_put(struct rcar_du_group *rgrp) >> >> static void __rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool >> start) { >> - struct rcar_du_crtc *rcrtc = &rgrp->dev->crtcs[rgrp->index * 2]; >> - >> - rcar_du_crtc_dsysr_clr_set(rcrtc, DSYSR_DRES | DSYSR_DEN, >> - start ? DSYSR_DEN : DSYSR_DRES); >> + rcar_du_group_write(rgrp, DSYSR, >> + (rcar_du_group_read(rgrp, DSYSR) & ~(DSYSR_DRES | DSYSR_DEN)) | >> + (start ? DSYSR_DEN : DSYSR_DRES)); >> } >> >> void rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start) --------------5BB7DD29ECD9DD23D87CE38A Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit

Dear Laurent-san

On 2018/10/22 20:23, Laurent Pinchart wrote:
Hello Hoan,

Thank you for the patch.

On Monday, 22 October 2018 09:30:54 EEST Nguyen An Hoan wrote:
From: Hoan Nguyen An <na-hoan@jinso.co.jp>

>>From previous commit 0521ccb "drm: rcar-du: Cache DSYSR value to ensure
known initial value"
What exact commit are you referring to ? The mainline commit that has this 
subject is 9144adc5e5a99577bce0d4ee2ca3615f53b9d296.

We only need to update DSYSR0, DSYSR2 for start/stop.
So using rgrp-> mmio_offset is enough, the change back from rcar_du_crtc ->
rcar_du_group -> rcar_du_crtc leading to mmio addresses for DSYSR may be
different.
Is this fixing an actual problem ? If you look at the code, the line

	struct rcar_du_crtc *rcrtc = &rgrp->dev->crtcs[rgrp->index * 2];

makes sure that we select DU0 or DU2 only, so the register write

	rcar_du_crtc_dsysr_clr_set(rcrtc, DSYSR_DRES | DSYSR_DEN,
				   start ? DSYSR_DEN : DSYSR_DRES);

should only access DSYSR0 and DSYSR2.

Dear Laurent-san

I add information about the current error occurring at M3N-r8a77965

when probe rcar-du driver:

[   13.027115] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:55:crtc-2] flip_done timed out
[   23.267103] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:55:crtc-2] flip_done timed out
[   33.507102] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:57:VGA-1] flip_done timed out
[   43.747100] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-1] flip_done timed out
[   53.987100] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:55:crtc-2] flip_done timed out
[   53.989913] Console: switching to colour frame buffer device 128x48
[   64.227102] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:55:crtc-2] flip_done timed out
[   74.467099] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:57:VGA-1] flip_done timed out
[   84.707100] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-1] flip_done timed out
[   94.947100] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:55:crtc-2] flip_done timed out
[   95.040076] rcar-du feb00000.display: fb0: DRM emulated frame buffer device
[   95.047747] [drm] Initialized rcar-du 1.0.0 20130110 for feb00000.display on minor 0
[   95.055512] [drm] Device feb00000.display probed
[   95.061252] bd9571mwv 7-0030: Device: BD9571MWV rev. 4

renesas-drivers-2018-10-09-v4.19-rc7

Thank you!

Hoan.


      
Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
---
 drivers/gpu/drm/rcar-du/rcar_du_group.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_du_group.c
b/drivers/gpu/drm/rcar-du/rcar_du_group.c index d85f0a1..a5f7eed 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_group.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_group.c
@@ -202,10 +202,9 @@ void rcar_du_group_put(struct rcar_du_group *rgrp)

 static void __rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool
start) {
-	struct rcar_du_crtc *rcrtc = &rgrp->dev->crtcs[rgrp->index * 2];
-
-	rcar_du_crtc_dsysr_clr_set(rcrtc, DSYSR_DRES | DSYSR_DEN,
-				   start ? DSYSR_DEN : DSYSR_DRES);
+	rcar_du_group_write(rgrp, DSYSR,
+			(rcar_du_group_read(rgrp, DSYSR) & ~(DSYSR_DRES | DSYSR_DEN)) |
+			(start ? DSYSR_DEN : DSYSR_DRES));
 }

 void rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start)

    
--------------5BB7DD29ECD9DD23D87CE38A--