Message ID | 20190925141442.23236-2-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/3] drm/dp/mst: Reduce nested ifs | expand |
Reviewed-by: Lyude Paul <lyude@redhat.com> On Wed, 2019-09-25 at 17:14 +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Make drm_dp_get_vc_payload() tolerate arbitrary DP_LINK_BW_* > values, just like drm_dp_bw_code_to_link_rate() does since commit > 57a1b0893782 ("drm: Make the bw/link rate calculations more forgiving"). > > Cc: Lyude Paul <lyude@redhat.com> > Cc: Sean Paul <seanpaul@chromium.org> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/drm_dp_mst_topology.c | 29 ++++++--------------------- > 1 file changed, 6 insertions(+), 23 deletions(-) > > diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c > b/drivers/gpu/drm/drm_dp_mst_topology.c > index e25597eb3ca1..d4644a3c1324 100644 > --- a/drivers/gpu/drm/drm_dp_mst_topology.c > +++ b/drivers/gpu/drm/drm_dp_mst_topology.c > @@ -2974,30 +2974,13 @@ static int drm_dp_send_up_ack_reply(struct > drm_dp_mst_topology_mgr *mgr, > return 0; > } > > -static bool drm_dp_get_vc_payload_bw(int dp_link_bw, > - int dp_link_count, > - int *out) > +static int drm_dp_get_vc_payload_bw(u8 dp_link_bw, u8 dp_link_count) > { > - switch (dp_link_bw) { > - default: > + if (dp_link_bw == 0 || dp_link_count == 0) > DRM_DEBUG_KMS("invalid link bandwidth in DPCD: %x (link count: > %d)\n", > dp_link_bw, dp_link_count); > - return false; > > - case DP_LINK_BW_1_62: > - *out = 3 * dp_link_count; > - break; > - case DP_LINK_BW_2_7: > - *out = 5 * dp_link_count; > - break; > - case DP_LINK_BW_5_4: > - *out = 10 * dp_link_count; > - break; > - case DP_LINK_BW_8_1: > - *out = 15 * dp_link_count; > - break; > - } > - return true; > + return dp_link_bw * dp_link_count / 2; > } > > /** > @@ -3029,9 +3012,9 @@ int drm_dp_mst_topology_mgr_set_mst(struct > drm_dp_mst_topology_mgr *mgr, bool ms > goto out_unlock; > } > > - if (!drm_dp_get_vc_payload_bw(mgr->dpcd[1], > - mgr->dpcd[2] & > DP_MAX_LANE_COUNT_MASK, > - &mgr->pbn_div)) { > + mgr->pbn_div = drm_dp_get_vc_payload_bw(mgr->dpcd[1], > + mgr->dpcd[2] & > DP_MAX_LANE_COUNT_MASK); > + if (mgr->pbn_div == 0) { > ret = -EINVAL; > goto out_unlock; > }
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index e25597eb3ca1..d4644a3c1324 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -2974,30 +2974,13 @@ static int drm_dp_send_up_ack_reply(struct drm_dp_mst_topology_mgr *mgr, return 0; } -static bool drm_dp_get_vc_payload_bw(int dp_link_bw, - int dp_link_count, - int *out) +static int drm_dp_get_vc_payload_bw(u8 dp_link_bw, u8 dp_link_count) { - switch (dp_link_bw) { - default: + if (dp_link_bw == 0 || dp_link_count == 0) DRM_DEBUG_KMS("invalid link bandwidth in DPCD: %x (link count: %d)\n", dp_link_bw, dp_link_count); - return false; - case DP_LINK_BW_1_62: - *out = 3 * dp_link_count; - break; - case DP_LINK_BW_2_7: - *out = 5 * dp_link_count; - break; - case DP_LINK_BW_5_4: - *out = 10 * dp_link_count; - break; - case DP_LINK_BW_8_1: - *out = 15 * dp_link_count; - break; - } - return true; + return dp_link_bw * dp_link_count / 2; } /** @@ -3029,9 +3012,9 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms goto out_unlock; } - if (!drm_dp_get_vc_payload_bw(mgr->dpcd[1], - mgr->dpcd[2] & DP_MAX_LANE_COUNT_MASK, - &mgr->pbn_div)) { + mgr->pbn_div = drm_dp_get_vc_payload_bw(mgr->dpcd[1], + mgr->dpcd[2] & DP_MAX_LANE_COUNT_MASK); + if (mgr->pbn_div == 0) { ret = -EINVAL; goto out_unlock; }