Up until now we were sending the base aux stored in dig_port which
is not correct as this causes an issue when monitor is connected via
a DPMST hub causing it to be remote hence we end up seeing AUX
failures so let's send the remote aux in case of DPMST.

Signed-off-by: Suraj Kandpal <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c 
b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
index 5304aa73b23f..2a37a43243a3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
@@ -452,7 +452,10 @@ int intel_dp_hdcp2_write_msg(struct intel_connector 
*connector,
 
        offset = hdcp2_msg_data->offset;
 
-       aux = &dig_port->dp.aux;
+       if (intel_encoder_is_mst(connector->encoder))
+               aux = &connector->port->aux;
+       else
+               aux = &dig_port->dp.aux;
 
        /* No msg_id in DP HDCP2.2 msgs */
        bytes_to_write = size - 1;
@@ -518,7 +521,10 @@ int intel_dp_hdcp2_read_msg(struct intel_connector 
*connector,
                return -EINVAL;
        offset = hdcp2_msg_data->offset;
 
-       aux = &dp->aux;
+       if (intel_encoder_is_mst(connector->encoder))
+               aux = &connector->port->aux;
+       else
+               aux = &dp->aux;
 
        ret = intel_dp_hdcp2_wait_for_msg(i915, aux, hdcp, hdcp2_msg_data);
        if (ret < 0)
-- 
2.25.1

Reply via email to