r2155
dslinux_gpf at dslinux.in-berlin.de
dslinux_gpf at dslinux.in-berlin.de
Sat Mar 8 01:04:43 CET 2008
Author: gpf
Date: 2008-03-08 01:04:43 +0100 (Sat, 08 Mar 2008)
New Revision: 2155
Log:
fixes 512X256 background framebuffer usage when setting xres=virtual_xres and yres=virtual_yres
Modified: trunk/linux-2.6.x/drivers/video/ndsfb.c
===================================================================
--- trunk/linux-2.6.x/drivers/video/ndsfb.c 2008-03-07 23:57:11 UTC (rev 2154)
+++ trunk/linux-2.6.x/drivers/video/ndsfb.c 2008-03-08 00:04:43 UTC (rev 2155)
@@ -275,59 +275,81 @@
int scale=0;int xwidth=256;int yheight=192;
static int ndsfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
{
- /*
- * FB_VMODE_CONUPDATE and FB_VMODE_SMOOTH_XPAN are equal!
- * as FB_VMODE_SMOOTH_XPAN is only used internally
- */
- if (var->vmode & FB_VMODE_CONUPDATE) {
- var->vmode |= FB_VMODE_YWRAP;
- var->xoffset = info->var.xoffset;
- var->yoffset = info->var.yoffset;
- }
-
/*
* Some very basic checks
*/
if ((var->xres == var->xres_virtual) && (var->yres == var->yres_virtual))
{
- scale=1;
- xwidth=var->xres;
- yheight=var->yres;
- var->xres_virtual = 256;
- var->yres_virtual = 512;
+
+
+ if (info->par != 0) {
+ var->xres_virtual = 256;
+ var->yres_virtual = 256;
+
+ if (var->bits_per_pixel != 16 && var->bits_per_pixel != 8)
+ return -EINVAL;
+
+ if (var->xres_virtual < var->xoffset + var->xres)
+ return -EINVAL;
+ if (var->yres_virtual < var->yoffset + var->yres)
+ return -EINVAL;
+ }
+ else
+ {
+ scale=1;
+ xwidth=var->xres;
+ yheight=var->yres;
+ var->xres_virtual = var->xres > 256 ? 512 : 256;
+ var->yres_virtual = var->xres_virtual > 256 ? 256 : 512;
+ }
}
else
{
+ /*
+ * FB_VMODE_CONUPDATE and FB_VMODE_SMOOTH_XPAN are equal!
+ * as FB_VMODE_SMOOTH_XPAN is only used internally
+ */
+
+ if (var->vmode & FB_VMODE_CONUPDATE) {
+ var->vmode |= FB_VMODE_YWRAP;
+ var->xoffset = info->var.xoffset;
+ var->yoffset = info->var.yoffset;
+ }
+
scale=0;
if (var->xres != 256)
return -EINVAL;
if (var->yres != 192)
return -EINVAL;
- }
-
- if (var->bits_per_pixel != 16 && var->bits_per_pixel != 8)
- return -EINVAL;
-
- if (info->par != 0) {
- var->xres_virtual = 256;
- var->yres_virtual = 256;
- } else {
- if (var->xres_virtual > 256) {
- var->xres_virtual = 512;
+ if (info->par != 0) {
+ var->xres_virtual = 256;
var->yres_virtual = 256;
} else {
- var->xres_virtual = 256;
- var->yres_virtual = var->yres_virtual > 256 ? 512 : 256;
+ if (var->xres_virtual > 256) {
+ var->xres_virtual = 512;
+ var->yres_virtual = 256;
+ } else {
+ var->xres_virtual = 256;
+ var->yres_virtual = var->yres_virtual > 256 ? 512 : 256;
+ }
}
- }
- if (var->xres_virtual < var->xoffset + var->xres)
+ if (var->bits_per_pixel != 16 && var->bits_per_pixel != 8)
return -EINVAL;
- if (var->yres_virtual < var->yoffset + var->yres)
- return -EINVAL;
+ if (var->xres_virtual < var->xoffset + var->xres)
+ return -EINVAL;
+ if (var->yres_virtual < var->yoffset + var->yres)
+ return -EINVAL;
+
+ }
+
+
+
+
+
switch (var->bits_per_pixel) {
case 8:
var->red.length = 5;
More information about the dslinux-commit
mailing list