|
@@ -1333,19 +1333,14 @@ sisfb_set_base_CRT2(struct sis_video_info *ivideo, unsigned int base)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-sisfb_pan_var(struct sis_video_info *ivideo, struct fb_var_screeninfo *var)
|
|
|
+sisfb_pan_var(struct sis_video_info *ivideo, struct fb_info *info,
|
|
|
+ struct fb_var_screeninfo *var)
|
|
|
{
|
|
|
- if(var->xoffset > (var->xres_virtual - var->xres)) {
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
- if(var->yoffset > (var->yres_virtual - var->yres)) {
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
-
|
|
|
- ivideo->current_base = (var->yoffset * var->xres_virtual) + var->xoffset;
|
|
|
+ ivideo->current_base = var->yoffset * info->var.xres_virtual
|
|
|
+ + var->xoffset;
|
|
|
|
|
|
/* calculate base bpp dep. */
|
|
|
- switch(var->bits_per_pixel) {
|
|
|
+ switch (info->var.bits_per_pixel) {
|
|
|
case 32:
|
|
|
break;
|
|
|
case 16:
|
|
@@ -1635,20 +1630,15 @@ sisfb_pan_display(struct fb_var_screeninfo *var, struct fb_info* info)
|
|
|
struct sis_video_info *ivideo = (struct sis_video_info *)info->par;
|
|
|
int err;
|
|
|
|
|
|
- if(var->xoffset > (var->xres_virtual - var->xres))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- if(var->yoffset > (var->yres_virtual - var->yres))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- if(var->vmode & FB_VMODE_YWRAP)
|
|
|
+ if (var->vmode & FB_VMODE_YWRAP)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if(var->xoffset + info->var.xres > info->var.xres_virtual ||
|
|
|
- var->yoffset + info->var.yres > info->var.yres_virtual)
|
|
|
+ if (var->xoffset + info->var.xres > info->var.xres_virtual ||
|
|
|
+ var->yoffset + info->var.yres > info->var.yres_virtual)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if((err = sisfb_pan_var(ivideo, var)) < 0)
|
|
|
+ err = sisfb_pan_var(ivideo, info, var);
|
|
|
+ if (err < 0)
|
|
|
return err;
|
|
|
|
|
|
info->var.xoffset = var->xoffset;
|