aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-05-15 07:50:07 -0400
committerBen Skeggs <bskeggs@redhat.com>2014-06-10 02:05:52 -0400
commitfb7c2a7186b093ed552c0a727cbfe7e156ff7664 (patch)
tree261b60295019a148b1b42a5349670deea28d388b
parent7dc351b3537b10db12b748defeecb135cee8f571 (diff)
drm/nouveau/disp/dp: support aux read interval during link training
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/disp/dport.c7
-rw-r--r--drivers/gpu/drm/nouveau/core/engine/disp/dport.h7
2 files changed, 8 insertions, 6 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/disp/dport.c b/drivers/gpu/drm/nouveau/core/engine/disp/dport.c
index 3ca2d25b7f5e..46563da2854e 100644
--- a/drivers/gpu/drm/nouveau/core/engine/disp/dport.c
+++ b/drivers/gpu/drm/nouveau/core/engine/disp/dport.c
@@ -48,7 +48,7 @@ struct dp_state {
48 u8 version; 48 u8 version;
49 struct nouveau_i2c_port *aux; 49 struct nouveau_i2c_port *aux;
50 int head; 50 int head;
51 u8 dpcd[4]; 51 u8 dpcd[16];
52 int link_nr; 52 int link_nr;
53 u32 link_bw; 53 u32 link_bw;
54 u8 stat[6]; 54 u8 stat[6];
@@ -149,7 +149,10 @@ dp_link_train_update(struct dp_state *dp, u32 delay)
149{ 149{
150 int ret; 150 int ret;
151 151
152 udelay(delay); 152 if (dp->dpcd[DPCD_RC0E_AUX_RD_INTERVAL])
153 mdelay(dp->dpcd[DPCD_RC0E_AUX_RD_INTERVAL] * 4);
154 else
155 udelay(delay);
153 156
154 ret = nv_rdaux(dp->aux, DPCD_LS02, dp->stat, 6); 157 ret = nv_rdaux(dp->aux, DPCD_LS02, dp->stat, 6);
155 if (ret) 158 if (ret)
diff --git a/drivers/gpu/drm/nouveau/core/engine/disp/dport.h b/drivers/gpu/drm/nouveau/core/engine/disp/dport.h
index 0e1bbd18ff6c..4d375b759baf 100644
--- a/drivers/gpu/drm/nouveau/core/engine/disp/dport.h
+++ b/drivers/gpu/drm/nouveau/core/engine/disp/dport.h
@@ -2,15 +2,14 @@
2#define __NVKM_DISP_DPORT_H__ 2#define __NVKM_DISP_DPORT_H__
3 3
4/* DPCD Receiver Capabilities */ 4/* DPCD Receiver Capabilities */
5#define DPCD_RC00 0x00000 5#define DPCD_RC00_DPCD_REV 0x00000
6#define DPCD_RC00_DPCD_REV 0xff 6#define DPCD_RC01_MAX_LINK_RATE 0x00001
7#define DPCD_RC01 0x00001
8#define DPCD_RC01_MAX_LINK_RATE 0xff
9#define DPCD_RC02 0x00002 7#define DPCD_RC02 0x00002
10#define DPCD_RC02_ENHANCED_FRAME_CAP 0x80 8#define DPCD_RC02_ENHANCED_FRAME_CAP 0x80
11#define DPCD_RC02_MAX_LANE_COUNT 0x1f 9#define DPCD_RC02_MAX_LANE_COUNT 0x1f
12#define DPCD_RC03 0x00003 10#define DPCD_RC03 0x00003
13#define DPCD_RC03_MAX_DOWNSPREAD 0x01 11#define DPCD_RC03_MAX_DOWNSPREAD 0x01
12#define DPCD_RC0E_AUX_RD_INTERVAL 0x0000e
14 13
15/* DPCD Link Configuration */ 14/* DPCD Link Configuration */
16#define DPCD_LC00 0x00100 15#define DPCD_LC00 0x00100