aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_dp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_dp.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_dp.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau/nouveau_dp.c
index 8a1b188b4cd1..4562f309ae3d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dp.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dp.c
@@ -317,7 +317,8 @@ train:
317 return false; 317 return false;
318 318
319 config[0] = nv_encoder->dp.link_nr; 319 config[0] = nv_encoder->dp.link_nr;
320 if (nv_encoder->dp.dpcd_version >= 0x11) 320 if (nv_encoder->dp.dpcd_version >= 0x11 &&
321 nv_encoder->dp.enhanced_frame)
321 config[0] |= DP_LANE_COUNT_ENHANCED_FRAME_EN; 322 config[0] |= DP_LANE_COUNT_ENHANCED_FRAME_EN;
322 323
323 ret = nouveau_dp_lane_count_set(encoder, config[0]); 324 ret = nouveau_dp_lane_count_set(encoder, config[0]);
@@ -468,10 +469,12 @@ nouveau_dp_detect(struct drm_encoder *encoder)
468 !nv_encoder->dcb->dpconf.link_bw) 469 !nv_encoder->dcb->dpconf.link_bw)
469 nv_encoder->dp.link_bw = DP_LINK_BW_1_62; 470 nv_encoder->dp.link_bw = DP_LINK_BW_1_62;
470 471
471 nv_encoder->dp.link_nr = dpcd[2] & 0xf; 472 nv_encoder->dp.link_nr = dpcd[2] & DP_MAX_LANE_COUNT_MASK;
472 if (nv_encoder->dp.link_nr > nv_encoder->dcb->dpconf.link_nr) 473 if (nv_encoder->dp.link_nr > nv_encoder->dcb->dpconf.link_nr)
473 nv_encoder->dp.link_nr = nv_encoder->dcb->dpconf.link_nr; 474 nv_encoder->dp.link_nr = nv_encoder->dcb->dpconf.link_nr;
474 475
476 nv_encoder->dp.enhanced_frame = (dpcd[2] & DP_ENHANCED_FRAME_CAP);
477
475 return true; 478 return true;
476} 479}
477 480
@@ -524,7 +527,8 @@ nouveau_dp_auxch(struct nouveau_i2c_chan *auxch, int cmd, int addr,
524 nv_wr32(dev, NV50_AUXCH_CTRL(index), ctrl | 0x80000000); 527 nv_wr32(dev, NV50_AUXCH_CTRL(index), ctrl | 0x80000000);
525 nv_wr32(dev, NV50_AUXCH_CTRL(index), ctrl); 528 nv_wr32(dev, NV50_AUXCH_CTRL(index), ctrl);
526 nv_wr32(dev, NV50_AUXCH_CTRL(index), ctrl | 0x00010000); 529 nv_wr32(dev, NV50_AUXCH_CTRL(index), ctrl | 0x00010000);
527 if (!nv_wait(NV50_AUXCH_CTRL(index), 0x00010000, 0x00000000)) { 530 if (!nv_wait(dev, NV50_AUXCH_CTRL(index),
531 0x00010000, 0x00000000)) {
528 NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n", 532 NV_ERROR(dev, "expected bit 16 == 0, got 0x%08x\n",
529 nv_rd32(dev, NV50_AUXCH_CTRL(index))); 533 nv_rd32(dev, NV50_AUXCH_CTRL(index)));
530 ret = -EBUSY; 534 ret = -EBUSY;