Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 187179
b: refs/heads/master
c: bd14069
h: refs/heads/master
i:
  187177: 15476c2
  187175: edf5fcc
v: v3
  • Loading branch information
Florian Tobias Schandinat authored and Linus Torvalds committed Mar 12, 2010
1 parent dd5c431 commit 841a0a9
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 36 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dba77f8409eb861b28d295211776d953a8255ec7
refs/heads/master: bd140691bda491b417a6d1e81b03416b54cb8d8d
30 changes: 0 additions & 30 deletions trunk/drivers/video/via/hw.c
Original file line number Diff line number Diff line change
Expand Up @@ -2622,36 +2622,6 @@ void viafb_fill_var_timing_info(struct fb_var_screeninfo *var, int refresh,
}

crt_reg = crt_timing[index].crtc;
switch (var->bits_per_pixel) {
case 8:
var->red.offset = 0;
var->green.offset = 0;
var->blue.offset = 0;
var->red.length = 6;
var->green.length = 6;
var->blue.length = 6;
break;
case 16:
var->red.offset = 11;
var->green.offset = 5;
var->blue.offset = 0;
var->red.length = 5;
var->green.length = 6;
var->blue.length = 5;
break;
case 32:
var->red.offset = 16;
var->green.offset = 8;
var->blue.offset = 0;
var->red.length = 8;
var->green.length = 8;
var->blue.length = 8;
break;
default:
/* never happed, put here to keep consistent */
break;
}

var->pixclock = viafb_get_pixclock(var->xres, var->yres, refresh);
var->left_margin =
crt_reg.hor_total - (crt_reg.hor_sync_start + crt_reg.hor_sync_end);
Expand Down
61 changes: 56 additions & 5 deletions trunk/drivers/video/via/viafbdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,47 @@ static int viafb_pan_display(struct fb_var_screeninfo *var,
static struct fb_ops viafb_ops;


static void viafb_fill_var_color_info(struct fb_var_screeninfo *var, u8 depth)
{
var->grayscale = 0;
var->red.msb_right = 0;
var->green.msb_right = 0;
var->blue.msb_right = 0;
var->transp.offset = 0;
var->transp.length = 0;
var->transp.msb_right = 0;
var->nonstd = 0;
switch (depth) {
case 8:
var->bits_per_pixel = 8;
var->red.offset = 0;
var->green.offset = 0;
var->blue.offset = 0;
var->red.length = 6;
var->green.length = 6;
var->blue.length = 6;
break;
case 16:
var->bits_per_pixel = 16;
var->red.offset = 11;
var->green.offset = 5;
var->blue.offset = 0;
var->red.length = 5;
var->green.length = 6;
var->blue.length = 5;
break;
case 24:
var->bits_per_pixel = 32;
var->red.offset = 16;
var->green.offset = 8;
var->blue.offset = 0;
var->red.length = 8;
var->green.length = 8;
var->blue.length = 8;
break;
}
}

static void viafb_update_fix(struct fb_info *info)
{
u32 bpp = info->var.bits_per_pixel;
Expand All @@ -81,6 +122,7 @@ static void viafb_setup_fixinfo(struct fb_fix_screeninfo *fix,

fix->type = FB_TYPE_PACKED_PIXELS;
fix->type_aux = 0;
fix->visual = FB_VISUAL_TRUECOLOR;

fix->xpanstep = fix->ywrapstep = 0;
fix->ypanstep = 1;
Expand All @@ -103,7 +145,7 @@ static int viafb_release(struct fb_info *info, int user)
static int viafb_check_var(struct fb_var_screeninfo *var,
struct fb_info *info)
{
int htotal, vtotal;
int htotal, vtotal, depth;
struct VideoModeTable *vmode_entry;
struct viafb_par *ppar = info->par;
u32 long_refresh;
Expand All @@ -122,13 +164,22 @@ static int viafb_check_var(struct fb_var_screeninfo *var,
return -EINVAL;
}

if (24 == var->bits_per_pixel)
var->bits_per_pixel = 32;
depth = fb_get_color_depth(var, &info->fix);
if (!depth)
depth = var->bits_per_pixel;

if (var->bits_per_pixel != 8 && var->bits_per_pixel != 16 &&
var->bits_per_pixel != 32)
if (depth < 0 || depth > 32)
return -EINVAL;
else if (!depth)
depth = 24;
else if (depth <= 8)
depth = 8;
else if (depth <= 16)
depth = 16;
else
depth = 24;

viafb_fill_var_color_info(var, depth);
if ((var->xres_virtual * (var->bits_per_pixel >> 3)) & 0x1F)
/*32 pixel alignment */
var->xres_virtual = (var->xres_virtual + 31) & ~31;
Expand Down

0 comments on commit 841a0a9

Please sign in to comment.