X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Fcyber2000fb.c;h=55a3514157ed743e09035bdf9a866d8f7e942deb;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=4dca34fdf7677079c6325fd0aad2e8d4aa94239f;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/drivers/video/cyber2000fb.c b/drivers/video/cyber2000fb.c index 4dca34fdf..55a351415 100644 --- a/drivers/video/cyber2000fb.c +++ b/drivers/video/cyber2000fb.c @@ -50,7 +50,6 @@ #include #include -#include #include #include #include @@ -66,8 +65,8 @@ struct cfb_info { struct display_switch *dispsw; struct display *display; struct pci_dev *dev; - unsigned char *region; - unsigned char *regs; + unsigned char __iomem *region; + unsigned char __iomem *regs; u_int id; int func_use_count; u_long ref_ps; @@ -90,11 +89,12 @@ struct cfb_info { */ u_char ramdac_ctrl; u_char ramdac_powerdown; + + u32 pseudo_palette[16]; }; -static char default_font_storage[40]; static char *default_font = "Acorn8x8"; -MODULE_PARM(default_font, "s"); +module_param(default_font, charp, 0); MODULE_PARM_DESC(default_font, "Default font name"); /* @@ -1003,16 +1003,16 @@ static int cyber2000fb_blank(int blank, struct fb_info *info) int i; switch (blank) { - case 4: /* powerdown - both sync lines down */ + case FB_BLANK_POWERDOWN: /* powerdown - both sync lines down */ sync = EXT_SYNC_CTL_VS_0 | EXT_SYNC_CTL_HS_0; break; - case 3: /* hsync off */ + case FB_BLANK_HSYNC_SUSPEND: /* hsync off */ sync = EXT_SYNC_CTL_VS_NORMAL | EXT_SYNC_CTL_HS_0; break; - case 2: /* vsync off */ + case FB_BLANK_VSYNC_SUSPEND: /* vsync off */ sync = EXT_SYNC_CTL_VS_0 | EXT_SYNC_CTL_HS_NORMAL; break; - case 1: /* soft blank */ + case FB_BLANK_NORMAL: /* soft blank */ default: /* unblank */ break; } @@ -1063,7 +1063,6 @@ static struct fb_ops cyber2000fb_ops = { .fb_fillrect = cyber2000fb_fillrect, .fb_copyarea = cyber2000fb_copyarea, .fb_imageblit = cyber2000fb_imageblit, - .fb_cursor = soft_cursor, .fb_sync = cyber2000fb_sync, }; @@ -1224,9 +1223,7 @@ cyberpro_alloc_fb_info(unsigned int id, char *name) { struct cfb_info *cfb; - cfb = kmalloc(sizeof(struct cfb_info) + - sizeof(u32) * 16, GFP_KERNEL); - + cfb = kmalloc(sizeof(struct cfb_info), GFP_KERNEL); if (!cfb) return NULL; @@ -1282,7 +1279,7 @@ cyberpro_alloc_fb_info(unsigned int id, char *name) cfb->fb.fbops = &cyber2000fb_ops; cfb->fb.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; - cfb->fb.pseudo_palette = (void *)(cfb + 1); + cfb->fb.pseudo_palette = cfb->pseudo_palette; fb_alloc_cmap(&cfb->fb.cmap, NR_PALETTE, 0); @@ -1306,7 +1303,8 @@ cyberpro_free_fb_info(struct cfb_info *cfb) * Parse Cyber2000fb options. Usage: * video=cyber2000:font:fontname */ -int +#ifndef MODULE +static int cyber2000fb_setup(char *options) { char *opt; @@ -1319,6 +1317,8 @@ cyber2000fb_setup(char *options) continue; if (strncmp(opt, "font:", 5) == 0) { + static char default_font_storage[40]; + strlcpy(default_font_storage, opt + 5, sizeof(default_font_storage)); default_font = default_font_storage; continue; @@ -1328,6 +1328,7 @@ cyber2000fb_setup(char *options) } return 0; } +#endif /* MODULE */ /* * The CyberPro chips can be placed on many different bus types. @@ -1399,6 +1400,8 @@ static int __devinit cyberpro_common_probe(struct cfb_info *cfb) cfb->fb.var.xres, cfb->fb.var.yres, h_sync / 1000, h_sync % 1000, v_sync); + if (cfb->dev) + cfb->fb.device = &cfb->dev->dev; err = register_framebuffer(&cfb->fb); failed: @@ -1508,7 +1511,7 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb) * I/O cycles storing into a reserved memory space at * physical address 0x3000000 */ - unsigned char *iop; + unsigned char __iomem *iop; iop = ioremap(0x3000000, 0x5000); if (iop == NULL) { @@ -1522,7 +1525,7 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb) writeb(EXT_BIU_MISC, iop + 0x3ce); writeb(EXT_BIU_MISC_LIN_ENABLE, iop + 0x3cf); - iounmap((void *)iop); + iounmap(iop); #else /* * Most other machine types are "normal", so @@ -1663,7 +1666,7 @@ static void __devexit cyberpro_pci_remove(struct pci_dev *dev) } } -static int cyberpro_pci_suspend(struct pci_dev *dev, u32 state) +static int cyberpro_pci_suspend(struct pci_dev *dev, pm_message_t state) { return 0; } @@ -1715,14 +1718,14 @@ static struct pci_driver cyberpro_driver = { * * Tony: "module_init" is now required */ -int __init cyber2000fb_init(void) +static int __init cyber2000fb_init(void) { int ret = -1, err; #ifndef MODULE char *option = NULL; - if (fb_get_options("cyber2000fb", NULL)) + if (fb_get_options("cyber2000fb", &option)) return -ENODEV; cyber2000fb_setup(option); #endif @@ -1735,7 +1738,7 @@ int __init cyber2000fb_init(void) } #endif #ifdef CONFIG_PCI - err = pci_module_init(&cyberpro_driver); + err = pci_register_driver(&cyberpro_driver); if (!err) ret = 0; #endif