diff options
author | Keith Packard <keithp@keithp.com> | 2009-06-25 02:09:15 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-07-02 19:15:01 -0400 |
commit | b3d254955fb5797232ec329b136c363aa4fdaa05 (patch) | |
tree | 84248c6cbe0be526ef3a71812354d1d57abb3f56 /drivers | |
parent | 1ae8c0a56eeb3ed358b78ccadd024d6b721f26bc (diff) |
drm/i915: Adjust DisplayPort clocks to use 96MHz reference
For some reason, the DP clocks were based off a 100MHz reference instead of
the standard 96MHz reference. This caused some DP monitors to fail to lock
to the signal.
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 59de4951b6ee..508838ee31e0 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -816,24 +816,21 @@ intel_find_pll_g4x_dp(const intel_limit_t *limit, struct drm_crtc *crtc, | |||
816 | { | 816 | { |
817 | intel_clock_t clock; | 817 | intel_clock_t clock; |
818 | if (target < 200000) { | 818 | if (target < 200000) { |
819 | clock.dot = 161670; | ||
820 | clock.p = 20; | ||
821 | clock.p1 = 2; | 819 | clock.p1 = 2; |
822 | clock.p2 = 10; | 820 | clock.p2 = 10; |
823 | clock.n = 0x01; | 821 | clock.n = 2; |
824 | clock.m = 97; | 822 | clock.m1 = 23; |
825 | clock.m1 = 0x10; | 823 | clock.m2 = 8; |
826 | clock.m2 = 0x05; | ||
827 | } else { | 824 | } else { |
828 | clock.dot = 270000; | ||
829 | clock.p = 10; | ||
830 | clock.p1 = 1; | 825 | clock.p1 = 1; |
831 | clock.p2 = 10; | 826 | clock.p2 = 10; |
832 | clock.n = 0x02; | 827 | clock.n = 1; |
833 | clock.m = 108; | 828 | clock.m1 = 14; |
834 | clock.m1 = 0x12; | 829 | clock.m2 = 2; |
835 | clock.m2 = 0x06; | ||
836 | } | 830 | } |
831 | clock.m = 5 * (clock.m1 + 2) + (clock.m2 + 2); | ||
832 | clock.p = (clock.p1 * clock.p2); | ||
833 | clock.dot = 96000 * clock.m / (clock.n + 2) / clock.p; | ||
837 | memcpy(best_clock, &clock, sizeof(intel_clock_t)); | 834 | memcpy(best_clock, &clock, sizeof(intel_clock_t)); |
838 | return true; | 835 | return true; |
839 | } | 836 | } |