This chip can not handle aux defer if the host directly program
its aux registers to access edid/dpcd. So we need let software
to handle the aux defer situation.

Signed-off-by: Jason Yen <[email protected]>
---

 drivers/gpu/drm/bridge/parade-ps8640.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c 
b/drivers/gpu/drm/bridge/parade-ps8640.c
index 31e88cb39f8a..967dec840b91 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -303,6 +303,14 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux 
*aux,
        case SWAUX_STATUS_ACKM:
                len = data & SWAUX_M_MASK;
                break;
+       case SWAUX_STATUS_DEFER:
+       case SWAUX_STATUS_I2C_DEFER:
+               if (is_native_aux)
+                       msg->reply |= DP_AUX_NATIVE_REPLY_DEFER;
+               else
+                       msg->reply |= DP_AUX_I2C_REPLY_DEFER;
+               len = data & SWAUX_M_MASK;
+               break;
        case SWAUX_STATUS_INVALID:
                return -EOPNOTSUPP;
        case SWAUX_STATUS_TIMEOUT:
-- 
2.34.1

Reply via email to