[RESEND][PATCH v3 0/4] drm/ast: Disable HW cursor when switching modes

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

 



Since converting the ast driver to atomic modesetting, modesetting
occationally locks up the graphics hardware and turns the display
permanently dark. This happens once or twice per 10 mode switches.
Investigation shows that the ast hardware presumably requires the HW
cursor to be disabled while the modeswitch takes place.

This patchset fixes the problem by disabling planes before programming
the CRTC mode. After the switch, the planes gets re-enabled if they were
enabled before. For mere pageflip operations, nothing changes.

Patches #1 makes format changes work as intended: format registers are
only updated if necessary. They used to be changed on each pageflip.

Patches #2 to #4 change the modesetting logic such that planes will be
disabled with the CRTC, then the CRTC's new mode is being programmed,
and finally planes are reenabled. The primary plane is enabled before
the cursor plane. With this setup, the cursor plane always has a valid
mode and framebuffer available.

Tested on AST2100 HW. The issue is not 100% reproducible, but does not
show up after applying the patchset. I think the problem has been fixed.

Thomas Zimmermann (4):
  drm/ast: Set format registers in primary plane's update
  drm/ast: Disable planes while switching display modes
  drm/ast: Program display mode in CRTC's atomic_enable()
  drm/ast: Enable CRTC before planes

 drivers/gpu/drm/ast/ast_drv.h  |   2 +
 drivers/gpu/drm/ast/ast_mode.c | 103 ++++++++++++++++++++-------------
 2 files changed, 64 insertions(+), 41 deletions(-)

--
2.28.0

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



[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