Merge tag 'drm-misc-next-2022-08-20-1' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-block.git] / drivers / video / fbdev / i740fb.c
index 23329de28e771460d2e11f773f7d1c783f8a8aa6..199f786f9eedec1d7ec185963c48301bda2ad485 100644 (file)
@@ -401,7 +401,7 @@ static int i740fb_decode_var(const struct fb_var_screeninfo *var,
        u32 xres, right, hslen, left, xtotal;
        u32 yres, lower, vslen, upper, ytotal;
        u32 vxres, xoffset, vyres, yoffset;
-       u32 bpp, base, dacspeed24, mem;
+       u32 bpp, base, dacspeed24, mem, freq;
        u8 r7;
        int i;
 
@@ -644,7 +644,12 @@ static int i740fb_decode_var(const struct fb_var_screeninfo *var,
        par->atc[VGA_ATC_OVERSCAN] = 0;
 
        /* Calculate VCLK that most closely matches the requested dot clock */
-       i740_calc_vclk((((u32)1e9) / var->pixclock) * (u32)(1e3), par);
+       freq = (((u32)1e9) / var->pixclock) * (u32)(1e3);
+       if (freq < I740_RFREQ_FIX) {
+               fb_dbg(info, "invalid pixclock\n");
+               freq = I740_RFREQ_FIX;
+       }
+       i740_calc_vclk(freq, par);
 
        /* Since we program the clocks ourselves, always use VCLK2. */
        par->misc |= 0x0C;