viafb: merge viafb_update_viafb_par in viafb_update_fix
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 <FlorianSchandinat@gmx.de> Cc: Scott Fang <ScottFang@viatech.com.cn> Cc: Joseph Chan <JosephChan@via.com.tw> Cc: Harald Welte <laforge@gnumonks.org> Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3915a927aa
commit
81228a36a5
@ -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 */
|
||||
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
static void viafb_update_fix(struct fb_info *info)
|
||||
{
|
||||
struct viafb_par *ppar;
|
||||
ppar = info->par;
|
||||
u32 bpp = info->var.bits_per_pixel;
|
||||
|
||||
DEBUG_MSG(KERN_INFO "viafb_update_fix!\n");
|
||||
|
||||
fix->visual =
|
||||
ppar->bpp == 8 ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
|
||||
fix->line_length = ppar->linelength;
|
||||
|
||||
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)
|
||||
{
|
||||
@ -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)
|
||||
{
|
||||
@ -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;
|
||||
@ -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);
|
||||
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user