diff --git a/msm/dp/dp_panel.c b/msm/dp/dp_panel.c index 2862ca59ff..ffba27e0f7 100644 --- a/msm/dp/dp_panel.c +++ b/msm/dp/dp_panel.c @@ -1663,12 +1663,15 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func) panel->vscext_chaining_supported); skip_dpcd_read: + link_info->revision = dpcd[DP_DPCD_REV]; panel->major = (link_info->revision >> 4) & 0x0f; panel->minor = link_info->revision & 0x0f; /* override link params updated in dp_panel_init_panel_info */ link_info->rate = min_t(unsigned long, panel->parser->max_lclk_khz, - link_info->rate); + drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE])); + + link_info->num_lanes = dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK; if (multi_func) link_info->num_lanes = min_t(unsigned int, @@ -1677,6 +1680,9 @@ skip_dpcd_read: pr_debug("version:%d.%d, rate:%d, lanes:%d\n", panel->major, panel->minor, link_info->rate, link_info->num_lanes); + if (drm_dp_enhanced_frame_cap(dpcd)) + link_info->capabilities |= DP_LINK_CAP_ENHANCED_FRAMING; + dfp_count = dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_DOWN_STREAM_PORT_COUNT;