@@ -129,6 +129,9 @@ static int
intel_dp_max_link_bw(struct intel_dp *intel_dp)
{
int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE];
+ int cfg_max_link_bw = DP_LINK_BW_1_62;
+ struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+ struct drm_device *dev = intel_dig_port->base.base.dev;
switch (max_link_bw) {
case DP_LINK_BW_1_62:
@@ -136,9 +139,15 @@ intel_dp_max_link_bw(struct intel_dp *intel_dp)
case DP_LINK_BW_5_4:
break;
default:
- WARN(1, "invalid max DP link bw val %x, using 1.62Gbps\n",
- max_link_bw);
- max_link_bw = DP_LINK_BW_1_62;
+ intel_config_get_integer(to_i915(dev),
+ CFG_CONNECTOR,
+ intel_dp->attached_connector->base.name,
+ "Maximum DPCD Rate",
+ &cfg_max_link_bw);
+
+ WARN(1, "invalid max DP link bw val %x, using %x\n",
+ max_link_bw, cfg_max_link_bw);
+ max_link_bw = cfg_max_link_bw;
break;
}
return max_link_bw;
If the sink does not provide a maximum link rate, then check the connector configuration before defaulting to the lowest allowed link rate. Signed-off-by: Bob Paauwe <bob.j.paauwe@intel.com> --- drivers/gpu/drm/i915/intel_dp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)