Skip to content

Commit

Permalink
viafb: merge viafb_update_viafb_par in viafb_update_fix
Browse files Browse the repository at this point in the history
Shrink and merge viafb_update_viafb_par.  This removes a lot of duplicated
data in viafb_par.  Use the relevant data of fb_info instead.  On the way
it removes an inconsistency in handling a second framebuffer which only
worked because viafbinfo1->par is modified to point to the same viafb_par
as viafbinfo->par.

Code cleanup only, no runtime change expected.

Signed-off-by: Florian Tobias Schandinat <[email protected]>
Cc: Scott Fang <[email protected]>
Cc: Joseph Chan <[email protected]>
Cc: Harald Welte <[email protected]>
Cc: Jonathan Corbet <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
schandinat authored and torvalds committed Sep 23, 2009
1 parent 3915a92 commit 81228a3
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 49 deletions.
13 changes: 5 additions & 8 deletions drivers/video/via/accel.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ void viafb_init_accel(void)

void viafb_init_2d_engine(void)
{
u32 dwVQStartAddr, dwVQEndAddr;
u32 dwVQStartAddr, dwVQEndAddr, linesize;
u32 dwVQLen, dwVQStartL, dwVQEndL, dwVQStartEndH;

/* init 2D engine regs to reset 2D engine */
Expand Down Expand Up @@ -191,17 +191,14 @@ void viafb_init_2d_engine(void)
}
}

viafb_set_2d_color_depth(viaparinfo->bpp);
viafb_set_2d_color_depth(viafbinfo->var.bits_per_pixel);

writel(0x0, viaparinfo->io_virt + VIA_REG_SRCBASE);
writel(0x0, viaparinfo->io_virt + VIA_REG_DSTBASE);

writel(VIA_PITCH_ENABLE |
(((viaparinfo->hres *
viaparinfo->bpp >> 3) >> 3) | (((viaparinfo->hres *
viaparinfo->
bpp >> 3) >> 3) << 16)),
viaparinfo->io_virt + VIA_REG_PITCH);
linesize = viafbinfo->var.xres * viafbinfo->var.bits_per_pixel >> 3;
writel(VIA_PITCH_ENABLE | (linesize >> 3) | ((linesize >> 3) << 16),
viaparinfo->io_virt + VIA_REG_PITCH);
}

void viafb_set_2d_color_depth(int bpp)
Expand Down
44 changes: 10 additions & 34 deletions drivers/video/via/viafbdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,21 +100,17 @@ static const struct viafb_modeinfo viafb_modentry[] = {

static struct fb_ops viafb_ops;

static int viafb_update_fix(struct fb_fix_screeninfo *fix, struct fb_info *info)
{
struct viafb_par *ppar;
ppar = info->par;

DEBUG_MSG(KERN_INFO "viafb_update_fix!\n");

fix->visual =
ppar->bpp == 8 ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
fix->line_length = ppar->linelength;
static void viafb_update_fix(struct fb_info *info)
{
u32 bpp = info->var.bits_per_pixel;

return 0;
info->fix.visual =
bpp == 8 ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
info->fix.line_length =
((info->var.xres_virtual + 7) & ~7) * bpp / 8;
}


static void viafb_setup_fixinfo(struct fb_fix_screeninfo *fix,
struct viafb_par *viaparinfo)
{
Expand Down Expand Up @@ -147,19 +143,6 @@ static int viafb_release(struct fb_info *info, int user)
return 0;
}

static void viafb_update_viafb_par(struct fb_info *info)
{
struct viafb_par *ppar;

ppar = info->par;
ppar->bpp = info->var.bits_per_pixel;
ppar->linelength = ((info->var.xres_virtual + 7) & ~7) * ppar->bpp / 8;
ppar->hres = info->var.xres;
ppar->vres = info->var.yres;
ppar->xoffset = info->var.xoffset;
ppar->yoffset = info->var.yoffset;
}

static int viafb_check_var(struct fb_var_screeninfo *var,
struct fb_info *info)
{
Expand Down Expand Up @@ -255,12 +238,7 @@ static int viafb_set_par(struct fb_info *info)
/*We should set memory offset according virtual_x */
/*Fix me:put this function into viafb_setmode */
viafb_memory_pitch_patch(info);

/* Update ***fb_par information */
viafb_update_viafb_par(info);

/* Update other fixed information */
viafb_update_fix(&info->fix, info);
viafb_update_fix(info);
viafb_bpp = info->var.bits_per_pixel;
/* Update viafb_accel, it is necessary to our 2D accelerate */
viafb_accel = info->var.accel_flags;
Expand Down Expand Up @@ -2323,15 +2301,13 @@ static int __devinit via_pci_probe(void)
viafb_setup_fixinfo(&viafbinfo1->fix, viaparinfo1);
viafb_check_var(&default_var, viafbinfo1);
viafbinfo1->var = default_var;
viafb_update_viafb_par(viafbinfo);
viafb_update_fix(&viafbinfo1->fix, viafbinfo1);
viafb_update_fix(viafbinfo1);
}

viafb_setup_fixinfo(&viafbinfo->fix, viaparinfo);
viafb_check_var(&default_var, viafbinfo);
viafbinfo->var = default_var;
viafb_update_viafb_par(viafbinfo);
viafb_update_fix(&viafbinfo->fix, viafbinfo);
viafb_update_fix(viafbinfo);
default_var.activate = FB_ACTIVATE_NOW;
fb_alloc_cmap(&viafbinfo->cmap, 256, 0);

Expand Down
7 changes: 0 additions & 7 deletions drivers/video/via/viafbdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,6 @@
#define VERSION_MINOR 4

struct viafb_par {
int bpp;
int hres;
int vres;
int linelength;
u32 xoffset;
u32 yoffset;

void __iomem *fbmem_virt; /*framebuffer virtual memory address */
void __iomem *io_virt; /*iospace virtual memory address */
unsigned int fbmem; /*framebuffer physical memory address */
Expand Down

0 comments on commit 81228a3

Please sign in to comment.