[media] media-device: split media initialization and registration
[deliverable/linux.git] / drivers / media / usb / uvc / uvc_driver.c
index 39abbafad7966a50868ff4c9fe32e097045142d9..4e7148815a7855c2f81639bf3652efaeef2e9d56 100644 (file)
@@ -1656,6 +1656,7 @@ static void uvc_delete(struct uvc_device *dev)
 #ifdef CONFIG_MEDIA_CONTROLLER
        if (media_devnode_is_registered(&dev->mdev.devnode))
                media_device_unregister(&dev->mdev);
+       media_device_cleanup(&dev->mdev);
 #endif
 
        list_for_each_safe(p, n, &dev->chains) {
@@ -1906,7 +1907,7 @@ static int uvc_probe(struct usb_interface *intf,
                        "linux-uvc-devel mailing list.\n");
        }
 
-       /* Register the media and V4L2 devices. */
+       /* Initialize the media device and register the V4L2 device. */
 #ifdef CONFIG_MEDIA_CONTROLLER
        dev->mdev.dev = &intf->dev;
        strlcpy(dev->mdev.model, dev->name, sizeof(dev->mdev.model));
@@ -1916,8 +1917,7 @@ static int uvc_probe(struct usb_interface *intf,
        strcpy(dev->mdev.bus_info, udev->devpath);
        dev->mdev.hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
        dev->mdev.driver_version = LINUX_VERSION_CODE;
-       if (media_device_register(&dev->mdev) < 0)
-               goto error;
+       media_device_init(&dev->mdev);
 
        dev->vdev.mdev = &dev->mdev;
 #endif
@@ -1936,6 +1936,11 @@ static int uvc_probe(struct usb_interface *intf,
        if (uvc_register_chains(dev) < 0)
                goto error;
 
+#ifdef CONFIG_MEDIA_CONTROLLER
+       /* Register the media device node */
+       if (media_device_register(&dev->mdev) < 0)
+               goto error;
+#endif
        /* Save our data pointer in the interface data. */
        usb_set_intfdata(intf, dev);
 
This page took 0.049036 seconds and 5 git commands to generate.