|
@@ -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;
|
|
|
|
|