diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-03-17 23:38:04 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-04-08 20:12:15 -0400 |
commit | 2eb92c80074ecfbc691741720382007417f64523 (patch) | |
tree | 98c4dd5fe49dfb2049a2e186a52c57451af6f8a2 /drivers/gpu | |
parent | f3bbb9ccbf2a0362363ce6d7e4e57dbf34a5cef1 (diff) |
drm/nv40: add LVDS table quirk for Dell Latitude D620
Should fix:
https://bugzilla.redhat.com/show_bug.cgi?id=505132
https://bugzilla.redhat.com/show_bug.cgi?id=543091
https://bugzilla.redhat.com/show_bug.cgi?id=530425
https://bugs.edge.launchpad.net/ubuntu/+source/xserver-xorg-video-nouveau/
+bug/539730
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bios.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index 075eb894648f..ad6c2d4520ae 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | |||
@@ -3659,6 +3659,21 @@ int nouveau_bios_parse_lvds_table(struct drm_device *dev, int pxclk, bool *dl, b | |||
3659 | break; | 3659 | break; |
3660 | } | 3660 | } |
3661 | 3661 | ||
3662 | /* Dell Latitude D620 reports a too-high value for the dual-link | ||
3663 | * transition freq, causing us to program the panel incorrectly. | ||
3664 | * | ||
3665 | * It doesn't appear the VBIOS actually uses its transition freq | ||
3666 | * (90000kHz), instead it uses the "Number of LVDS channels" field | ||
3667 | * out of the panel ID structure (http://www.spwg.org/). | ||
3668 | * | ||
3669 | * For the moment, a quirk will do :) | ||
3670 | */ | ||
3671 | if ((dev->pdev->device == 0x01d7) && | ||
3672 | (dev->pdev->subsystem_vendor == 0x1028) && | ||
3673 | (dev->pdev->subsystem_device == 0x01c2)) { | ||
3674 | bios->fp.duallink_transition_clk = 80000; | ||
3675 | } | ||
3676 | |||
3662 | /* set dual_link flag for EDID case */ | 3677 | /* set dual_link flag for EDID case */ |
3663 | if (pxclk && (chip_version < 0x25 || chip_version > 0x28)) | 3678 | if (pxclk && (chip_version < 0x25 || chip_version > 0x28)) |
3664 | bios->fp.dual_link = (pxclk >= bios->fp.duallink_transition_clk); | 3679 | bios->fp.dual_link = (pxclk >= bios->fp.duallink_transition_clk); |