diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2012-03-11 01:08:05 -0500 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2012-03-22 10:21:18 -0400 |
commit | 6544599249086ce50f216a6cedbea56514ffefc6 (patch) | |
tree | 7b4fb0b9ada08c8a9b6530f08eeee93459f3fbf8 /drivers/gpu/drm/nouveau/nouveau_dp.c | |
parent | e592c73b91e9dfc7403fe41f649dd18593805ccd (diff) |
drm/nouveau/dp: support version 4.0 of DP table
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_dp.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_dp.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau/nouveau_dp.c index 302b2f7d0678..d996134b1b28 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dp.c +++ b/drivers/gpu/drm/nouveau/nouveau_dp.c | |||
@@ -188,6 +188,7 @@ nouveau_dp_bios_data(struct drm_device *dev, struct dcb_entry *dcb, u8 **entry) | |||
188 | case 0x20: | 188 | case 0x20: |
189 | case 0x21: | 189 | case 0x21: |
190 | case 0x30: | 190 | case 0x30: |
191 | case 0x40: | ||
191 | break; | 192 | break; |
192 | default: | 193 | default: |
193 | NV_ERROR(dev, "displayport table 0x%02x unknown\n", table[0]); | 194 | NV_ERROR(dev, "displayport table 0x%02x unknown\n", table[0]); |
@@ -366,6 +367,10 @@ dp_set_downspread(struct drm_device *dev, struct dp_state *dp, bool enable) | |||
366 | if (table[0] >= 0x20 && table[0] <= 0x30) { | 367 | if (table[0] >= 0x20 && table[0] <= 0x30) { |
367 | if (enable) script = ROM16(entry[12]); | 368 | if (enable) script = ROM16(entry[12]); |
368 | else script = ROM16(entry[14]); | 369 | else script = ROM16(entry[14]); |
370 | } else | ||
371 | if (table[0] == 0x40) { | ||
372 | if (enable) script = ROM16(entry[11]); | ||
373 | else script = ROM16(entry[13]); | ||
369 | } | 374 | } |
370 | } | 375 | } |
371 | 376 | ||
@@ -380,6 +385,9 @@ dp_link_train_init(struct drm_device *dev, struct dp_state *dp) | |||
380 | if (table) { | 385 | if (table) { |
381 | if (table[0] >= 0x20 && table[0] <= 0x30) | 386 | if (table[0] >= 0x20 && table[0] <= 0x30) |
382 | script = ROM16(entry[6]); | 387 | script = ROM16(entry[6]); |
388 | else | ||
389 | if (table[0] == 0x40) | ||
390 | script = ROM16(entry[5]); | ||
383 | } | 391 | } |
384 | 392 | ||
385 | nouveau_bios_run_init_table(dev, script, dp->dcb, dp->crtc); | 393 | nouveau_bios_run_init_table(dev, script, dp->dcb, dp->crtc); |
@@ -393,6 +401,9 @@ dp_link_train_fini(struct drm_device *dev, struct dp_state *dp) | |||
393 | if (table) { | 401 | if (table) { |
394 | if (table[0] >= 0x20 && table[0] <= 0x30) | 402 | if (table[0] >= 0x20 && table[0] <= 0x30) |
395 | script = ROM16(entry[8]); | 403 | script = ROM16(entry[8]); |
404 | else | ||
405 | if (table[0] == 0x40) | ||
406 | script = ROM16(entry[7]); | ||
396 | } | 407 | } |
397 | 408 | ||
398 | nouveau_bios_run_init_table(dev, script, dp->dcb, dp->crtc); | 409 | nouveau_bios_run_init_table(dev, script, dp->dcb, dp->crtc); |