summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nv04_dfp.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-11-18 11:55:43 +1000
committerBen Skeggs <bskeggs@redhat.com>2011-12-21 19:01:43 +1000
commitabbd3f8e3bea4b2b0490260e67357067a2dc2039 (patch)
tree09674782d6f7444e0b9ad0091eb7101649aaa7d6 /drivers/gpu/drm/nouveau/nv04_dfp.c
parentd4c2c99bdc8385a0e51ce4ef2df124d14b6b9c9d (diff)
downloadlwn-abbd3f8e3bea4b2b0490260e67357067a2dc2039.tar.gz
lwn-abbd3f8e3bea4b2b0490260e67357067a2dc2039.zip
drm/nv04/disp: handle dual-link spwg panels without needing quirks
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv04_dfp.c')
-rw-r--r--drivers/gpu/drm/nouveau/nv04_dfp.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nv04_dfp.c b/drivers/gpu/drm/nouveau/nv04_dfp.c
index dff3ad594e0e..2258746016f8 100644
--- a/drivers/gpu/drm/nouveau/nv04_dfp.c
+++ b/drivers/gpu/drm/nouveau/nv04_dfp.c
@@ -341,10 +341,15 @@ static void nv04_dfp_mode_set(struct drm_encoder *encoder,
output_mode->clock > 165000)
regp->fp_control |= (2 << 24);
if (nv_encoder->dcb->type == OUTPUT_LVDS) {
- bool duallink, dummy;
+ bool duallink = false, dummy;
+ if (nv_connector->edid &&
+ nv_connector->type == DCB_CONNECTOR_LVDS_SPWG) {
+ duallink = (((u8 *)nv_connector->edid)[121] == 2);
+ } else {
+ nouveau_bios_parse_lvds_table(dev, output_mode->clock,
+ &duallink, &dummy);
+ }
- nouveau_bios_parse_lvds_table(dev, output_mode->clock,
- &duallink, &dummy);
if (duallink)
regp->fp_control |= (8 << 28);
} else