diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2007-10-16 01:29:52 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 09:43:22 -0700 |
commit | d4b766a0bdab8d07b720c8d0a84292949a7d58bd (patch) | |
tree | 995e1dc7b1f0c172c4f53acad3a236138d378ce2 /drivers/video/s3fb.c | |
parent | d7dd91ff236b90a8aca2d619554b07bcb82953c7 (diff) |
svgalib: mode selection updates
This patch changes mode selection matching algorithm. It allows to choose
mode with matching depth even when requested color lengths are greater than
color lengths of every mode with requested color depth.
It also fixes bug in s3fb - wrong error value returned when format is not
supported by chip.
Signed-off-by: Ondrej Zajicek <santiago@crfreenet.org>
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/s3fb.c')
-rw-r--r-- | drivers/video/s3fb.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/video/s3fb.c b/drivers/video/s3fb.c index d11735895a0..a96ac439217 100644 --- a/drivers/video/s3fb.c +++ b/drivers/video/s3fb.c @@ -403,8 +403,13 @@ static int s3fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) /* Find appropriate format */ rv = svga_match_format (s3fb_formats, var, NULL); - if ((rv < 0) || ((par->chip == CHIP_988_VIRGE_VX) ? (rv == 7) : (rv == 6))) - { /* 24bpp on VIRGE VX, 32bpp on others */ + + /* 32bpp mode is not supported on VIRGE VX, + 24bpp is not supported on others */ + if ((par->chip == CHIP_988_VIRGE_VX) ? (rv == 7) : (rv == 6)) + rv = -EINVAL; + + if (rv < 0) { printk(KERN_ERR "fb%d: unsupported mode requested\n", info->node); return rv; } |