From: Krzysztof Helt Date: Tue, 8 May 2007 07:39:33 +0000 (-0700) Subject: pm2fb: pixclock setting restriction X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=d4a96b53125c3d31266c05f2a8432d956dd26141;p=openwrt%2Fstaging%2Fblogic.git 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 Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- 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, s32 delta = 1000; *mm = *nn = *pp = 0; - for (n = 1; n; n++) { - for ( m = 1; m; m++) { + for ( m = 1; m < 128; m++) { + for (n = 2 * m + 1; n; n++) { for ( p = 0; p < 2; p++) { - f = PM2_REFERENCE_CLOCK * n / (m * (1 << (p + 1))); + f = ( PM2_REFERENCE_CLOCK >> ( p + 1 )) * n / m; if ( clk > f - delta && clk < f + delta ) { delta = ( clk > f ) ? clk - f : f - clk; *mm=m;