diff options
author | Krzysztof Helt <krzysztof.h1@wp.pl> | 2007-05-08 03:39:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:32 -0400 |
commit | d4a96b53125c3d31266c05f2a8432d956dd26141 (patch) | |
tree | 5c2dbe527fa673b55d8f2b5f18d6c235cc5d950d | |
parent | e5d809d774fc8aa76899bde3235afb046728feed (diff) |
pm2fb: pixclock setting restriction
This patch adds restrictions to calculations of m, n and p factors
which sets the pixclock for the Permedia 2V. I found during tests
that synchronization is unstable if m (divisor) is bigger than
half of the n (numerator). The patch disallows such settings
combination.
Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/video/pm2fb.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/video/pm2fb.c b/drivers/video/pm2fb.c index 6f634e3ae60d..2a8ba6022d3d 100644 --- a/drivers/video/pm2fb.c +++ b/drivers/video/pm2fb.c | |||
@@ -302,10 +302,10 @@ static void pm2v_mnp(u32 clk, unsigned char* mm, unsigned char* nn, | |||
302 | s32 delta = 1000; | 302 | s32 delta = 1000; |
303 | 303 | ||
304 | *mm = *nn = *pp = 0; | 304 | *mm = *nn = *pp = 0; |
305 | for (n = 1; n; n++) { | 305 | for ( m = 1; m < 128; m++) { |
306 | for ( m = 1; m; m++) { | 306 | for (n = 2 * m + 1; n; n++) { |
307 | for ( p = 0; p < 2; p++) { | 307 | for ( p = 0; p < 2; p++) { |
308 | f = PM2_REFERENCE_CLOCK * n / (m * (1 << (p + 1))); | 308 | f = ( PM2_REFERENCE_CLOCK >> ( p + 1 )) * n / m; |
309 | if ( clk > f - delta && clk < f + delta ) { | 309 | if ( clk > f - delta && clk < f + delta ) { |
310 | delta = ( clk > f ) ? clk - f : f - clk; | 310 | delta = ( clk > f ) ? clk - f : f - clk; |
311 | *mm=m; | 311 | *mm=m; |