if (var->yres < MIN_YRES)
                var->yres = MIN_YRES;
        if (var->xres > fbi->max_xres)
-               var->xres = fbi->max_xres;
+               return -EINVAL;
        if (var->yres > fbi->max_yres)
-               var->yres = fbi->max_yres;
+               return -EINVAL;
        var->xres_virtual =
                max(var->xres_virtual, var->xres);
        var->yres_virtual =
        LCCR0 &= ~LCCR0_LDM;    /* Enable LCD Disable Done Interrupt */
        LCCR0 |= LCCR0_DIS;     /* Disable LCD Controller */
 
-       schedule_timeout(20 * HZ / 1000);
+       schedule_timeout(200 * HZ / 1000);
        remove_wait_queue(&fbi->ctrlr_wait, &wait);
 
        /* disable LCD controller clock */
        struct pxafb_mach_info *inf;
        int ret;
 
-       dev_dbg(dev, "pxafb_probe\n");
+       dev_dbg(&dev->dev, "pxafb_probe\n");
 
        inf = dev->dev.platform_data;
        ret = -ENOMEM;