linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] drm/sun4i: dsi: misc fixes
@ 2019-10-06 16:02 Icenowy Zheng
  2019-10-06 16:03 ` [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation Icenowy Zheng
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Icenowy Zheng @ 2019-10-06 16:02 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-arm-kernel, linux-kernel, linux-sunxi, Icenowy Zheng

This patchset contains several fixes to the sun6i_mipi_dsi driver.

First, it's a rebased version of video start delay porch fix from Jagan
Teki.

The next patch fixes the overhead of HFP packet, according to the source
code of BSP [1].

The final patch fixes DCS long write, which fixes initialization issue
with a panel with ST7703 controller (XBD599 panel used by PinePhone).
This seems to be a misread of [2]. (The formula in [2] is para_num+1,
and the code of the sun6i_mipi_dsi driver uses tx_len, which is the
length including the command; thus tx_len is equal to para_num+1, so it
shouldn't be added with 1 for another time.)

Icenowy Zheng (2):
  drm/sun4i: dsi: fix the overhead of the horizontal front porch
  drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length

Jagan Teki (1):
  drm/sun4i: dsi: Fix video start delay computation

[1] https://github.com/ayufan-pine64/linux-pine64/blob/my-hacks-1.2-with-drm/drivers/video/sunxi/disp2/disp/de/lowlevel_sun50iw1/de_dsi.c#L920

[2] https://github.com/ayufan-pine64/linux-pine64/blob/my-hacks-1.2-with-drm/drivers/video/sunxi/disp2/disp/de/lowlevel_sun50iw1/de_dsi.c#L227

 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

-- 
2.21.0


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

* [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation
  2019-10-06 16:02 [PATCH v2 0/3] drm/sun4i: dsi: misc fixes Icenowy Zheng
@ 2019-10-06 16:03 ` Icenowy Zheng
  2019-10-07 11:51   ` Maxime Ripard
  2019-10-06 16:03 ` [PATCH v2 2/3] drm/sun4i: dsi: fix the overhead of the horizontal front porch Icenowy Zheng
  2019-10-06 16:03 ` [PATCH v2 3/3] drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length Icenowy Zheng
  2 siblings, 1 reply; 9+ messages in thread
From: Icenowy Zheng @ 2019-10-06 16:03 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-arm-kernel, linux-kernel, linux-sunxi, Merlijn Wajer

From: Jagan Teki <jagan@amarulasolutions.com>

The LCD timing definitions between Linux DRM vs Allwinner are different,
below diagram shows this clear differences.

           Active                 Front           Sync           Back
           Region                 Porch                          Porch
<-----------------------><----------------><--------------><-------------->
  //////////////////////|
 ////////////////////// |
//////////////////////  |..................                ................
                                           ________________
<----- [hv]display ----->
<------------- [hv]sync_start ------------>
<--------------------- [hv]sync_end ---------------------->
<-------------------------------- [hv]total ------------------------------>

<----- lcd_[xy] -------->		  <- lcd_[hv]spw ->
					  <---------- lcd_[hv]bp --------->
<-------------------------------- lcd_[hv]t ------------------------------>

The DSI driver misinterpreted the vbp term from the BSP code to refer
only to the backporch, when in fact it was backporch + sync. Thus the
driver incorrectly used the vertical front porch plus sync in its
calculation of the DRQ set bit value, when it should not have included
the sync timing.

Including additional sync timings leads to flip_done timed out as:

WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
[CRTC:46:crtc-0] vblank wait timed out
Modules linked in:
CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
Hardware name: Allwinner sun8i Family
Workqueue: events deferred_probe_work_func
[<c010ed54>] (unwind_backtrace) from [<c010b76c>] (show_stack+0x10/0x14)
[<c010b76c>] (show_stack) from [<c0688c70>] (dump_stack+0x84/0x98)
[<c0688c70>] (dump_stack) from [<c011d9e4>] (__warn+0xfc/0x114)
[<c011d9e4>] (__warn) from [<c011da40>] (warn_slowpath_fmt+0x44/0x68)
[<c011da40>] (warn_slowpath_fmt) from [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
[<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1) from [<c040e694>] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
[<c040e694>] (drm_atomic_helper_commit_tail_rpm) from [<c040e4dc>] (commit_tail+0x40/0x6c)
[<c040e4dc>] (commit_tail) from [<c040e5cc>] (drm_atomic_helper_commit+0xbc/0x128)
[<c040e5cc>] (drm_atomic_helper_commit) from [<c0411b64>] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
[<c0411b64>] (restore_fbdev_mode_atomic) from [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
[<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0415774>] (drm_fb_helper_set_par+0x30/0x54)
[<c0415774>] (drm_fb_helper_set_par) from [<c03ad450>] (fbcon_init+0x560/0x5ac)
[<c03ad450>] (fbcon_init) from [<c03eb8a0>] (visual_init+0xbc/0x104)
[<c03eb8a0>] (visual_init) from [<c03ed1b8>] (do_bind_con_driver+0x1b0/0x390)
[<c03ed1b8>] (do_bind_con_driver) from [<c03ed780>] (do_take_over_console+0x13c/0x1c4)
[<c03ed780>] (do_take_over_console) from [<c03ad800>] (do_fbcon_takeover+0x74/0xcc)
[<c03ad800>] (do_fbcon_takeover) from [<c013c9c8>] (notifier_call_chain+0x44/0x84)
[<c013c9c8>] (notifier_call_chain) from [<c013cd20>] (__blocking_notifier_call_chain+0x48/0x60)
[<c013cd20>] (__blocking_notifier_call_chain) from [<c013cd50>] (blocking_notifier_call_chain+0x18/0x20)
[<c013cd50>] (blocking_notifier_call_chain) from [<c03a6e44>] (register_framebuffer+0x1e0/0x2f8)
[<c03a6e44>] (register_framebuffer) from [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
[<c04153c0>] (__drm_fb_helper_initial_config_and_unlock) from [<c04158c8>] (drm_fbdev_client_hotplug+0xe8/0x1b8)
[<c04158c8>] (drm_fbdev_client_hotplug) from [<c0415a20>] (drm_fbdev_generic_setup+0x88/0x118)
[<c0415a20>] (drm_fbdev_generic_setup) from [<c043f060>] (sun4i_drv_bind+0x128/0x160)
[<c043f060>] (sun4i_drv_bind) from [<c044b598>] (try_to_bring_up_master+0x164/0x1a0)
[<c044b598>] (try_to_bring_up_master) from [<c044b668>] (__component_add+0x94/0x140)
[<c044b668>] (__component_add) from [<c0445e1c>] (sun6i_dsi_probe+0x144/0x234)
[<c0445e1c>] (sun6i_dsi_probe) from [<c0452ef4>] (platform_drv_probe+0x48/0x9c)
[<c0452ef4>] (platform_drv_probe) from [<c04512cc>] (really_probe+0x1dc/0x2c8)
[<c04512cc>] (really_probe) from [<c0451518>] (driver_probe_device+0x60/0x160)
[<c0451518>] (driver_probe_device) from [<c044f7a4>] (bus_for_each_drv+0x74/0xb8)
[<c044f7a4>] (bus_for_each_drv) from [<c045107c>] (__device_attach+0xd0/0x13c)
[<c045107c>] (__device_attach) from [<c0450474>] (bus_probe_device+0x84/0x8c)
[<c0450474>] (bus_probe_device) from [<c0450900>] (deferred_probe_work_func+0x64/0x90)
[<c0450900>] (deferred_probe_work_func) from [<c0135970>] (process_one_work+0x204/0x420)
[<c0135970>] (process_one_work) from [<c013690c>] (worker_thread+0x274/0x5a0)
[<c013690c>] (worker_thread) from [<c013b3d8>] (kthread+0x11c/0x14c)
[<c013b3d8>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
Exception stack(0xde539fb0 to 0xde539ff8)
9fa0:                                     00000000 00000000 00000000 00000000
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
---[ end trace 495200a78b24980e ]---
random: fast init done
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out
[drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out

With the terms(as described in above diagram) fixed, the panel
displays correctly without any timeouts.

Tested-by: Merlijn Wajer <merlijn@wizzup.org>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
This is a rebased version of "[v11,3/7] drm/sun4i: dsi: Fix video start
delay computation" [1]. Check there for the original changelog.

[1] https://patchwork.kernel.org/patch/11172199/

 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 082d196e43da..b8a0d0501ca7 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -366,7 +366,7 @@ static void sun6i_dsi_inst_init(struct sun6i_dsi *dsi,
 static u16 sun6i_dsi_get_video_start_delay(struct sun6i_dsi *dsi,
 					   struct drm_display_mode *mode)
 {
-	u16 delay = mode->vtotal - (mode->vsync_end - mode->vdisplay) + 1;
+	u16 delay = mode->vtotal - (mode->vsync_start - mode->vdisplay) + 1;
 
 	if (delay > mode->vtotal)
 		delay = delay % mode->vtotal;
-- 
2.21.0


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

* [PATCH v2 2/3] drm/sun4i: dsi: fix the overhead of the horizontal front porch
  2019-10-06 16:02 [PATCH v2 0/3] drm/sun4i: dsi: misc fixes Icenowy Zheng
  2019-10-06 16:03 ` [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation Icenowy Zheng
@ 2019-10-06 16:03 ` Icenowy Zheng
  2019-10-07 11:59   ` Maxime Ripard
  2019-10-06 16:03 ` [PATCH v2 3/3] drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length Icenowy Zheng
  2 siblings, 1 reply; 9+ messages in thread
From: Icenowy Zheng @ 2019-10-06 16:03 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-arm-kernel, linux-kernel, linux-sunxi, Icenowy Zheng

The formula in the BSP kernel indicates that a 16-byte overhead is used
when sending the HFP. However, this value is currently set to 6 in the
sun6i_mipi_dsi driver, which makes some panels flashing.

Fix this overhead value.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
---
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index b8a0d0501ca7..8fe8051c34e6 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -569,11 +569,12 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 			  (mode->htotal - mode->hsync_end) * Bpp - HBP_PACKET_OVERHEAD);
 
 		/*
-		 * The frontporch is set using a blanking packet (4
-		 * bytes + payload + 2 bytes). Its minimal size is
-		 * therefore 6 bytes
+		 * The frontporch is set using a sync event (4 bytes)
+		 * and two blanking packets (each one is 4 bytes +
+		 * payload + 2 bytes). Its minimal size is therefore
+		 * 16 bytes
 		 */
-#define HFP_PACKET_OVERHEAD	6
+#define HFP_PACKET_OVERHEAD	16
 		hfp = max((unsigned int)HFP_PACKET_OVERHEAD,
 			  (mode->hsync_start - mode->hdisplay) * Bpp - HFP_PACKET_OVERHEAD);
 
-- 
2.21.0


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

* [PATCH v2 3/3] drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length
  2019-10-06 16:02 [PATCH v2 0/3] drm/sun4i: dsi: misc fixes Icenowy Zheng
  2019-10-06 16:03 ` [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation Icenowy Zheng
  2019-10-06 16:03 ` [PATCH v2 2/3] drm/sun4i: dsi: fix the overhead of the horizontal front porch Icenowy Zheng
@ 2019-10-06 16:03 ` Icenowy Zheng
  2019-10-07 12:07   ` Maxime Ripard
  2 siblings, 1 reply; 9+ messages in thread
From: Icenowy Zheng @ 2019-10-06 16:03 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-arm-kernel, linux-kernel, linux-sunxi, Icenowy Zheng

The packet length of DCS long write packet should not be added with 1
when constructing long write packet.

Fix this.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
---
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 8fe8051c34e6..c958ca9bae63 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -832,8 +832,8 @@ static u32 sun6i_dsi_dcs_build_pkt_hdr(struct sun6i_dsi *dsi,
 	u32 pkt = msg->type;
 
 	if (msg->type == MIPI_DSI_DCS_LONG_WRITE) {
-		pkt |= ((msg->tx_len + 1) & 0xffff) << 8;
-		pkt |= (((msg->tx_len + 1) >> 8) & 0xffff) << 16;
+		pkt |= ((msg->tx_len) & 0xffff) << 8;
+		pkt |= (((msg->tx_len) >> 8) & 0xffff) << 16;
 	} else {
 		pkt |= (((u8 *)msg->tx_buf)[0] << 8);
 		if (msg->tx_len > 1)
-- 
2.21.0


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

* Re: [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation
  2019-10-06 16:03 ` [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation Icenowy Zheng
@ 2019-10-07 11:51   ` Maxime Ripard
  2019-10-08  3:06     ` Icenowy Zheng
  0 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2019-10-07 11:51 UTC (permalink / raw)
  To: Icenowy Zheng
  Cc: Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter, dri-devel,
	linux-arm-kernel, linux-kernel, linux-sunxi, Merlijn Wajer

[-- Attachment #1: Type: text/plain, Size: 6129 bytes --]

On Mon, Oct 07, 2019 at 12:03:00AM +0800, Icenowy Zheng wrote:
> From: Jagan Teki <jagan@amarulasolutions.com>
>
> The LCD timing definitions between Linux DRM vs Allwinner are different,
> below diagram shows this clear differences.
>
>            Active                 Front           Sync           Back
>            Region                 Porch                          Porch
> <-----------------------><----------------><--------------><-------------->
>   //////////////////////|
>  ////////////////////// |
> //////////////////////  |..................                ................
>                                            ________________
> <----- [hv]display ----->
> <------------- [hv]sync_start ------------>
> <--------------------- [hv]sync_end ---------------------->
> <-------------------------------- [hv]total ------------------------------>
>
> <----- lcd_[xy] -------->		  <- lcd_[hv]spw ->
> 					  <---------- lcd_[hv]bp --------->
> <-------------------------------- lcd_[hv]t ------------------------------>
>
> The DSI driver misinterpreted the vbp term from the BSP code to refer
> only to the backporch, when in fact it was backporch + sync. Thus the
> driver incorrectly used the vertical front porch plus sync in its
> calculation of the DRQ set bit value, when it should not have included
> the sync timing.
>
> Including additional sync timings leads to flip_done timed out as:
>
> WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
> [CRTC:46:crtc-0] vblank wait timed out
> Modules linked in:
> CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
> Hardware name: Allwinner sun8i Family
> Workqueue: events deferred_probe_work_func
> [<c010ed54>] (unwind_backtrace) from [<c010b76c>] (show_stack+0x10/0x14)
> [<c010b76c>] (show_stack) from [<c0688c70>] (dump_stack+0x84/0x98)
> [<c0688c70>] (dump_stack) from [<c011d9e4>] (__warn+0xfc/0x114)
> [<c011d9e4>] (__warn) from [<c011da40>] (warn_slowpath_fmt+0x44/0x68)
> [<c011da40>] (warn_slowpath_fmt) from [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
> [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1) from [<c040e694>] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
> [<c040e694>] (drm_atomic_helper_commit_tail_rpm) from [<c040e4dc>] (commit_tail+0x40/0x6c)
> [<c040e4dc>] (commit_tail) from [<c040e5cc>] (drm_atomic_helper_commit+0xbc/0x128)
> [<c040e5cc>] (drm_atomic_helper_commit) from [<c0411b64>] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
> [<c0411b64>] (restore_fbdev_mode_atomic) from [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
> [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0415774>] (drm_fb_helper_set_par+0x30/0x54)
> [<c0415774>] (drm_fb_helper_set_par) from [<c03ad450>] (fbcon_init+0x560/0x5ac)
> [<c03ad450>] (fbcon_init) from [<c03eb8a0>] (visual_init+0xbc/0x104)
> [<c03eb8a0>] (visual_init) from [<c03ed1b8>] (do_bind_con_driver+0x1b0/0x390)
> [<c03ed1b8>] (do_bind_con_driver) from [<c03ed780>] (do_take_over_console+0x13c/0x1c4)
> [<c03ed780>] (do_take_over_console) from [<c03ad800>] (do_fbcon_takeover+0x74/0xcc)
> [<c03ad800>] (do_fbcon_takeover) from [<c013c9c8>] (notifier_call_chain+0x44/0x84)
> [<c013c9c8>] (notifier_call_chain) from [<c013cd20>] (__blocking_notifier_call_chain+0x48/0x60)
> [<c013cd20>] (__blocking_notifier_call_chain) from [<c013cd50>] (blocking_notifier_call_chain+0x18/0x20)
> [<c013cd50>] (blocking_notifier_call_chain) from [<c03a6e44>] (register_framebuffer+0x1e0/0x2f8)
> [<c03a6e44>] (register_framebuffer) from [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
> [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock) from [<c04158c8>] (drm_fbdev_client_hotplug+0xe8/0x1b8)
> [<c04158c8>] (drm_fbdev_client_hotplug) from [<c0415a20>] (drm_fbdev_generic_setup+0x88/0x118)
> [<c0415a20>] (drm_fbdev_generic_setup) from [<c043f060>] (sun4i_drv_bind+0x128/0x160)
> [<c043f060>] (sun4i_drv_bind) from [<c044b598>] (try_to_bring_up_master+0x164/0x1a0)
> [<c044b598>] (try_to_bring_up_master) from [<c044b668>] (__component_add+0x94/0x140)
> [<c044b668>] (__component_add) from [<c0445e1c>] (sun6i_dsi_probe+0x144/0x234)
> [<c0445e1c>] (sun6i_dsi_probe) from [<c0452ef4>] (platform_drv_probe+0x48/0x9c)
> [<c0452ef4>] (platform_drv_probe) from [<c04512cc>] (really_probe+0x1dc/0x2c8)
> [<c04512cc>] (really_probe) from [<c0451518>] (driver_probe_device+0x60/0x160)
> [<c0451518>] (driver_probe_device) from [<c044f7a4>] (bus_for_each_drv+0x74/0xb8)
> [<c044f7a4>] (bus_for_each_drv) from [<c045107c>] (__device_attach+0xd0/0x13c)
> [<c045107c>] (__device_attach) from [<c0450474>] (bus_probe_device+0x84/0x8c)
> [<c0450474>] (bus_probe_device) from [<c0450900>] (deferred_probe_work_func+0x64/0x90)
> [<c0450900>] (deferred_probe_work_func) from [<c0135970>] (process_one_work+0x204/0x420)
> [<c0135970>] (process_one_work) from [<c013690c>] (worker_thread+0x274/0x5a0)
> [<c013690c>] (worker_thread) from [<c013b3d8>] (kthread+0x11c/0x14c)
> [<c013b3d8>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
> Exception stack(0xde539fb0 to 0xde539ff8)
> 9fa0:                                     00000000 00000000 00000000 00000000
> 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> ---[ end trace 495200a78b24980e ]---
> random: fast init done
> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out
> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out
> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out
>
> With the terms(as described in above diagram) fixed, the panel
> displays correctly without any timeouts.
>
> Tested-by: Merlijn Wajer <merlijn@wizzup.org>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>

you should have your SoB here.

All the patches look fine, so there's no need to resend a new
version. I'll add it if you can give it.

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH v2 2/3] drm/sun4i: dsi: fix the overhead of the horizontal front porch
  2019-10-06 16:03 ` [PATCH v2 2/3] drm/sun4i: dsi: fix the overhead of the horizontal front porch Icenowy Zheng
@ 2019-10-07 11:59   ` Maxime Ripard
  0 siblings, 0 replies; 9+ messages in thread
From: Maxime Ripard @ 2019-10-07 11:59 UTC (permalink / raw)
  To: Icenowy Zheng
  Cc: Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter, dri-devel,
	linux-arm-kernel, linux-kernel, linux-sunxi

[-- Attachment #1: Type: text/plain, Size: 374 bytes --]

On Mon, Oct 07, 2019 at 12:03:01AM +0800, Icenowy Zheng wrote:
> The formula in the BSP kernel indicates that a 16-byte overhead is used
> when sending the HFP. However, this value is currently set to 6 in the
> sun6i_mipi_dsi driver, which makes some panels flashing.
>
> Fix this overhead value.
>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.io>

Applied, thanks

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH v2 3/3] drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length
  2019-10-06 16:03 ` [PATCH v2 3/3] drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length Icenowy Zheng
@ 2019-10-07 12:07   ` Maxime Ripard
  0 siblings, 0 replies; 9+ messages in thread
From: Maxime Ripard @ 2019-10-07 12:07 UTC (permalink / raw)
  To: Icenowy Zheng
  Cc: Chen-Yu Tsai, Jagan Teki, David Airlie, Daniel Vetter, dri-devel,
	linux-arm-kernel, linux-kernel, linux-sunxi

[-- Attachment #1: Type: text/plain, Size: 264 bytes --]

On Mon, Oct 07, 2019 at 12:03:02AM +0800, Icenowy Zheng wrote:
> The packet length of DCS long write packet should not be added with 1
> when constructing long write packet.
>
> Fix this.
>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.io>

Applied, thanks

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation
  2019-10-07 11:51   ` Maxime Ripard
@ 2019-10-08  3:06     ` Icenowy Zheng
  2019-10-08  5:57       ` Maxime Ripard
  0 siblings, 1 reply; 9+ messages in thread
From: Icenowy Zheng @ 2019-10-08  3:06 UTC (permalink / raw)
  To: linux-arm-kernel, Maxime Ripard
  Cc: David Airlie, linux-sunxi, linux-kernel, dri-devel, Chen-Yu Tsai,
	Jagan Teki, Daniel Vetter, Merlijn Wajer



于 2019年10月7日 GMT+08:00 下午7:51:48, Maxime Ripard <mripard@kernel.org> 写到:
>On Mon, Oct 07, 2019 at 12:03:00AM +0800, Icenowy Zheng wrote:
>> From: Jagan Teki <jagan@amarulasolutions.com>
>>
>> The LCD timing definitions between Linux DRM vs Allwinner are
>different,
>> below diagram shows this clear differences.
>>
>>            Active                 Front           Sync           Back
>>            Region                 Porch                         
>Porch
>>
><-----------------------><----------------><--------------><-------------->
>>   //////////////////////|
>>  ////////////////////// |
>> //////////////////////  |..................               
>................
>>                                            ________________
>> <----- [hv]display ----->
>> <------------- [hv]sync_start ------------>
>> <--------------------- [hv]sync_end ---------------------->
>> <-------------------------------- [hv]total
>------------------------------>
>>
>> <----- lcd_[xy] -------->		  <- lcd_[hv]spw ->
>> 					  <---------- lcd_[hv]bp --------->
>> <-------------------------------- lcd_[hv]t
>------------------------------>
>>
>> The DSI driver misinterpreted the vbp term from the BSP code to refer
>> only to the backporch, when in fact it was backporch + sync. Thus the
>> driver incorrectly used the vertical front porch plus sync in its
>> calculation of the DRQ set bit value, when it should not have
>included
>> the sync timing.
>>
>> Including additional sync timings leads to flip_done timed out as:
>>
>> WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429
>drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
>> [CRTC:46:crtc-0] vblank wait timed out
>> Modules linked in:
>> CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted
>5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
>> Hardware name: Allwinner sun8i Family
>> Workqueue: events deferred_probe_work_func
>> [<c010ed54>] (unwind_backtrace) from [<c010b76c>]
>(show_stack+0x10/0x14)
>> [<c010b76c>] (show_stack) from [<c0688c70>] (dump_stack+0x84/0x98)
>> [<c0688c70>] (dump_stack) from [<c011d9e4>] (__warn+0xfc/0x114)
>> [<c011d9e4>] (__warn) from [<c011da40>] (warn_slowpath_fmt+0x44/0x68)
>> [<c011da40>] (warn_slowpath_fmt) from [<c040cd50>]
>(drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
>> [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1) from
>[<c040e694>] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
>> [<c040e694>] (drm_atomic_helper_commit_tail_rpm) from [<c040e4dc>]
>(commit_tail+0x40/0x6c)
>> [<c040e4dc>] (commit_tail) from [<c040e5cc>]
>(drm_atomic_helper_commit+0xbc/0x128)
>> [<c040e5cc>] (drm_atomic_helper_commit) from [<c0411b64>]
>(restore_fbdev_mode_atomic+0x1cc/0x1dc)
>> [<c0411b64>] (restore_fbdev_mode_atomic) from [<c04156f8>]
>(drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
>> [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked) from
>[<c0415774>] (drm_fb_helper_set_par+0x30/0x54)
>> [<c0415774>] (drm_fb_helper_set_par) from [<c03ad450>]
>(fbcon_init+0x560/0x5ac)
>> [<c03ad450>] (fbcon_init) from [<c03eb8a0>] (visual_init+0xbc/0x104)
>> [<c03eb8a0>] (visual_init) from [<c03ed1b8>]
>(do_bind_con_driver+0x1b0/0x390)
>> [<c03ed1b8>] (do_bind_con_driver) from [<c03ed780>]
>(do_take_over_console+0x13c/0x1c4)
>> [<c03ed780>] (do_take_over_console) from [<c03ad800>]
>(do_fbcon_takeover+0x74/0xcc)
>> [<c03ad800>] (do_fbcon_takeover) from [<c013c9c8>]
>(notifier_call_chain+0x44/0x84)
>> [<c013c9c8>] (notifier_call_chain) from [<c013cd20>]
>(__blocking_notifier_call_chain+0x48/0x60)
>> [<c013cd20>] (__blocking_notifier_call_chain) from [<c013cd50>]
>(blocking_notifier_call_chain+0x18/0x20)
>> [<c013cd50>] (blocking_notifier_call_chain) from [<c03a6e44>]
>(register_framebuffer+0x1e0/0x2f8)
>> [<c03a6e44>] (register_framebuffer) from [<c04153c0>]
>(__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
>> [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock) from
>[<c04158c8>] (drm_fbdev_client_hotplug+0xe8/0x1b8)
>> [<c04158c8>] (drm_fbdev_client_hotplug) from [<c0415a20>]
>(drm_fbdev_generic_setup+0x88/0x118)
>> [<c0415a20>] (drm_fbdev_generic_setup) from [<c043f060>]
>(sun4i_drv_bind+0x128/0x160)
>> [<c043f060>] (sun4i_drv_bind) from [<c044b598>]
>(try_to_bring_up_master+0x164/0x1a0)
>> [<c044b598>] (try_to_bring_up_master) from [<c044b668>]
>(__component_add+0x94/0x140)
>> [<c044b668>] (__component_add) from [<c0445e1c>]
>(sun6i_dsi_probe+0x144/0x234)
>> [<c0445e1c>] (sun6i_dsi_probe) from [<c0452ef4>]
>(platform_drv_probe+0x48/0x9c)
>> [<c0452ef4>] (platform_drv_probe) from [<c04512cc>]
>(really_probe+0x1dc/0x2c8)
>> [<c04512cc>] (really_probe) from [<c0451518>]
>(driver_probe_device+0x60/0x160)
>> [<c0451518>] (driver_probe_device) from [<c044f7a4>]
>(bus_for_each_drv+0x74/0xb8)
>> [<c044f7a4>] (bus_for_each_drv) from [<c045107c>]
>(__device_attach+0xd0/0x13c)
>> [<c045107c>] (__device_attach) from [<c0450474>]
>(bus_probe_device+0x84/0x8c)
>> [<c0450474>] (bus_probe_device) from [<c0450900>]
>(deferred_probe_work_func+0x64/0x90)
>> [<c0450900>] (deferred_probe_work_func) from [<c0135970>]
>(process_one_work+0x204/0x420)
>> [<c0135970>] (process_one_work) from [<c013690c>]
>(worker_thread+0x274/0x5a0)
>> [<c013690c>] (worker_thread) from [<c013b3d8>] (kthread+0x11c/0x14c)
>> [<c013b3d8>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
>> Exception stack(0xde539fb0 to 0xde539ff8)
>> 9fa0:                                     00000000 00000000 00000000
>00000000
>> 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>00000000
>> 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
>> ---[ end trace 495200a78b24980e ]---
>> random: fast init done
>> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
>[CRTC:46:crtc-0] flip_done timed out
>> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
>[CONNECTOR:48:DSI-1] flip_done timed out
>> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
>[PLANE:30:plane-0] flip_done timed out
>>
>> With the terms(as described in above diagram) fixed, the panel
>> displays correctly without any timeouts.
>>
>> Tested-by: Merlijn Wajer <merlijn@wizzup.org>
>> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
>
>you should have your SoB here.
>
>All the patches look fine, so there's no need to resend a new
>version. I'll add it if you can give it.

Sorry, I forgot it.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>

>
>Maxime

-- 
使用 K-9 Mail 发送自我的Android设备。

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

* Re: [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation
  2019-10-08  3:06     ` Icenowy Zheng
@ 2019-10-08  5:57       ` Maxime Ripard
  0 siblings, 0 replies; 9+ messages in thread
From: Maxime Ripard @ 2019-10-08  5:57 UTC (permalink / raw)
  To: Icenowy Zheng
  Cc: linux-arm-kernel, David Airlie, linux-sunxi, linux-kernel,
	dri-devel, Chen-Yu Tsai, Jagan Teki, Daniel Vetter,
	Merlijn Wajer

[-- Attachment #1: Type: text/plain, Size: 6910 bytes --]

On Tue, Oct 08, 2019 at 11:06:07AM +0800, Icenowy Zheng wrote:
> 于 2019年10月7日 GMT+08:00 下午7:51:48, Maxime Ripard <mripard@kernel.org> 写到:
> >On Mon, Oct 07, 2019 at 12:03:00AM +0800, Icenowy Zheng wrote:
> >> From: Jagan Teki <jagan@amarulasolutions.com>
> >>
> >> The LCD timing definitions between Linux DRM vs Allwinner are
> >different,
> >> below diagram shows this clear differences.
> >>
> >>            Active                 Front           Sync           Back
> >>            Region                 Porch
> >Porch
> >>
> ><-----------------------><----------------><--------------><-------------->
> >>   //////////////////////|
> >>  ////////////////////// |
> >> //////////////////////  |..................
> >................
> >>                                            ________________
> >> <----- [hv]display ----->
> >> <------------- [hv]sync_start ------------>
> >> <--------------------- [hv]sync_end ---------------------->
> >> <-------------------------------- [hv]total
> >------------------------------>
> >>
> >> <----- lcd_[xy] -------->		  <- lcd_[hv]spw ->
> >> 					  <---------- lcd_[hv]bp --------->
> >> <-------------------------------- lcd_[hv]t
> >------------------------------>
> >>
> >> The DSI driver misinterpreted the vbp term from the BSP code to refer
> >> only to the backporch, when in fact it was backporch + sync. Thus the
> >> driver incorrectly used the vertical front porch plus sync in its
> >> calculation of the DRQ set bit value, when it should not have
> >included
> >> the sync timing.
> >>
> >> Including additional sync timings leads to flip_done timed out as:
> >>
> >> WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429
> >drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
> >> [CRTC:46:crtc-0] vblank wait timed out
> >> Modules linked in:
> >> CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted
> >5.1.0-next-20190514-00029-g09e5b0ed0a58 #18
> >> Hardware name: Allwinner sun8i Family
> >> Workqueue: events deferred_probe_work_func
> >> [<c010ed54>] (unwind_backtrace) from [<c010b76c>]
> >(show_stack+0x10/0x14)
> >> [<c010b76c>] (show_stack) from [<c0688c70>] (dump_stack+0x84/0x98)
> >> [<c0688c70>] (dump_stack) from [<c011d9e4>] (__warn+0xfc/0x114)
> >> [<c011d9e4>] (__warn) from [<c011da40>] (warn_slowpath_fmt+0x44/0x68)
> >> [<c011da40>] (warn_slowpath_fmt) from [<c040cd50>]
> >(drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
> >> [<c040cd50>] (drm_atomic_helper_wait_for_vblanks.part.1) from
> >[<c040e694>] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c)
> >> [<c040e694>] (drm_atomic_helper_commit_tail_rpm) from [<c040e4dc>]
> >(commit_tail+0x40/0x6c)
> >> [<c040e4dc>] (commit_tail) from [<c040e5cc>]
> >(drm_atomic_helper_commit+0xbc/0x128)
> >> [<c040e5cc>] (drm_atomic_helper_commit) from [<c0411b64>]
> >(restore_fbdev_mode_atomic+0x1cc/0x1dc)
> >> [<c0411b64>] (restore_fbdev_mode_atomic) from [<c04156f8>]
> >(drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
> >> [<c04156f8>] (drm_fb_helper_restore_fbdev_mode_unlocked) from
> >[<c0415774>] (drm_fb_helper_set_par+0x30/0x54)
> >> [<c0415774>] (drm_fb_helper_set_par) from [<c03ad450>]
> >(fbcon_init+0x560/0x5ac)
> >> [<c03ad450>] (fbcon_init) from [<c03eb8a0>] (visual_init+0xbc/0x104)
> >> [<c03eb8a0>] (visual_init) from [<c03ed1b8>]
> >(do_bind_con_driver+0x1b0/0x390)
> >> [<c03ed1b8>] (do_bind_con_driver) from [<c03ed780>]
> >(do_take_over_console+0x13c/0x1c4)
> >> [<c03ed780>] (do_take_over_console) from [<c03ad800>]
> >(do_fbcon_takeover+0x74/0xcc)
> >> [<c03ad800>] (do_fbcon_takeover) from [<c013c9c8>]
> >(notifier_call_chain+0x44/0x84)
> >> [<c013c9c8>] (notifier_call_chain) from [<c013cd20>]
> >(__blocking_notifier_call_chain+0x48/0x60)
> >> [<c013cd20>] (__blocking_notifier_call_chain) from [<c013cd50>]
> >(blocking_notifier_call_chain+0x18/0x20)
> >> [<c013cd50>] (blocking_notifier_call_chain) from [<c03a6e44>]
> >(register_framebuffer+0x1e0/0x2f8)
> >> [<c03a6e44>] (register_framebuffer) from [<c04153c0>]
> >(__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c)
> >> [<c04153c0>] (__drm_fb_helper_initial_config_and_unlock) from
> >[<c04158c8>] (drm_fbdev_client_hotplug+0xe8/0x1b8)
> >> [<c04158c8>] (drm_fbdev_client_hotplug) from [<c0415a20>]
> >(drm_fbdev_generic_setup+0x88/0x118)
> >> [<c0415a20>] (drm_fbdev_generic_setup) from [<c043f060>]
> >(sun4i_drv_bind+0x128/0x160)
> >> [<c043f060>] (sun4i_drv_bind) from [<c044b598>]
> >(try_to_bring_up_master+0x164/0x1a0)
> >> [<c044b598>] (try_to_bring_up_master) from [<c044b668>]
> >(__component_add+0x94/0x140)
> >> [<c044b668>] (__component_add) from [<c0445e1c>]
> >(sun6i_dsi_probe+0x144/0x234)
> >> [<c0445e1c>] (sun6i_dsi_probe) from [<c0452ef4>]
> >(platform_drv_probe+0x48/0x9c)
> >> [<c0452ef4>] (platform_drv_probe) from [<c04512cc>]
> >(really_probe+0x1dc/0x2c8)
> >> [<c04512cc>] (really_probe) from [<c0451518>]
> >(driver_probe_device+0x60/0x160)
> >> [<c0451518>] (driver_probe_device) from [<c044f7a4>]
> >(bus_for_each_drv+0x74/0xb8)
> >> [<c044f7a4>] (bus_for_each_drv) from [<c045107c>]
> >(__device_attach+0xd0/0x13c)
> >> [<c045107c>] (__device_attach) from [<c0450474>]
> >(bus_probe_device+0x84/0x8c)
> >> [<c0450474>] (bus_probe_device) from [<c0450900>]
> >(deferred_probe_work_func+0x64/0x90)
> >> [<c0450900>] (deferred_probe_work_func) from [<c0135970>]
> >(process_one_work+0x204/0x420)
> >> [<c0135970>] (process_one_work) from [<c013690c>]
> >(worker_thread+0x274/0x5a0)
> >> [<c013690c>] (worker_thread) from [<c013b3d8>] (kthread+0x11c/0x14c)
> >> [<c013b3d8>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
> >> Exception stack(0xde539fb0 to 0xde539ff8)
> >> 9fa0:                                     00000000 00000000 00000000
> >00000000
> >> 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> >00000000
> >> 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> >> ---[ end trace 495200a78b24980e ]---
> >> random: fast init done
> >> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
> >[CRTC:46:crtc-0] flip_done timed out
> >> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
> >[CONNECTOR:48:DSI-1] flip_done timed out
> >> [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
> >[PLANE:30:plane-0] flip_done timed out
> >>
> >> With the terms(as described in above diagram) fixed, the panel
> >> displays correctly without any timeouts.
> >>
> >> Tested-by: Merlijn Wajer <merlijn@wizzup.org>
> >> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> >
> >you should have your SoB here.
> >
> >All the patches look fine, so there's no need to resend a new
> >version. I'll add it if you can give it.
>
> Sorry, I forgot it.
>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.io>

I've added it, thanks!
Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

end of thread, other threads:[~2019-10-08  5:57 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-06 16:02 [PATCH v2 0/3] drm/sun4i: dsi: misc fixes Icenowy Zheng
2019-10-06 16:03 ` [PATCH v2 1/3] drm/sun4i: dsi: Fix video start delay computation Icenowy Zheng
2019-10-07 11:51   ` Maxime Ripard
2019-10-08  3:06     ` Icenowy Zheng
2019-10-08  5:57       ` Maxime Ripard
2019-10-06 16:03 ` [PATCH v2 2/3] drm/sun4i: dsi: fix the overhead of the horizontal front porch Icenowy Zheng
2019-10-07 11:59   ` Maxime Ripard
2019-10-06 16:03 ` [PATCH v2 3/3] drm/sun4i: sun6i_mipi_dsi: fix DCS long write packet length Icenowy Zheng
2019-10-07 12:07   ` Maxime Ripard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).