drm/amd/display: lock/un-lock cursor if odm pipe split used
authorPaul Hsieh <paul.hsieh@amd.com>
Mon, 7 Feb 2022 03:45:24 +0000 (11:45 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 23 Feb 2022 19:03:20 +0000 (14:03 -0500)
[Why]
When system resume from sleep, the cursor lock will be reset
to default(lock status). And the cursor programming sequence
doesn't consider about odm pipe split cause cursor can't be
enabled.

[How]
If odm pipe split has been used, lock/un-lock on each pipes.

Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Solomon Chiu <solomon.chiu@amd.com>
Signed-off-by: Paul Hsieh <paul.hsieh@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_stream.c

index 263f9891ecbcff92f18c487267999c9638ecf04e..dc5fd27b031a00b64d3f59aee756916671b5c704 100644 (file)
@@ -273,6 +273,8 @@ static void program_cursor_attributes(
                if (!pipe_to_program) {
                        pipe_to_program = pipe_ctx;
                        dc->hwss.cursor_lock(dc, pipe_to_program, true);
+                       if (pipe_to_program->next_odm_pipe)
+                               dc->hwss.cursor_lock(dc, pipe_to_program->next_odm_pipe, true);
                }
 
                dc->hwss.set_cursor_attribute(pipe_ctx);
@@ -280,8 +282,11 @@ static void program_cursor_attributes(
                        dc->hwss.set_cursor_sdr_white_level(pipe_ctx);
        }
 
-       if (pipe_to_program)
+       if (pipe_to_program) {
                dc->hwss.cursor_lock(dc, pipe_to_program, false);
+               if (pipe_to_program->next_odm_pipe)
+                       dc->hwss.cursor_lock(dc, pipe_to_program->next_odm_pipe, false);
+       }
 }
 
 #ifndef TRIM_FSFT