diff --git a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c index a2692a9dca4e693f7a64ceee78c35a2a55e0c571..54d10d8c95dae640c23ffaa04b53260b94d12afb 100644 --- a/drivers/video/riva/fbdev.c +++ b/drivers/video/riva/fbdev.c @@ -200,8 +200,6 @@ struct fb_info *riva_boards = NULL; /* command line data, set in rivafb_setup() */ static char fontname[40] __initdata = { 0 }; -static u32 pseudo_palette[17]; -static char nomove = 0; static char nohwcursor __initdata = 0; static char noblink = 0; #ifdef CONFIG_MTRR @@ -480,7 +478,7 @@ static void rivafb_download_cursor(struct riva_par *par) * * CALLED FROM: * rivafb_set_font() - * rivafb_set_var() + * rivafb_set_par() */ static void rivafb_create_cursor(struct riva_par *par, int width, int height) { @@ -713,7 +711,7 @@ static void riva_load_state(struct riva_par *par, struct riva_regs *regs) * Calculate some timings and then send em off to riva_load_state(). * * CALLED FROM: - * rivafb_set_var() + * rivafb_set_par() */ static void riva_load_video_mode(struct fb_info *info, struct fb_var_screeninfo *video_mode) @@ -805,7 +803,7 @@ static void riva_load_video_mode(struct fb_info *info, * * * CALLED FROM: - * rivafb_set_var() + * rivafb_check_var() */ static int rivafb_do_maximize(struct fb_info *info, struct fb_var_screeninfo *var, @@ -1234,6 +1232,8 @@ static int rivafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) static int rivafb_set_par(struct fb_info *info) { + struct riva_par *par = (struct riva_par *) info->par; + switch (info->var.bits_per_pixel) { case 8: info->fix.line_length = info->var.xres_virtual; @@ -1253,49 +1253,11 @@ static int rivafb_set_par(struct fb_info *info) disp->dispsw.cursor = rivafb_cursor; disp->dispsw.set_font = rivafb_set_font; } + rivafb_create_cursor(par, fontwidth(dsp), fontheight(dsp)); */ - return 0; -} - -static int rivafb_set_var(struct fb_var_screeninfo *var, int con, - struct fb_info *info) -{ - struct riva_par *par = (struct riva_par *) info->par; - unsigned chgvar = 0; - - /* if var has changed, we should call changevar() later */ - if (con >= 0) { - chgvar = ((info->var.xres != var->xres) || - (info->var.yres != var->yres) || - (info->var.xres_virtual != var->xres_virtual) || - (info->var.yres_virtual != var->yres_virtual) || - (info->var.accel_flags != var->accel_flags) || - (info->var.bits_per_pixel != var->bits_per_pixel) - || memcmp(&info->var.red, &var->red, - sizeof(var->red)) - || memcmp(&info->var.green, &var->green, - sizeof(var->green)) - || memcmp(&info->var.blue, &var->blue, - sizeof(var->blue))); - } - - rivafb_check_var(var, info); - - if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) { - info->var = *var; - - if (chgvar) { - rivafb_set_par(info); - gen_set_disp(con, info); - - if (info && info->changevar) - info->changevar(con); - } - //rivafb_create_cursor(par, fontwidth(dsp), fontheight(dsp)); - riva_load_video_mode(info, var); - riva_setup_accel(par); - } + riva_load_video_mode(info, &info->var); + riva_setup_accel(par); return 0; } @@ -1401,9 +1363,11 @@ static struct fb_ops riva_fb_ops = { owner: THIS_MODULE, fb_get_fix: gen_get_fix, fb_get_var: gen_get_var, - fb_set_var: rivafb_set_var, + fb_set_var: gen_set_var, fb_get_cmap: gen_get_cmap, fb_set_cmap: gen_set_cmap, + fb_check_var: rivafb_check_var, + fb_set_par: rivafb_set_par, fb_setcolreg: rivafb_setcolreg, fb_pan_display: rivafb_pan_display, fb_blank: rivafb_blank, @@ -1413,22 +1377,6 @@ static struct fb_ops riva_fb_ops = { fb_rasterimg: rivafb_rasterimg, }; -static int __devinit riva_init_disp(struct fb_info *info) -{ - struct display *disp; - - assert(info != NULL); - - disp = kmalloc(sizeof(struct display), GFP_KERNEL); - if (!disp) return -1; - memset(disp, 0, sizeof(struct display)); - - info->disp = disp; - - gen_set_disp(-1, info); - return 0; -} - static int __devinit riva_set_fbinfo(struct fb_info *info) { strcpy(info->modename, rivafb_fix.id); @@ -1439,7 +1387,6 @@ static int __devinit riva_set_fbinfo(struct fb_info *info) /* FIXME: set monspecs to what??? */ info->display_fg = NULL; - info->pseudo_palette = pseudo_palette; info->currcon = -1; strncpy(info->fontname, fontname, sizeof(info->fontname)); info->fontname[sizeof(info->fontname) - 1] = 0; @@ -1459,8 +1406,7 @@ static int __devinit riva_set_fbinfo(struct fb_info *info) info->var = rivafb_default_var; fb_alloc_cmap(&info->cmap, riva_get_cmap_len(&info->var), 0); - if (riva_init_disp(info) < 0) /* must be done last */ - return -1; + gen_set_var(&info->var, -1, info); return 0; } @@ -1478,15 +1424,18 @@ static int __devinit rivafb_init_one(struct pci_dev *pd, struct riva_chip_info *rci = &riva_chip_info[ent->driver_data]; struct riva_par *default_par; struct fb_info *info; + int size; assert(pd != NULL); assert(rci != NULL); - info = kmalloc(sizeof(struct fb_info), GFP_KERNEL); + size = sizeof(struct fb_info) + sizeof(struct display) + sizeof(u32) * 16; + + info = kmalloc(size, GFP_KERNEL); if (!info) goto err_out; - memset(info, 0, sizeof(struct fb_info)); + memset(info, 0, size); default_par = kmalloc(sizeof(struct riva_par), GFP_KERNEL); if (!default_par) @@ -1494,6 +1443,9 @@ static int __devinit rivafb_init_one(struct pci_dev *pd, memset(default_par, 0, sizeof(struct riva_par)); + info->disp = (struct display *)(info + 1); + info->pseudo_palette = (void *)(info->disp + 1); + strcat(rivafb_fix.id, rci->name); default_par->riva.Architecture = rci->arch_rev; @@ -1698,8 +1650,6 @@ int __init rivafb_setup(char *options) } else if (!strncmp(this_opt, "noblink", 7)) { noblink = 1; - } else if (!strncmp(this_opt, "nomove", 6)) { - nomove = 1; #ifdef CONFIG_MTRR } else if (!strncmp(this_opt, "nomtrr", 6)) { nomtrr = 1; @@ -1752,8 +1702,6 @@ module_exit(rivafb_exit); MODULE_PARM(font, "s"); MODULE_PARM_DESC(font, "Specifies one of the compiled-in fonts (default=none)"); -MODULE_PARM(nomove, "i"); -MODULE_PARM_DESC(nomove, "Enables YSCROLL_NOMOVE (0 or 1=enabled) (default=0)"); MODULE_PARM(nohwcursor, "i"); MODULE_PARM_DESC(nohwcursor, "Disables hardware cursor (0 or 1=disabled) (default=0)"); MODULE_PARM(noblink, "i"); diff --git a/drivers/video/sstfb.c b/drivers/video/sstfb.c index eac733736b5a77a67754c1b5e344fd6030802702..5051c4cbc357834e9f33f38198abef8835b4b09f 100644 --- a/drivers/video/sstfb.c +++ b/drivers/video/sstfb.c @@ -1741,9 +1741,7 @@ int __init sstfb_setup(char *options) if (!options || !*options) return 0; - for(this_opt = strtok(options, ","); this_opt; - this_opt = strtok(NULL, ",")) { //XXX -//XXX while ((this_opt = strsep(&options, ",")) != NULL) { + while ((this_opt = strsep(&options, ",")) != NULL) { if (!*this_opt) continue; f_ddprintk("option %s\n", this_opt);