Commit 4767fae8 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/bios: some older boards have shorter displayport tables

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 46ea1688
...@@ -89,6 +89,7 @@ nvbios_dpout_parse(struct nouveau_bios *bios, u8 idx, ...@@ -89,6 +89,7 @@ nvbios_dpout_parse(struct nouveau_bios *bios, u8 idx,
struct nvbios_dpout *info) struct nvbios_dpout *info)
{ {
u16 data = nvbios_dpout_entry(bios, idx, ver, hdr, cnt, len); u16 data = nvbios_dpout_entry(bios, idx, ver, hdr, cnt, len);
memset(info, 0x00, sizeof(*info));
if (data && *ver) { if (data && *ver) {
info->type = nv_ro16(bios, data + 0x00); info->type = nv_ro16(bios, data + 0x00);
info->mask = nv_ro16(bios, data + 0x02); info->mask = nv_ro16(bios, data + 0x02);
...@@ -99,9 +100,12 @@ nvbios_dpout_parse(struct nouveau_bios *bios, u8 idx, ...@@ -99,9 +100,12 @@ nvbios_dpout_parse(struct nouveau_bios *bios, u8 idx,
info->script[0] = nv_ro16(bios, data + 0x06); info->script[0] = nv_ro16(bios, data + 0x06);
info->script[1] = nv_ro16(bios, data + 0x08); info->script[1] = nv_ro16(bios, data + 0x08);
info->lnkcmp = nv_ro16(bios, data + 0x0a); info->lnkcmp = nv_ro16(bios, data + 0x0a);
info->script[2] = nv_ro16(bios, data + 0x0c); if (*len >= 0x0f) {
info->script[3] = nv_ro16(bios, data + 0x0e); info->script[2] = nv_ro16(bios, data + 0x0c);
info->script[4] = nv_ro16(bios, data + 0x10); info->script[3] = nv_ro16(bios, data + 0x0e);
}
if (*len >= 0x11)
info->script[4] = nv_ro16(bios, data + 0x10);
break; break;
case 0x40: case 0x40:
info->flags = nv_ro08(bios, data + 0x04); info->flags = nv_ro08(bios, data + 0x04);
......
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