diff options
-rw-r--r-- | drivers/staging/xgifb/XGI_main_26.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/staging/xgifb/XGI_main_26.c b/drivers/staging/xgifb/XGI_main_26.c index 4403e5f8059..f8b88add952 100644 --- a/drivers/staging/xgifb/XGI_main_26.c +++ b/drivers/staging/xgifb/XGI_main_26.c | |||
@@ -1364,26 +1364,16 @@ static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive, | |||
1364 | } | 1364 | } |
1365 | 1365 | ||
1366 | #ifdef XGIFB_PAN | 1366 | #ifdef XGIFB_PAN |
1367 | static int XGIfb_pan_var(struct fb_var_screeninfo *var) | 1367 | static int XGIfb_pan_var(struct fb_var_screeninfo *var, struct fb_info *info) |
1368 | { | 1368 | { |
1369 | unsigned int base; | 1369 | unsigned int base; |
1370 | 1370 | ||
1371 | /* printk("Inside pan_var"); */ | 1371 | /* printk("Inside pan_var"); */ |
1372 | 1372 | ||
1373 | if (var->xoffset > (var->xres_virtual - var->xres)) { | 1373 | base = var->yoffset * info->var.xres_virtual + var->xoffset; |
1374 | /* printk("Pan: xo: %d xv %d xr %d\n", | ||
1375 | var->xoffset, var->xres_virtual, var->xres); */ | ||
1376 | return -EINVAL; | ||
1377 | } | ||
1378 | if (var->yoffset > (var->yres_virtual - var->yres)) { | ||
1379 | /* printk("Pan: yo: %d yv %d yr %d\n", | ||
1380 | var->yoffset, var->yres_virtual, var->yres); */ | ||
1381 | return -EINVAL; | ||
1382 | } | ||
1383 | base = var->yoffset * var->xres_virtual + var->xoffset; | ||
1384 | 1374 | ||
1385 | /* calculate base bpp dep. */ | 1375 | /* calculate base bpp dep. */ |
1386 | switch (var->bits_per_pixel) { | 1376 | switch (info->var.bits_per_pixel) { |
1387 | case 16: | 1377 | case 16: |
1388 | base >>= 1; | 1378 | base >>= 1; |
1389 | break; | 1379 | break; |
@@ -1681,9 +1671,9 @@ static int XGIfb_pan_display(struct fb_var_screeninfo *var, | |||
1681 | 1671 | ||
1682 | /* printk("\nInside pan_display:\n"); */ | 1672 | /* printk("\nInside pan_display:\n"); */ |
1683 | 1673 | ||
1684 | if (var->xoffset > (var->xres_virtual - var->xres)) | 1674 | if (var->xoffset > (info->var.xres_virtual - info->var.xres)) |
1685 | return -EINVAL; | 1675 | return -EINVAL; |
1686 | if (var->yoffset > (var->yres_virtual - var->yres)) | 1676 | if (var->yoffset > (info->var.yres_virtual - info->var.yres)) |
1687 | return -EINVAL; | 1677 | return -EINVAL; |
1688 | 1678 | ||
1689 | if (var->vmode & FB_VMODE_YWRAP) { | 1679 | if (var->vmode & FB_VMODE_YWRAP) { |
@@ -1696,7 +1686,7 @@ static int XGIfb_pan_display(struct fb_var_screeninfo *var, | |||
1696 | > info->var.yres_virtual) | 1686 | > info->var.yres_virtual) |
1697 | return -EINVAL; | 1687 | return -EINVAL; |
1698 | } | 1688 | } |
1699 | err = XGIfb_pan_var(var); | 1689 | err = XGIfb_pan_var(var, info); |
1700 | if (err < 0) | 1690 | if (err < 0) |
1701 | return err; | 1691 | return err; |
1702 | 1692 | ||