From: Meenakshikumar Somasundaram <meenakshikumar.somasunda...@amd.com>

[Why]
Need a check for NULL pointer access for ddc pin and aux engine.

[How]
Adding a check for ddc pin and aux engine accesses.

Reviewed-by: Jimmy Kizito <jimmy.kiz...@amd.com>
Acked-by: Mikita Lipski <mikita.lip...@amd.com>
Signed-off-by: Meenakshikumar Somasundaram <meenakshikumar.somasunda...@amd.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c   |  2 --
 drivers/gpu/drm/amd/display/dc/dce/dce_aux.c         | 12 +++++++++---
 drivers/gpu/drm/amd/display/include/dal_asic_id.h    |  2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
index c5f61be1f6b5..5bfdc66b5867 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
@@ -449,9 +449,7 @@ static void update_config(void *handle, struct 
cp_psp_stream_config *config)
        struct mod_hdcp_link *link = &hdcp_work[link_index].link;
        struct drm_connector_state *conn_state;
        struct dc_sink *sink = NULL;
-#if defined(CONFIG_DRM_AMD_DC_DCN3_1)
        bool link_is_hdcp14 = false;
-#endif
 
        if (config->dpms_off) {
                hdcp_remove_display(hdcp_work, link_index, aconnector);
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c 
b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
index e14f99b4b0c3..4a3b94fa3e40 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
@@ -689,8 +689,8 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
        enum aux_return_code_type operation_result;
        bool retry_on_defer = false;
        struct ddc *ddc_pin = ddc->ddc_pin;
-       struct dce_aux *aux_engine = 
ddc->ctx->dc->res_pool->engines[ddc_pin->pin_data->en];
-       struct aux_engine_dce110 *aux110 = FROM_AUX_ENGINE(aux_engine);
+       struct dce_aux *aux_engine = NULL;
+       struct aux_engine_dce110 *aux110 = NULL;
        uint32_t defer_time_in_ms = 0;
 
        int aux_ack_retries = 0,
@@ -699,6 +699,11 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
                aux_timeout_retries = 0,
                aux_invalid_reply_retries = 0;
 
+       if (ddc_pin) {
+               aux_engine = 
ddc->ctx->dc->res_pool->engines[ddc_pin->pin_data->en];
+               aux110 = FROM_AUX_ENGINE(aux_engine);
+       }
+
        if (!payload->reply) {
                payload_reply = false;
                payload->reply = &reply;
@@ -765,7 +770,8 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
                                                        
"dce_aux_transfer_with_retries: AUX_RET_SUCCESS: 
AUX_TRANSACTION_REPLY_AUX_DEFER");
 
                                /* polling_timeout_period is in us */
-                               defer_time_in_ms += 
aux110->polling_timeout_period / 1000;
+                               if (aux110)
+                                       defer_time_in_ms += 
aux110->polling_timeout_period / 1000;
                                ++aux_defer_retries;
                                fallthrough;
                        case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER:
diff --git a/drivers/gpu/drm/amd/display/include/dal_asic_id.h 
b/drivers/gpu/drm/amd/display/include/dal_asic_id.h
index 381c17caace1..3d2f0817e40a 100644
--- a/drivers/gpu/drm/amd/display/include/dal_asic_id.h
+++ b/drivers/gpu/drm/amd/display/include/dal_asic_id.h
@@ -227,7 +227,7 @@ enum {
 #define FAMILY_YELLOW_CARP                     146
 
 #define YELLOW_CARP_A0 0x01
-#define YELLOW_CARP_B0 0x02            // TODO: DCN31 - update with correct B0 
ID
+#define YELLOW_CARP_B0 0x20
 #define YELLOW_CARP_UNKNOWN 0xFF
 
 #ifndef ASICREV_IS_YELLOW_CARP
-- 
2.25.1

Reply via email to