Re: [PATCH 8/8] drm/ast: Avoid reprogramming primary-plane scanout address

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

Am 11.10.22 um 16:21 schrieb Jocelyn Falempe:
On 10/10/2022 12:36, Thomas Zimmermann wrote:
Some AST-based BMCs stop display output for up to 5 seconds after
reprogramming the scanout address. As the address is fixed, avoid
re-setting the address' value.

Reported-by: Jocelyn Falempe <jfalempe@xxxxxxxxxx>
Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
---
  drivers/gpu/drm/ast/ast_mode.c | 12 ++++++++++--
  1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index 1b991658290b..54a9643d86ce 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -672,9 +672,17 @@ static void ast_primary_plane_helper_atomic_update(struct drm_plane *plane,
      }
      ast_set_offset_reg(ast, fb);
-    ast_set_start_address_crt1(ast, (u32)ast_plane->offset);
-    ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x1, 0xdf, 0x00);
+    /*
+     * Some BMCs stop scanning out the video signal after the driver
+     * reprogrammed the scanout address. This stalls display output
+     * for several seconds and makes the display unusable. Therefore
+     * only reprogram the address after enabling the plane.
+     */
+    if (!old_fb && fb) {
+        ast_set_start_address_crt1(ast, (u32)ast_plane->offset);
+        ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x1, 0xdf, 0x00);
+    }
  }

I've tested the series, and BMC is still very slow with Gnome/Wayland.

It's because ast_set_offset_reg() also trigger a 5s freeze of the BMC.

I added this, and it works well:

if (!old_fb || old_fb->pitches[0] != fb->pitches[0])
     ast_set_offset_reg(ast, fb);

Great thanks for testing. I'll add this to the next version.

I wonder if that problem is in all ast chips or just this one. :/

Best regards
Thomas



  static void ast_primary_plane_helper_atomic_disable(struct drm_plane *plane,





--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux