--- drivers/mga_vid.c 2003-03-02 22:21:56.000000000 +0100 +++ drivers_new/mga_vid.c 2003-03-12 19:19:53.000000000 +0100 @@ -29,6 +29,7 @@ */ //It's entirely possible this major conflicts with something else +//use the 'major' parameter to override the default major number (178) /* mknod /dev/mga_vid c 178 0 */ #include @@ -68,7 +69,7 @@ #define TRUE 1 #define FALSE 0 -#define MGA_VID_MAJOR 178 +#define DEFAULT_MGA_VID_MAJOR 178 //#define MGA_VIDMEM_SIZE mga_ram_size @@ -269,6 +270,7 @@ static int mga_brightness = 0; // initial brightness static int mga_contrast = 0; // initial contrast +static int major = DEFAULT_MGA_VID_MAJOR; //static int mga_force_memsize = 0; @@ -276,6 +278,7 @@ MODULE_PARM(mga_top_reserved, "i"); MODULE_PARM(mga_brightness, "i"); MODULE_PARM(mga_contrast, "i"); +MODULE_PARM(major, "i"); static struct pci_dev *pci_dev; @@ -1611,17 +1614,17 @@ if ((dev_handle = devfs_register( NULL, "mga_vid", DEVFS_FL_NONE, - MGA_VID_MAJOR, 0, + major, 0, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IFCHR, &mga_vid_fops, NULL)) == NULL) { - printk(KERN_ERR "mga_vid: unable to get major: %d (devfs) => fallback to non-devfs mode\n", MGA_VID_MAJOR); + printk(KERN_ERR "mga_vid: unable to get major: %d (devfs) => fallback to non-devfs mode\n", major); // return -EIO; } #endif - if(register_chrdev(MGA_VID_MAJOR, "mga_vid", &mga_vid_fops)) + if(register_chrdev(major, "mga_vid", &mga_vid_fops)) { - printk(KERN_ERR "mga_vid: unable to get major: %d\n", MGA_VID_MAJOR); + printk(KERN_ERR "mga_vid: unable to get major: %d\n", major); return -EIO; } @@ -1631,7 +1634,7 @@ #ifdef CONFIG_DEVFS_FS if(dev_handle) devfs_unregister(dev_handle); #endif - unregister_chrdev(MGA_VID_MAJOR, "mga_vid"); + unregister_chrdev(major, "mga_vid"); return -EINVAL; } mga_param_buff = kmalloc(PARAM_BUFF_SIZE,GFP_KERNEL); @@ -1663,6 +1666,6 @@ #ifdef CONFIG_DEVFS_FS if(dev_handle) devfs_unregister(dev_handle); #endif - unregister_chrdev(MGA_VID_MAJOR, "mga_vid"); + unregister_chrdev(major, "mga_vid"); }