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

Jocelyn Falempe jfalempe at redhat.com
Mon Jun 27 07:31:45 UTC 2022


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 at redhat.com>
>>> Tested-by: Venkat Tadikonda <venkateswara.rao at intel.com>
>>
>> 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.

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



More information about the dri-devel mailing list