]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/amd/display: fix odm mpo disable
authorDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Tue, 23 Apr 2019 20:02:45 +0000 (16:02 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Sat, 22 Jun 2019 14:34:11 +0000 (09:34 -0500)
It looks like mpo isn't properly disabled during odm, this change is
meant to fix that.

Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Nikola Cornij <Nikola.Cornij@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c

index 46e7f76a65530fbee30f3aff5c39eebdb3c48f8a..1daf4029b566e2c17af2980264d47f5c8c415281 100644 (file)
@@ -2153,6 +2153,11 @@ bool dcn20_validate_bandwidth(struct dc *dc, struct dc_state *context,
                } else
                        need_split = context->bw_ctx.dml.vba.NoOfDPP[vlevel][context->bw_ctx.dml.vba.maxMpcComb][pipe_idx] == 2;
 
+               /* We do not support mpo + odm at the moment */
+               if (hsplit_pipe && hsplit_pipe->plane_state != pipe->plane_state
+                               && context->bw_ctx.dml.vba.ODMCombineEnabled[pipe_idx])
+                       goto validate_fail;
+
                if (need_split3d || need_split || force_split) {
                        if (!hsplit_pipe || hsplit_pipe->plane_state != pipe->plane_state) {
                                /* pipe not split previously needs split */
@@ -2168,11 +2173,7 @@ bool dcn20_validate_bandwidth(struct dc *dc, struct dc_state *context,
                                        goto validate_fail;
                                pipe_split_from[hsplit_pipe->pipe_idx] = pipe_idx;
                        }
-               } else if (hsplit_pipe && hsplit_pipe->plane_state != pipe->plane_state) {
-                       /* We do not support mpo + odm at the moment */
-                       if (context->bw_ctx.dml.vba.ODMCombineEnabled[pipe_idx])
-                               goto validate_fail;
-               } else if (hsplit_pipe) {
+               } else if (hsplit_pipe && hsplit_pipe->plane_state == pipe->plane_state) {
                        /* merge should already have been done */
                        ASSERT(0);
                }