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@redhat.com Tested-by: Venkat Tadikonda venkateswara.rao@intel.com
Should have a Cc: to stable imho, `dim` can do this for you:
https://drm.pages.freedesktop.org/maintainer-tools/dim.html
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 '{'.
With that fixed, this is: Reviewed-by: Lyude Paul lyude@redhat.com
+ 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: