X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Fvirgefb.c;h=b9fb6fb3600d59ee950b9d79fa34e0ce8f2b3f49;hb=refs%2Fheads%2Fvserver;hp=8d512fd79a231065fe3fb4f79efed05f30a346e2;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/video/virgefb.c b/drivers/video/virgefb.c index 8d512fd79..b9fb6fb36 100644 --- a/drivers/video/virgefb.c +++ b/drivers/video/virgefb.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -616,8 +615,7 @@ static struct { #endif }; -#define arraysize(x) (sizeof(x)/sizeof(*(x))) -#define NUM_TOTAL_MODES arraysize(virgefb_predefined) +#define NUM_TOTAL_MODES ARRAY_SIZE(virgefb_predefined) /* * Default to 800x600 for video=virge8:, virge16: or virge32: @@ -1801,7 +1799,7 @@ int __init virgefb_init(void) #warning release resources printk(KERN_ERR "virgefb.c: register_framebuffer failed\n"); DPRINTK("EXIT\n"); - return -EINVAL; + goto out_unmap; } printk(KERN_INFO "fb%d: %s frame buffer device, using %ldK of video memory\n", @@ -1809,9 +1807,23 @@ int __init virgefb_init(void) /* TODO: This driver cannot be unloaded yet */ - MOD_INC_USE_COUNT; DPRINTK("EXIT\n"); return 0; + +out_unmap: + if (board_addr >= 0x01000000) { + if (v_ram) + iounmap((void*)v_ram); + if (vgaio_regs) + iounmap(vgaio_regs); + if (mmio_regs) + iounmap(mmio_regs); + if (vcode_switch_base) + iounmap((void*)vcode_switch_base); + v_ram = vcode_switch_base = 0; + vgaio_regs = mmio_regs = NULL; + } + return -EINVAL; } @@ -2064,14 +2076,6 @@ int init_module(void) { return virgefb_init(); } - -void cleanup_module(void) -{ - /* Not reached because the usecount will never be - decremented to zero */ - unregister_framebuffer(&fb_info); - /* TODO: clean up ... */ -} #endif /* MODULE */ static int cv3d_has_4mb(void)