|
@@ -188,6 +188,7 @@ nouveau_dp_bios_data(struct drm_device *dev, struct dcb_entry *dcb, u8 **entry)
|
|
|
case 0x20:
|
|
|
case 0x21:
|
|
|
case 0x30:
|
|
|
+ case 0x40:
|
|
|
break;
|
|
|
default:
|
|
|
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)
|
|
|
if (table[0] >= 0x20 && table[0] <= 0x30) {
|
|
|
if (enable) script = ROM16(entry[12]);
|
|
|
else script = ROM16(entry[14]);
|
|
|
+ } else
|
|
|
+ if (table[0] == 0x40) {
|
|
|
+ if (enable) script = ROM16(entry[11]);
|
|
|
+ else script = ROM16(entry[13]);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -380,6 +385,9 @@ dp_link_train_init(struct drm_device *dev, struct dp_state *dp)
|
|
|
if (table) {
|
|
|
if (table[0] >= 0x20 && table[0] <= 0x30)
|
|
|
script = ROM16(entry[6]);
|
|
|
+ else
|
|
|
+ if (table[0] == 0x40)
|
|
|
+ script = ROM16(entry[5]);
|
|
|
}
|
|
|
|
|
|
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)
|
|
|
if (table) {
|
|
|
if (table[0] >= 0x20 && table[0] <= 0x30)
|
|
|
script = ROM16(entry[8]);
|
|
|
+ else
|
|
|
+ if (table[0] == 0x40)
|
|
|
+ script = ROM16(entry[7]);
|
|
|
}
|
|
|
|
|
|
nouveau_bios_run_init_table(dev, script, dp->dcb, dp->crtc);
|