Browse Source

Merge "disp: msm: dp: use extended DPCD fields to configure dp link rate"

qctecmdr 6 years ago
parent
commit
1adffe8c6e
1 changed files with 7 additions and 1 deletions
  1. 7 1
      msm/dp/dp_panel.c

+ 7 - 1
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);
 		panel->vscext_chaining_supported);
 
 
 skip_dpcd_read:
 skip_dpcd_read:
+	link_info->revision = dpcd[DP_DPCD_REV];
 	panel->major = (link_info->revision >> 4) & 0x0f;
 	panel->major = (link_info->revision >> 4) & 0x0f;
 	panel->minor = link_info->revision & 0x0f;
 	panel->minor = link_info->revision & 0x0f;
 
 
 	/* override link params updated in dp_panel_init_panel_info */
 	/* 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 = 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)
 	if (multi_func)
 		link_info->num_lanes = min_t(unsigned int,
 		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,
 	pr_debug("version:%d.%d, rate:%d, lanes:%d\n", panel->major,
 		panel->minor, link_info->rate, link_info->num_lanes);
 		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] &
 	dfp_count = dpcd[DP_DOWN_STREAM_PORT_COUNT] &
 						DP_DOWN_STREAM_PORT_COUNT;
 						DP_DOWN_STREAM_PORT_COUNT;