Does what it says on the tin.

Cc: Juston Li <juston...@intel.com>
Cc: Imre Deak <imre.d...@intel.com>
Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Cc: Harry Wentland <hwent...@amd.com>
Cc: Daniel Vetter <daniel.vet...@ffwll.ch>
Reviewed-by: Sean Paul <s...@poorly.run>
Signed-off-by: Lyude Paul <ly...@redhat.com>
---
 drivers/gpu/drm/drm_dp_mst_topology.c | 59 +++++++++++++--------------
 1 file changed, 29 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c 
b/drivers/gpu/drm/drm_dp_mst_topology.c
index c8e218b902ae..d486d15aa002 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -3212,45 +3212,44 @@ EXPORT_SYMBOL(drm_dp_mst_topology_mgr_suspend);
  */
 int drm_dp_mst_topology_mgr_resume(struct drm_dp_mst_topology_mgr *mgr)
 {
-       int ret = 0;
+       int ret;
+       u8 guid[16];
 
        mutex_lock(&mgr->lock);
+       if (!mgr->mst_primary)
+               goto out_fail;
 
-       if (mgr->mst_primary) {
-               int sret;
-               u8 guid[16];
+       ret = drm_dp_dpcd_read(mgr->aux, DP_DPCD_REV, mgr->dpcd,
+                              DP_RECEIVER_CAP_SIZE);
+       if (ret != DP_RECEIVER_CAP_SIZE) {
+               DRM_DEBUG_KMS("dpcd read failed - undocked during suspend?\n");
+               goto out_fail;
+       }
 
-               sret = drm_dp_dpcd_read(mgr->aux, DP_DPCD_REV, mgr->dpcd, 
DP_RECEIVER_CAP_SIZE);
-               if (sret != DP_RECEIVER_CAP_SIZE) {
-                       DRM_DEBUG_KMS("dpcd read failed - undocked during 
suspend?\n");
-                       ret = -1;
-                       goto out_unlock;
-               }
+       ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL,
+                                DP_MST_EN |
+                                DP_UP_REQ_EN |
+                                DP_UPSTREAM_IS_SRC);
+       if (ret < 0) {
+               DRM_DEBUG_KMS("mst write failed - undocked during suspend?\n");
+               goto out_fail;
+       }
 
-               ret = drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL,
-                                        DP_MST_EN | DP_UP_REQ_EN | 
DP_UPSTREAM_IS_SRC);
-               if (ret < 0) {
-                       DRM_DEBUG_KMS("mst write failed - undocked during 
suspend?\n");
-                       ret = -1;
-                       goto out_unlock;
-               }
+       /* Some hubs forget their guids after they resume */
+       ret = drm_dp_dpcd_read(mgr->aux, DP_GUID, guid, 16);
+       if (ret != 16) {
+               DRM_DEBUG_KMS("dpcd read failed - undocked during suspend?\n");
+               goto out_fail;
+       }
+       drm_dp_check_mstb_guid(mgr->mst_primary, guid);
 
-               /* Some hubs forget their guids after they resume */
-               sret = drm_dp_dpcd_read(mgr->aux, DP_GUID, guid, 16);
-               if (sret != 16) {
-                       DRM_DEBUG_KMS("dpcd read failed - undocked during 
suspend?\n");
-                       ret = -1;
-                       goto out_unlock;
-               }
-               drm_dp_check_mstb_guid(mgr->mst_primary, guid);
+       mutex_unlock(&mgr->lock);
 
-               ret = 0;
-       } else
-               ret = -1;
+       return 0;
 
-out_unlock:
+out_fail:
        mutex_unlock(&mgr->lock);
-       return ret;
+       return -1;
 }
 EXPORT_SYMBOL(drm_dp_mst_topology_mgr_resume);
 
-- 
2.21.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to