|
@@ -200,7 +200,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
|
|
|
{
|
|
|
struct dvb_device *dvbdev;
|
|
|
struct file_operations *dvbdevfops;
|
|
|
-
|
|
|
+ struct class_device *clsdev;
|
|
|
int id;
|
|
|
|
|
|
mutex_lock(&dvbdev_register_lock);
|
|
@@ -242,8 +242,15 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
|
|
|
|
|
|
mutex_unlock(&dvbdev_register_lock);
|
|
|
|
|
|
- class_device_create(dvb_class, NULL, MKDEV(DVB_MAJOR, nums2minor(adap->num, type, id)),
|
|
|
- adap->device, "dvb%d.%s%d", adap->num, dnames[type], id);
|
|
|
+ clsdev = class_device_create(dvb_class, NULL, MKDEV(DVB_MAJOR,
|
|
|
+ nums2minor(adap->num, type, id)),
|
|
|
+ adap->device, "dvb%d.%s%d", adap->num,
|
|
|
+ dnames[type], id);
|
|
|
+ if (IS_ERR(clsdev)) {
|
|
|
+ printk(KERN_ERR "%s: failed to create device dvb%d.%s%d (%ld)\n",
|
|
|
+ __FUNCTION__, adap->num, dnames[type], id, PTR_ERR(clsdev));
|
|
|
+ return PTR_ERR(clsdev);
|
|
|
+ }
|
|
|
|
|
|
dprintk("DVB: register adapter%d/%s%d @ minor: %i (0x%02x)\n",
|
|
|
adap->num, dnames[type], id, nums2minor(adap->num, type, id),
|
|
@@ -431,7 +438,7 @@ static void __exit exit_dvbdev(void)
|
|
|
unregister_chrdev_region(MKDEV(DVB_MAJOR, 0), MAX_DVB_MINORS);
|
|
|
}
|
|
|
|
|
|
-module_init(init_dvbdev);
|
|
|
+subsys_initcall(init_dvbdev);
|
|
|
module_exit(exit_dvbdev);
|
|
|
|
|
|
MODULE_DESCRIPTION("DVB Core Driver");
|