X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Fkyro%2Ffbdev.c;h=2352a9142a77aeb3255dbc1cac0bc1a06aaf9655;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=aad0ab3ffcf92eb0e7c4ce35615a176c5e8b44b6;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/video/kyro/fbdev.c b/drivers/video/kyro/fbdev.c index aad0ab3ff..2352a9142 100644 --- a/drivers/video/kyro/fbdev.c +++ b/drivers/video/kyro/fbdev.c @@ -84,7 +84,7 @@ typedef struct { } device_info_t; /* global graphics card info structure (one per card) */ -static device_info_t deviceInfo = { 0 }; +static device_info_t deviceInfo; static char *mode_option __initdata = NULL; static int nopan __initdata = 0; @@ -97,7 +97,6 @@ static int nomtrr __initdata = 0; static int kyrofb_probe(struct pci_dev *pdev, const struct pci_device_id *ent); static void kyrofb_remove(struct pci_dev *pdev); -#ifndef MODULE static struct fb_videomode kyro_modedb[] __initdata = { { /* 640x350 @ 85Hz */ @@ -306,7 +305,6 @@ enum { VMODE_1920_1440_60, VMODE_1920_1440_75, }; -#endif /* Accessors */ int kyro_dev_video_mode_set(struct fb_info *info) @@ -592,11 +590,11 @@ static int kyrofb_ioctl(struct inode *inode, struct file *file, { overlay_create ol_create; overlay_viewport_set ol_viewport_set; + void __user *argp = (void __user *)arg; switch (cmd) { case KYRO_IOCTL_OVERLAY_CREATE: - copy_from_user((void *) &ol_create, (void *) arg, - sizeof(overlay_create)); + copy_from_user(&ol_create, argp, sizeof(overlay_create)); if (kyro_dev_overlay_create(ol_create.ulWidth, ol_create.ulHeight, 0) < 0) { @@ -606,7 +604,7 @@ static int kyrofb_ioctl(struct inode *inode, struct file *file, } break; case KYRO_IOCTL_OVERLAY_VIEWPORT_SET: - copy_from_user((void *) &ol_viewport_set, (void *) arg, + copy_from_user(&ol_viewport_set, argp, sizeof(overlay_viewport_set)); if (kyro_dev_overlay_viewport_set(ol_viewport_set.xOrgin, @@ -627,13 +625,13 @@ static int kyrofb_ioctl(struct inode *inode, struct file *file, } break; case KYRO_IOCTL_UVSTRIDE: - copy_to_user((void *)arg, (void *)&deviceInfo.ulOverlayUVStride, sizeof(unsigned long)); + copy_to_user(argp, &deviceInfo.ulOverlayUVStride, sizeof(unsigned long)); break; case KYRO_IOCTL_STRIDE: - copy_to_user((void *)arg, (void *)&deviceInfo.ulOverlayStride, sizeof(unsigned long)); + copy_to_user(argp, &deviceInfo.ulOverlayStride, sizeof(unsigned long)); break; case KYRO_IOCTL_OVERLAY_OFFSET: - copy_to_user((void *)arg, (void *)&deviceInfo.ulOverlayOffset, sizeof(unsigned long)); + copy_to_user(argp, &deviceInfo.ulOverlayOffset, sizeof(unsigned long)); break; } @@ -714,7 +712,7 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev, info->fix = kyro_fix; info->par = currentpar; info->pseudo_palette = (void *)(currentpar + 1); - info->flags = FBINFO_FLAG_DEFAULT; + info->flags = FBINFO_DEFAULT; SetCoreClockPLL(deviceInfo.pSTGReg, pdev); @@ -722,10 +720,8 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev, deviceInfo.ulOverlayOffset = 0; /* This should give a reasonable default video mode */ -#ifndef MODULE if (!fb_find_mode(&info->var, info, mode_option, kyro_modedb, NUM_TOTAL_MODES, &kyro_modedb[VMODE_1024_768_75], 32)) -#endif info->var = kyro_var; fb_alloc_cmap(&info->cmap, 256, 0); @@ -737,7 +733,7 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev, info->var.bits_per_pixel); size *= info->var.yres_virtual; - memset_io((unsigned long)info->screen_base, 0, size); + fb_memset(info->screen_base, 0, size); if (register_framebuffer(info) < 0) goto out_unmap; @@ -791,6 +787,13 @@ static void __devexit kyrofb_remove(struct pci_dev *pdev) int __init kyrofb_init(void) { +#ifndef MODULE + char *option = NULL; + + if (fb_get_options("kyrofb", &option)) + return -ENODEV; + kyrofb_setup(option); +#endif return pci_module_init(&kyrofb_pci_driver); } @@ -799,8 +802,9 @@ static void __exit kyrofb_exit(void) pci_unregister_driver(&kyrofb_pci_driver); } -#ifdef MODULE module_init(kyrofb_init); + +#ifdef MODULE module_exit(kyrofb_exit); #endif