s3c2410fb: fix clockrate calculation
authorBen Dooks <ben@simtec.co.uk>
Tue, 22 Sep 2009 23:47:43 +0000 (16:47 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 23 Sep 2009 14:39:56 +0000 (07:39 -0700)
In the final part of the calculation for the tft display clockrate we
divide the output pf s3c2410fb_calc_pixclk() by 2 which leaves us with a
rounding error if the result is odd.

Change to using DIV_ROUND_UP() to ensure that we always choose a higher
divisor and thus a lower frequency.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/s3c2410fb.c

index 5ffca2adc6a80b7f1ccb2b826d6352ff5e976d6e..aac661225c78903d512fb2cb56b48095ee5f6c7a 100644 (file)
@@ -369,7 +369,9 @@ static void s3c2410fb_activate_var(struct fb_info *info)
        void __iomem *regs = fbi->io;
        int type = fbi->regs.lcdcon1 & S3C2410_LCDCON1_TFT;
        struct fb_var_screeninfo *var = &info->var;
-       int clkdiv = s3c2410fb_calc_pixclk(fbi, var->pixclock) / 2;
+       int clkdiv;
+
+       clkdiv = DIV_ROUND_UP(s3c2410fb_calc_pixclk(fbi, var->pixclock), 2);
 
        dprintk("%s: var->xres  = %d\n", __func__, var->xres);
        dprintk("%s: var->yres  = %d\n", __func__, var->yres);