]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/amd/display: Avoid ABM when ODM combine is enabled for eDP
authorRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Fri, 11 Aug 2023 21:07:03 +0000 (16:07 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Aug 2023 16:27:23 +0000 (18:27 +0200)
commit 7fffb03b4045c862f904a88b852dc509c4e46406 upstream

ODM to combine on the eDP panel with ABM causes the color difference to
the panel since the ABM module only sets one pipe. Hence, this commit
blocks ABM in case of ODM combined on eDP.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Co-developed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/display/dc/core/dc.c

index 5d0a44e2ef9064269c8629ef3b5ea22e400a6aeb..8c98430091762a16e03bbce00b0332b240f4629a 100644 (file)
@@ -1996,9 +1996,19 @@ enum dc_status dc_commit_streams(struct dc *dc,
        res = dc_commit_state_no_check(dc, context);
 
        for (i = 0; i < stream_count; i++) {
-               for (j = 0; j < context->stream_count; j++)
+               for (j = 0; j < context->stream_count; j++) {
                        if (streams[i]->stream_id == context->streams[j]->stream_id)
                                streams[i]->out.otg_offset = context->stream_status[j].primary_otg_inst;
+
+                       if (dc_is_embedded_signal(streams[i]->signal)) {
+                               struct dc_stream_status *status = dc_stream_get_status_from_state(context, streams[i]);
+
+                               if (dc->hwss.is_abm_supported)
+                                       status->is_abm_supported = dc->hwss.is_abm_supported(dc, context, streams[i]);
+                               else
+                                       status->is_abm_supported = true;
+                       }
+               }
        }
 
 fail: