Commit 37dfdc55 authored by Lyude Paul's avatar Lyude Paul

drm/dp_mst: Cleanup drm_dp_send_link_address() a bit

Declare local pointer to the drm_dp_link_address_ack_reply struct
instead of constantly dereferencing it through the union in
txmsg->reply. Then, invert the order of conditionals so we don't have to
do the bulk of the work inside them, and can wrap lines even less. Then
finally, rearrange variable declarations a bit.

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>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190903204645.25487-16-lyude@redhat.com
parent 8b1e589d
...@@ -2424,9 +2424,9 @@ drm_dp_dump_link_address(struct drm_dp_link_address_ack_reply *reply) ...@@ -2424,9 +2424,9 @@ drm_dp_dump_link_address(struct drm_dp_link_address_ack_reply *reply)
static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr, static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr,
struct drm_dp_mst_branch *mstb) struct drm_dp_mst_branch *mstb)
{ {
int len;
struct drm_dp_sideband_msg_tx *txmsg; struct drm_dp_sideband_msg_tx *txmsg;
int ret; struct drm_dp_link_address_ack_reply *reply;
int i, len, ret;
txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL); txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL);
if (!txmsg) if (!txmsg)
...@@ -2438,28 +2438,32 @@ static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr, ...@@ -2438,28 +2438,32 @@ static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr,
mstb->link_address_sent = true; mstb->link_address_sent = true;
drm_dp_queue_down_tx(mgr, txmsg); drm_dp_queue_down_tx(mgr, txmsg);
/* FIXME: Actually do some real error handling here */
ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); ret = drm_dp_mst_wait_tx_reply(mstb, txmsg);
if (ret > 0) { if (ret <= 0) {
int i; DRM_ERROR("Sending link address failed with %d\n", ret);
goto out;
}
if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) {
DRM_ERROR("link address NAK received\n");
ret = -EIO;
goto out;
}
if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) { reply = &txmsg->reply.u.link_addr;
DRM_DEBUG_KMS("link address nak received\n"); DRM_DEBUG_KMS("link address reply: %d\n", reply->nports);
} else { drm_dp_dump_link_address(reply);
DRM_DEBUG_KMS("link address reply: %d\n", txmsg->reply.u.link_addr.nports);
drm_dp_dump_link_address(&txmsg->reply.u.link_addr);
drm_dp_check_mstb_guid(mstb, txmsg->reply.u.link_addr.guid); drm_dp_check_mstb_guid(mstb, reply->guid);
for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) { for (i = 0; i < reply->nports; i++)
drm_dp_add_port(mstb, mgr->dev, &txmsg->reply.u.link_addr.ports[i]); drm_dp_add_port(mstb, mgr->dev, &reply->ports[i]);
}
drm_kms_helper_hotplug_event(mgr->dev); drm_kms_helper_hotplug_event(mgr->dev);
}
} else {
mstb->link_address_sent = false;
DRM_DEBUG_KMS("link address failed %d\n", ret);
}
out:
if (ret <= 0)
mstb->link_address_sent = false;
kfree(txmsg); kfree(txmsg);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment