Re: [PATCH] drm/ast: Fix black screen when getting out of suspend

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

 





Am 27.06.22 um 09:31 schrieb Jocelyn Falempe:
On 23/06/2022 10:21, Jocelyn Falempe wrote:
On 22/06/2022 20:34, Lyude Paul wrote:
Some small nitpicks:

On Wed, 2022-06-22 at 14:48 +0200, Jocelyn Falempe wrote:
With an AST2600, the screen is garbage when going out of suspend.
This is because color settings are lost, and not restored on resume.
Force the color settings on DPMS_ON, to make sure the settings are correct.

I didn't write this code, it comes from the out-of-tree aspeed driver v1.13
https://www.aspeedtech.com/support_driver/

Signed-off-by: Jocelyn Falempe <jfalempe@xxxxxxxxxx>
Tested-by: Venkat Tadikonda <venkateswara.rao@xxxxxxxxx>

Should have a Cc: to stable imho, `dim` can do this for you:

https://drm.pages.freedesktop.org/maintainer-tools/dim.html

Sure I will add cc to stable for the v2

In fact it doesn't apply to older kernel version, (it depends on 594e9c04b586 Create the driver for ASPEED proprietory Display-Port).

So I think I will just push it to drm-misc-next, with the indentation fixed.

Sure, go ahead.



---
  drivers/gpu/drm/ast/ast_mode.c | 13 +++++++++++++
  1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index 3eb9afecd9d4..cdddcb5c4439 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -990,6 +990,9 @@ static void ast_crtc_dpms(struct drm_crtc *crtc, int
mode)
  {
         struct ast_private *ast = to_ast_private(crtc->dev);
         u8 ch = AST_DPMS_VSYNC_OFF | AST_DPMS_HSYNC_OFF;
+       struct ast_crtc_state *ast_state;
+       const struct drm_format_info *format;
+       struct ast_vbios_mode_info *vbios_mode_info;
         /* TODO: Maybe control display signal generation with
          *       Sync Enable (bit CR17.7).
@@ -1007,6 +1010,16 @@ static void ast_crtc_dpms(struct drm_crtc *crtc, int
mode)
                         ast_dp_set_on_off(crtc->dev, 1);
                 }
+               ast_state = to_ast_crtc_state(crtc->state);
+               format = ast_state->format;
+
+               if (format){

Should be a space between ')' and '{'.

looks like I forget to run checkpatch.pl on it before sending :(

I'll wait a bit for other comments, and sent a v2 with cc for stable.

With that fixed, this is: Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx>

+                       vbios_mode_info = &ast_state->vbios_mode_info;
+
+                       ast_set_color_reg(ast, format);
+                       ast_set_vbios_color_reg(ast, format,
vbios_mode_info);
+               }
+
                 ast_crtc_load_lut(ast, crtc);
                 break;
         case DRM_MODE_DPMS_STANDBY:




--
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