Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / drivers / media / dvb / dvb-core / dvbdev.c
index 3852430..40774fe 100644 (file)
@@ -231,12 +231,8 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
 
        mutex_unlock(&dvbdev_register_lock);
 
-       devfs_mk_cdev(MKDEV(DVB_MAJOR, nums2minor(adap->num, type, id)),
-                       S_IFCHR | S_IRUSR | S_IWUSR,
-                       "dvb/adapter%d/%s%d", adap->num, dnames[type], id);
-
        class_device_create(dvb_class, NULL, MKDEV(DVB_MAJOR, nums2minor(adap->num, type, id)),
-                           NULL, "dvb%d.%s%d", adap->num, dnames[type], id);
+                           adap->device, "dvb%d.%s%d", adap->num, dnames[type], id);
 
        dprintk("DVB: register adapter%d/%s%d @ minor: %i (0x%02x)\n",
                adap->num, dnames[type], id, nums2minor(adap->num, type, id),
@@ -252,9 +248,6 @@ void dvb_unregister_device(struct dvb_device *dvbdev)
        if (!dvbdev)
                return;
 
-       devfs_remove("dvb/adapter%d/%s%d", dvbdev->adapter->num,
-                       dnames[dvbdev->type], dvbdev->id);
-
        class_device_destroy(dvb_class, MKDEV(DVB_MAJOR, nums2minor(dvbdev->adapter->num,
                                        dvbdev->type, dvbdev->id)));
 
@@ -285,7 +278,7 @@ skip:
 }
 
 
-int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct module *module)
+int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct module *module, struct device *device)
 {
        int num;
 
@@ -302,10 +295,10 @@ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct modu
 
        printk ("DVB: registering new adapter (%s).\n", name);
 
-       devfs_mk_dir("dvb/adapter%d", num);
        adap->num = num;
        adap->name = name;
        adap->module = module;
+       adap->device = device;
 
        list_add_tail (&adap->list_head, &dvb_adapter_list);
 
@@ -318,8 +311,6 @@ EXPORT_SYMBOL(dvb_register_adapter);
 
 int dvb_unregister_adapter(struct dvb_adapter *adap)
 {
-       devfs_remove("dvb/adapter%d", adap->num);
-
        if (mutex_lock_interruptible(&dvbdev_register_lock))
                return -ERESTARTSYS;
        list_del (&adap->list_head);
@@ -409,8 +400,6 @@ static int __init init_dvbdev(void)
                goto error;
        }
 
-       devfs_mk_dir("dvb");
-
        dvb_class = class_create(THIS_MODULE, "dvb");
        if (IS_ERR(dvb_class)) {
                retval = PTR_ERR(dvb_class);
@@ -427,7 +416,6 @@ error:
 
 static void __exit exit_dvbdev(void)
 {
-       devfs_remove("dvb");
        class_destroy(dvb_class);
        cdev_del(&dvb_device_cdev);
        unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS);