drm/nv50: fix duallink_possible calculation for DCB 4.0 cards
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
73db4bedc5
commit
23484874e6
|
@ -5536,12 +5536,6 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb,
|
||||||
entry->bus = (conn >> 16) & 0xf;
|
entry->bus = (conn >> 16) & 0xf;
|
||||||
entry->location = (conn >> 20) & 0x3;
|
entry->location = (conn >> 20) & 0x3;
|
||||||
entry->or = (conn >> 24) & 0xf;
|
entry->or = (conn >> 24) & 0xf;
|
||||||
/*
|
|
||||||
* Normal entries consist of a single bit, but dual link has the
|
|
||||||
* next most significant bit set too
|
|
||||||
*/
|
|
||||||
entry->duallink_possible =
|
|
||||||
((1 << (ffs(entry->or) - 1)) * 3 == entry->or);
|
|
||||||
|
|
||||||
switch (entry->type) {
|
switch (entry->type) {
|
||||||
case OUTPUT_ANALOG:
|
case OUTPUT_ANALOG:
|
||||||
|
@ -5625,6 +5619,16 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dcb->version < 0x40) {
|
||||||
|
/* Normal entries consist of a single bit, but dual link has
|
||||||
|
* the next most significant bit set too
|
||||||
|
*/
|
||||||
|
entry->duallink_possible =
|
||||||
|
((1 << (ffs(entry->or) - 1)) * 3 == entry->or);
|
||||||
|
} else {
|
||||||
|
entry->duallink_possible = (entry->sorconf.link == 3);
|
||||||
|
}
|
||||||
|
|
||||||
/* unsure what DCB version introduces this, 3.0? */
|
/* unsure what DCB version introduces this, 3.0? */
|
||||||
if (conf & 0x100000)
|
if (conf & 0x100000)
|
||||||
entry->i2c_upper_default = true;
|
entry->i2c_upper_default = true;
|
||||||
|
|
Loading…
Reference in New Issue