From: Peichen Huang <[email protected]>

[WHY]
shift and mask are not correctly initilized in create_minimal functions.

[HOW]
Correct initialize necessary variables.

Reviewed-by: Cruise Hung <[email protected]>
Signed-off-by: Peichen Huang <[email protected]>
Signed-off-by: George Zhang <[email protected]>
---
 .../gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.c | 4 ++++
 .../gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.h | 2 ++
 .../gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c    | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c  | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c  | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c  | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c    | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn351/dcn351_resource.c  | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn36/dcn36_resource.c    | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c    | 4 +++-
 .../gpu/drm/amd/display/dc/resource/dcn42b/dcn42b_resource.c  | 4 +++-
 11 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.c 
b/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.c
index bcb791d74189..f57f3ba68a02 100644
--- a/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.c
@@ -516,6 +516,8 @@ void dcn31_link_encoder_construct_minimal(
        struct dc_context *ctx,
        const struct encoder_feature_support *enc_features,
        const struct dcn10_link_enc_registers *link_regs,
+       const struct dcn10_link_enc_shift *link_shift,
+       const struct dcn10_link_enc_mask *link_mask,
        enum engine_id eng_id)
 {
        struct dcn10_link_encoder *enc10 = &enc20->enc10;
@@ -529,6 +531,8 @@ void dcn31_link_encoder_construct_minimal(
        enc10->base.features = *enc_features;
        enc10->base.transmitter = TRANSMITTER_UNKNOWN;
        enc10->link_regs = link_regs;
+       enc10->link_shift = link_shift;
+       enc10->link_mask = link_mask;
 
        enc10->base.output_signals =
                SIGNAL_TYPE_DISPLAY_PORT |
diff --git a/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.h 
b/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.h
index 3cf587527991..88ab9684e207 100644
--- a/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.h
+++ b/drivers/gpu/drm/amd/display/dc/dio/dcn31/dcn31_dio_link_encoder.h
@@ -246,6 +246,8 @@ void dcn31_link_encoder_construct_minimal(
        struct dc_context *ctx,
        const struct encoder_feature_support *enc_features,
        const struct dcn10_link_enc_registers *link_regs,
+       const struct dcn10_link_enc_shift *link_shift,
+       const struct dcn10_link_enc_mask *link_mask,
        enum engine_id eng_id);
 
 void dcn31_link_encoder_set_dio_phy_mux(
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c
index 97c2cd7045b5..e6d7da830440 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c
@@ -1191,7 +1191,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1203,6 +1203,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c
index fbfedfca211f..ef2038efbfc2 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c
@@ -1248,7 +1248,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1260,6 +1260,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c
index 4e283e4c238c..dbf9cb934c76 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c
@@ -1190,7 +1190,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1202,6 +1202,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c
index 0c8b37520ec3..3a776959767c 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c
@@ -1183,7 +1183,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1195,6 +1195,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c
index c94136bf2dcf..800a030990bd 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn35/dcn35_resource.c
@@ -1189,7 +1189,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1201,6 +1201,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn351/dcn351_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn351/dcn351_resource.c
index 42c8c01efb0b..8e276c333dbe 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn351/dcn351_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn351/dcn351_resource.c
@@ -1169,7 +1169,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1181,6 +1181,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn36/dcn36_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn36/dcn36_resource.c
index b7afba548fd4..e2368a5c1eed 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn36/dcn36_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn36/dcn36_resource.c
@@ -1176,7 +1176,7 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if (((unsigned int)eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if (((unsigned int)eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1188,6 +1188,8 @@ static struct link_encoder *dcn31_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c
index 44728894dceb..c999db12d0a5 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn42/dcn42_resource.c
@@ -1882,7 +1882,7 @@ static struct link_encoder *dcn42_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if ((unsigned int)(eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if ((unsigned int)(eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1894,6 +1894,8 @@ static struct link_encoder *dcn42_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn42b/dcn42b_resource.c 
b/drivers/gpu/drm/amd/display/dc/resource/dcn42b/dcn42b_resource.c
index 669bd5eb4c8f..60cbaf4f6fdf 100644
--- a/drivers/gpu/drm/amd/display/dc/resource/dcn42b/dcn42b_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/resource/dcn42b/dcn42b_resource.c
@@ -1824,7 +1824,7 @@ static struct link_encoder 
*dcn42b_link_enc_create_minimal(
 {
        struct dcn20_link_encoder *enc20;
 
-       if ((unsigned int)(eng_id - ENGINE_ID_DIGA) > 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
+       if ((unsigned int)(eng_id - ENGINE_ID_DIGA) >= 
ctx->dc->res_pool->res_cap->num_dig_link_enc)
                return NULL;
 
        enc20 = kzalloc(sizeof(struct dcn20_link_encoder), GFP_KERNEL);
@@ -1836,6 +1836,8 @@ static struct link_encoder 
*dcn42b_link_enc_create_minimal(
                        ctx,
                        &link_enc_feature,
                        &link_enc_regs[eng_id - ENGINE_ID_DIGA],
+                       &le_shift,
+                       &le_mask,
                        eng_id);
 
        return &enc20->enc10.base;
-- 
2.53.0

Reply via email to