From: Xiaodong Yan <[email protected]>

[why]
1. defer delay and sw start delay has been mixed up, defer delay was
programmed to AUX_SW_CONTROL:AUX_SW_START_DELAY.
2. There's no delay for defer

[how]
1. Set  aux sw start to 0
2. Add delay for defer scenario

Change-Id: Ibc470b99980e474604fe884758b5bf049325eab0
Signed-off-by: Xiaodong Yan <[email protected]>
Reviewed-by: Tony Cheng <[email protected]>
Acked-by: Bhawanpreet Lakha <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dce/dce_aux.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 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 c3f9f4185ce8..48a0e4ae80c2 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c
@@ -475,7 +475,7 @@ int dce_aux_transfer_raw(struct ddc_service *ddc,
        aux_req.action = i2caux_action_from_payload(payload);
 
        aux_req.address = payload->address;
-       aux_req.delay = payload->defer_delay * 10;
+       aux_req.delay = 0;
        aux_req.length = payload->length;
        aux_req.data = payload->data;
 
@@ -544,8 +544,15 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
                        case AUX_TRANSACTION_REPLY_AUX_DEFER:
                        case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_NACK:
                        case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER:
-                               if (++aux_defer_retries >= 
AUX_MAX_DEFER_RETRIES)
+                               if (++aux_defer_retries >= 
AUX_MAX_DEFER_RETRIES) {
                                        goto fail;
+                               } else {
+                                       if ((*payload->reply == 
AUX_TRANSACTION_REPLY_AUX_DEFER) ||
+                                               (*payload->reply == 
AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER)) {
+                                               if (payload->defer_delay > 0)
+                                                       
msleep(payload->defer_delay);
+                                       }
+                               }
                                break;
 
                        case AUX_TRANSACTION_REPLY_I2C_DEFER:
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to