From: Matthew Stewart <[email protected]>

[Why & How]
The logic for choosing between the dce_aux_transfer function variants is
moved into dce_aux.c rather than link_ddc.c.

The "dce_aux_transfer_with_retries" function now uses
dce_aux_transfer_raw in its implementation as the logic is equivalent.

Reviewed-by: Nevenko Stupar <[email protected]>
Reviewed-by: Gabe Teeger <[email protected]>
Signed-off-by: Matthew Stewart <[email protected]>
Signed-off-by: James Lin <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dce/dce_aux.c  | 20 ++++++++++++-------
 drivers/gpu/drm/amd/display/dc/dce/dce_aux.h  |  4 ++++
 .../amd/display/dc/link/protocols/link_ddc.c  |  7 +------
 3 files changed, 18 insertions(+), 13 deletions(-)

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 eee58f946fae..181944ce77ab 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
@@ -559,6 +559,18 @@ static enum i2caux_transaction_action 
i2caux_action_from_payload(struct aux_payl
 int dce_aux_transfer_raw(struct ddc_service *ddc,
                struct aux_payload *payload,
                enum aux_return_code_type *operation_result)
+{
+       if (ddc->ctx->dc->debug.enable_dmub_aux_for_legacy_ddc ||
+           !ddc->ddc_pin) {
+               return dce_aux_transfer_dmub_raw(ddc, payload, 
operation_result);
+       } else {
+               return dce_aux_transfer_raw_with_ddc_pin(ddc, payload, 
operation_result);
+       }
+}
+
+int dce_aux_transfer_raw_with_ddc_pin(struct ddc_service *ddc,
+               struct aux_payload *payload,
+               enum aux_return_code_type *operation_result)
 {
        struct ddc *ddc_pin = ddc->ddc_pin;
        struct dce_aux *aux_engine;
@@ -740,13 +752,7 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
                if (payload->write)
                        dce_aux_log_payload("  write", payload->data, 
payload->length, 16);
 
-               /* Check whether aux to be processed via dmub or dcn directly */
-               if (ddc->ctx->dc->debug.enable_dmub_aux_for_legacy_ddc
-                       || ddc->ddc_pin == NULL) {
-                       ret = dce_aux_transfer_dmub_raw(ddc, payload, 
&operation_result);
-               } else {
-                       ret = dce_aux_transfer_raw(ddc, payload, 
&operation_result);
-               }
+               ret = dce_aux_transfer_raw(ddc, payload, &operation_result);
 
                DC_TRACE_LEVEL_MESSAGE(DAL_TRACE_LEVEL_INFORMATION,
                                        LOG_FLAG_I2cAux_DceAux,
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.h 
b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.h
index c850ed49281f..8f4745694016 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.h
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.h
@@ -304,6 +304,10 @@ int dce_aux_transfer_raw(struct ddc_service *ddc,
                struct aux_payload *cmd,
                enum aux_return_code_type *operation_result);
 
+int dce_aux_transfer_raw_with_ddc_pin(struct ddc_service *ddc,
+               struct aux_payload *cmd,
+               enum aux_return_code_type *operation_result);
+
 int dce_aux_transfer_dmub_raw(struct ddc_service *ddc,
                struct aux_payload *payload,
                enum aux_return_code_type *operation_result);
diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_ddc.c 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_ddc.c
index ef9306686b14..70f854cca029 100644
--- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_ddc.c
+++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_ddc.c
@@ -401,12 +401,7 @@ int link_aux_transfer_raw(struct ddc_service *ddc,
                struct aux_payload *payload,
                enum aux_return_code_type *operation_result)
 {
-       if (ddc->ctx->dc->debug.enable_dmub_aux_for_legacy_ddc ||
-           !ddc->ddc_pin) {
-               return dce_aux_transfer_dmub_raw(ddc, payload, 
operation_result);
-       } else {
-               return dce_aux_transfer_raw(ddc, payload, operation_result);
-       }
+       return dce_aux_transfer_raw(ddc, payload, operation_result);
 }
 
 uint32_t link_get_fixed_vs_pe_retimer_write_address(struct dc_link *link)
-- 
2.43.0

Reply via email to