瀏覽代碼

drm/nouveau: enable enhanced framing only if DP display supports it

Reported-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 14 年之前
父節點
當前提交
fe224bb7e1
共有 2 個文件被更改,包括 6 次插入2 次删除
  1. 5 2
      drivers/gpu/drm/nouveau/nouveau_dp.c
  2. 1 0
      drivers/gpu/drm/nouveau/nouveau_encoder.h

+ 5 - 2
drivers/gpu/drm/nouveau/nouveau_dp.c

@@ -317,7 +317,8 @@ train:
 		return false;
 		return false;
 
 
 	config[0] = nv_encoder->dp.link_nr;
 	config[0] = nv_encoder->dp.link_nr;
-	if (nv_encoder->dp.dpcd_version >= 0x11)
+	if (nv_encoder->dp.dpcd_version >= 0x11 &&
+	    nv_encoder->dp.enhanced_frame)
 		config[0] |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
 		config[0] |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
 
 
 	ret = nouveau_dp_lane_count_set(encoder, config[0]);
 	ret = nouveau_dp_lane_count_set(encoder, config[0]);
@@ -468,10 +469,12 @@ nouveau_dp_detect(struct drm_encoder *encoder)
 	    !nv_encoder->dcb->dpconf.link_bw)
 	    !nv_encoder->dcb->dpconf.link_bw)
 		nv_encoder->dp.link_bw = DP_LINK_BW_1_62;
 		nv_encoder->dp.link_bw = DP_LINK_BW_1_62;
 
 
-	nv_encoder->dp.link_nr = dpcd[2] & 0xf;
+	nv_encoder->dp.link_nr = dpcd[2] & DP_MAX_LANE_COUNT;
 	if (nv_encoder->dp.link_nr > nv_encoder->dcb->dpconf.link_nr)
 	if (nv_encoder->dp.link_nr > nv_encoder->dcb->dpconf.link_nr)
 		nv_encoder->dp.link_nr = nv_encoder->dcb->dpconf.link_nr;
 		nv_encoder->dp.link_nr = nv_encoder->dcb->dpconf.link_nr;
 
 
+	nv_encoder->dp.enhanced_frame = (dpcd[2] & DP_ENHANCED_FRAME_CAP);
+
 	return true;
 	return true;
 }
 }
 
 

+ 1 - 0
drivers/gpu/drm/nouveau/nouveau_encoder.h

@@ -55,6 +55,7 @@ struct nouveau_encoder {
 			int dpcd_version;
 			int dpcd_version;
 			int link_nr;
 			int link_nr;
 			int link_bw;
 			int link_bw;
+			bool enhanced_frame;
 		} dp;
 		} dp;
 	};
 	};
 };
 };