forked from Minki/linux
drm/nouveau/bios/dp: support DP Info Table 2.0
Reported-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
34112bf493
commit
f60707a69a
@ -36,6 +36,7 @@ nvbios_dp_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
|
||||
if (data) {
|
||||
*ver = nvbios_rd08(bios, data + 0x00);
|
||||
switch (*ver) {
|
||||
case 0x20:
|
||||
case 0x21:
|
||||
case 0x30:
|
||||
case 0x40:
|
||||
@ -63,6 +64,7 @@ nvbios_dpout_entry(struct nvkm_bios *bios, u8 idx,
|
||||
if (data && idx < *cnt) {
|
||||
u16 outp = nvbios_rd16(bios, data + *hdr + idx * *len);
|
||||
switch (*ver * !!outp) {
|
||||
case 0x20:
|
||||
case 0x21:
|
||||
case 0x30:
|
||||
*hdr = nvbios_rd08(bios, data + 0x04);
|
||||
@ -96,12 +98,16 @@ nvbios_dpout_parse(struct nvkm_bios *bios, u8 idx,
|
||||
info->type = nvbios_rd16(bios, data + 0x00);
|
||||
info->mask = nvbios_rd16(bios, data + 0x02);
|
||||
switch (*ver) {
|
||||
case 0x20:
|
||||
info->mask |= 0x00c0; /* match any link */
|
||||
/* fall-through */
|
||||
case 0x21:
|
||||
case 0x30:
|
||||
info->flags = nvbios_rd08(bios, data + 0x05);
|
||||
info->script[0] = nvbios_rd16(bios, data + 0x06);
|
||||
info->script[1] = nvbios_rd16(bios, data + 0x08);
|
||||
info->lnkcmp = nvbios_rd16(bios, data + 0x0a);
|
||||
if (*len >= 0x0c)
|
||||
info->lnkcmp = nvbios_rd16(bios, data + 0x0a);
|
||||
if (*len >= 0x0f) {
|
||||
info->script[2] = nvbios_rd16(bios, data + 0x0c);
|
||||
info->script[3] = nvbios_rd16(bios, data + 0x0e);
|
||||
@ -170,6 +176,7 @@ nvbios_dpcfg_parse(struct nvkm_bios *bios, u16 outp, u8 idx,
|
||||
memset(info, 0x00, sizeof(*info));
|
||||
if (data) {
|
||||
switch (*ver) {
|
||||
case 0x20:
|
||||
case 0x21:
|
||||
info->dc = nvbios_rd08(bios, data + 0x02);
|
||||
info->pe = nvbios_rd08(bios, data + 0x03);
|
||||
|
Loading…
Reference in New Issue
Block a user