drm/dp_mst: Refactor drm_dp_mst_handle_down_rep()
authorLyude Paul <lyude@redhat.com>
Tue, 3 Sep 2019 20:45:51 +0000 (16:45 -0400)
committerLyude Paul <lyude@redhat.com>
Tue, 3 Sep 2019 23:37:00 +0000 (19:37 -0400)
* Remove the big ugly have_eomt conditional
* Store &mgr->down_rep_recv.initial_hdr in a var to make line wrapping
  easier
* Remove duplicate memset() calls
* Actually wrap lines

Cc: Juston Li <juston.li@intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <hwentlan@amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190903204645.25487-14-lyude@redhat.com
drivers/gpu/drm/drm_dp_mst_topology.c

index b09f253..c38fd75 100644 (file)
@@ -3205,68 +3205,66 @@ static bool drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up)
 
 static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)
 {
-       int ret = 0;
+       struct drm_dp_sideband_msg_tx *txmsg;
+       struct drm_dp_mst_branch *mstb;
+       struct drm_dp_sideband_msg_hdr *hdr = &mgr->down_rep_recv.initial_hdr;
+       int slot = -1;
+
+       if (!drm_dp_get_one_sb_msg(mgr, false))
+               goto clear_down_rep_recv;
 
-       if (!drm_dp_get_one_sb_msg(mgr, false)) {
-               memset(&mgr->down_rep_recv, 0,
-                      sizeof(struct drm_dp_sideband_msg_rx));
+       if (!mgr->down_rep_recv.have_eomt)
                return 0;
+
+       mstb = drm_dp_get_mst_branch_device(mgr, hdr->lct, hdr->rad);
+       if (!mstb) {
+               DRM_DEBUG_KMS("Got MST reply from unknown device %d\n",
+                             hdr->lct);
+               goto clear_down_rep_recv;
        }
 
-       if (mgr->down_rep_recv.have_eomt) {
-               struct drm_dp_sideband_msg_tx *txmsg;
-               struct drm_dp_mst_branch *mstb;
-               int slot = -1;
-               mstb = drm_dp_get_mst_branch_device(mgr,
-                                                   mgr->down_rep_recv.initial_hdr.lct,
-                                                   mgr->down_rep_recv.initial_hdr.rad);
+       /* find the message */
+       slot = hdr->seqno;
+       mutex_lock(&mgr->qlock);
+       txmsg = mstb->tx_slots[slot];
+       /* remove from slots */
+       mutex_unlock(&mgr->qlock);
 
-               if (!mstb) {
-                       DRM_DEBUG_KMS("Got MST reply from unknown device %d\n", mgr->down_rep_recv.initial_hdr.lct);
-                       memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
-                       return 0;
-               }
+       if (!txmsg) {
+               DRM_DEBUG_KMS("Got MST reply with no msg %p %d %d %02x %02x\n",
+                             mstb, hdr->seqno, hdr->lct, hdr->rad[0],
+                             mgr->down_rep_recv.msg[0]);
+               goto no_msg;
+       }
 
-               /* find the message */
-               slot = mgr->down_rep_recv.initial_hdr.seqno;
-               mutex_lock(&mgr->qlock);
-               txmsg = mstb->tx_slots[slot];
-               /* remove from slots */
-               mutex_unlock(&mgr->qlock);
-
-               if (!txmsg) {
-                       DRM_DEBUG_KMS("Got MST reply with no msg %p %d %d %02x %02x\n",
-                              mstb,
-                              mgr->down_rep_recv.initial_hdr.seqno,
-                              mgr->down_rep_recv.initial_hdr.lct,
-                                     mgr->down_rep_recv.initial_hdr.rad[0],
-                                     mgr->down_rep_recv.msg[0]);
-                       drm_dp_mst_topology_put_mstb(mstb);
-                       memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
-                       return 0;
-               }
+       drm_dp_sideband_parse_reply(&mgr->down_rep_recv, &txmsg->reply);
 
-               drm_dp_sideband_parse_reply(&mgr->down_rep_recv, &txmsg->reply);
+       if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK)
+               DRM_DEBUG_KMS("Got NAK reply: req 0x%02x (%s), reason 0x%02x (%s), nak data 0x%02x\n",
+                             txmsg->reply.req_type,
+                             drm_dp_mst_req_type_str(txmsg->reply.req_type),
+                             txmsg->reply.u.nak.reason,
+                             drm_dp_mst_nak_reason_str(txmsg->reply.u.nak.reason),
+                             txmsg->reply.u.nak.nak_data);
 
-               if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK)
-                       DRM_DEBUG_KMS("Got NAK reply: req 0x%02x (%s), reason 0x%02x (%s), nak data 0x%02x\n",
-                                     txmsg->reply.req_type,
-                                     drm_dp_mst_req_type_str(txmsg->reply.req_type),
-                                     txmsg->reply.u.nak.reason,
-                                     drm_dp_mst_nak_reason_str(txmsg->reply.u.nak.reason),
-                                     txmsg->reply.u.nak.nak_data);
-
-               memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
-               drm_dp_mst_topology_put_mstb(mstb);
+       memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
+       drm_dp_mst_topology_put_mstb(mstb);
 
-               mutex_lock(&mgr->qlock);
-               txmsg->state = DRM_DP_SIDEBAND_TX_RX;
-               mstb->tx_slots[slot] = NULL;
-               mutex_unlock(&mgr->qlock);
+       mutex_lock(&mgr->qlock);
+       txmsg->state = DRM_DP_SIDEBAND_TX_RX;
+       mstb->tx_slots[slot] = NULL;
+       mutex_unlock(&mgr->qlock);
 
-               wake_up_all(&mgr->tx_waitq);
-       }
-       return ret;
+       wake_up_all(&mgr->tx_waitq);
+
+       return 0;
+
+no_msg:
+       drm_dp_mst_topology_put_mstb(mstb);
+clear_down_rep_recv:
+       memset(&mgr->down_rep_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
+
+       return 0;
 }
 
 static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr)