Commit f10956d4 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/bios/dp: use alternate set of drvctl values where necessary

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 7c11c99b
...@@ -148,7 +148,8 @@ nvbios_dpcfg_entry(struct nvkm_bios *bios, u16 outp, u8 idx, ...@@ -148,7 +148,8 @@ nvbios_dpcfg_entry(struct nvkm_bios *bios, u16 outp, u8 idx,
outp = nvbios_dp_table(bios, ver, hdr, cnt, len); outp = nvbios_dp_table(bios, ver, hdr, cnt, len);
*hdr = *hdr + (*len * * cnt); *hdr = *hdr + (*len * * cnt);
*len = nv_ro08(bios, outp + 0x06); *len = nv_ro08(bios, outp + 0x06);
*cnt = nv_ro08(bios, outp + 0x07); *cnt = nv_ro08(bios, outp + 0x07) *
nv_ro08(bios, outp + 0x05);
} }
if (idx < *cnt) if (idx < *cnt)
...@@ -196,12 +197,10 @@ nvbios_dpcfg_match(struct nvkm_bios *bios, u16 outp, u8 pc, u8 vs, u8 pe, ...@@ -196,12 +197,10 @@ nvbios_dpcfg_match(struct nvkm_bios *bios, u16 outp, u8 pc, u8 vs, u8 pe,
u16 data; u16 data;
if (*ver >= 0x30) { if (*ver >= 0x30) {
/*XXX: there's a second set of these on at least 4.1, that
* i've witnessed nvidia using instead of the first
* on gm204. figure out what/why
*/
const u8 vsoff[] = { 0, 4, 7, 9 }; const u8 vsoff[] = { 0, 4, 7, 9 };
idx = (pc * 10) + vsoff[vs] + pe; idx = (pc * 10) + vsoff[vs] + pe;
if (*ver >= 0x40 && *hdr >= 0x12)
idx += nv_ro08(bios, outp + 0x11) * 40;
} else { } else {
while ((data = nvbios_dpcfg_entry(bios, outp, ++idx, while ((data = nvbios_dpcfg_entry(bios, outp, ++idx,
ver, hdr, cnt, len))) { ver, hdr, cnt, len))) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment