From: Austin Zheng <austin.zh...@amd.com>

[Why]
Mapping of ODM enum is different for DML2.0 vs DML2.1.
Configs using DML2.1 will incorrectly trigger an assert meant for DML2.0.

[How]
Use if/else to seperate logic between DML2.0 and DML2.1.

Reviewed-by: Aurabindo Pillai <aurabindo.pil...@amd.com>
Signed-off-by: Austin Zheng <austin.zh...@amd.com>
Signed-off-by: Fangzhi Zuo <jerry....@amd.com>
---
 .../display/dc/dml2/dml2_dc_resource_mgmt.c   | 24 +++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml2/dml2_dc_resource_mgmt.c 
b/drivers/gpu/drm/amd/display/dc/dml2/dml2_dc_resource_mgmt.c
index a966abd40788..5f1b49a50049 100644
--- a/drivers/gpu/drm/amd/display/dc/dml2/dml2_dc_resource_mgmt.c
+++ b/drivers/gpu/drm/amd/display/dc/dml2/dml2_dc_resource_mgmt.c
@@ -1082,22 +1082,22 @@ bool dml2_map_dc_pipes(struct dml2_context *ctx, struct 
dc_state *state, const s
                if (stream_disp_cfg_index >= disp_cfg_index_max)
                        continue;
 
-               if (ODMMode[stream_disp_cfg_index] == dml_odm_mode_bypass) {
-                       scratch.odm_info.odm_factor = 1;
-               } else if (ODMMode[stream_disp_cfg_index] == 
dml_odm_mode_combine_2to1) {
-                       scratch.odm_info.odm_factor = 2;
-               } else if (ODMMode[stream_disp_cfg_index] == 
dml_odm_mode_combine_4to1) {
-                       scratch.odm_info.odm_factor = 4;
-               } else {
-                       ASSERT(false);
-                       scratch.odm_info.odm_factor = 1;
-               }
-
+               if (ctx->architecture == dml2_architecture_20) {
+                       if (ODMMode[stream_disp_cfg_index] == 
dml_odm_mode_bypass) {
+                               scratch.odm_info.odm_factor = 1;
+                       } else if (ODMMode[stream_disp_cfg_index] == 
dml_odm_mode_combine_2to1) {
+                               scratch.odm_info.odm_factor = 2;
+                       } else if (ODMMode[stream_disp_cfg_index] == 
dml_odm_mode_combine_4to1) {
+                               scratch.odm_info.odm_factor = 4;
+                       } else {
+                               ASSERT(false);
+                               scratch.odm_info.odm_factor = 1;
+                       }
+               } else if (ctx->architecture == dml2_architecture_21) {
                /* After DML2.1 update, ODM interpretation needs to change and 
is no longer same as for DML2.0.
                 * This is not an issue with new resource management logic. 
This block ensure backcompat
                 * with legacy pipe management with updated DML.
                 * */
-               if (ctx->architecture == dml2_architecture_21) {
                        if (ODMMode[stream_disp_cfg_index] == 1) {
                                scratch.odm_info.odm_factor = 1;
                        } else if (ODMMode[stream_disp_cfg_index] == 2) {
-- 
2.43.0

Reply via email to