]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/media/video/v4l2-dev.c
V4L/DVB: Fix IR_CORE dependencies
[mv-sheeva.git] / drivers / media / video / v4l2-dev.c
index 0ca7ec9ca90269de9d9cffa890ebf0b01ef886b2..21ffd030611eb9c500ab0bdf658c5cac0d0f33d8 100644 (file)
@@ -410,7 +410,7 @@ static int __video_register_device(struct video_device *vdev, int type, int nr,
        int minor_offset = 0;
        int minor_cnt = VIDEO_NUM_DEVICES;
        const char *name_base;
-       void *priv = video_get_drvdata(vdev);
+       void *priv = vdev->dev.p;
 
        /* A minor value of -1 marks this video device as never
           having been registered */
@@ -447,8 +447,12 @@ static int __video_register_device(struct video_device *vdev, int type, int nr,
 
        vdev->vfl_type = type;
        vdev->cdev = NULL;
-       if (vdev->v4l2_dev && vdev->v4l2_dev->dev)
-               vdev->parent = vdev->v4l2_dev->dev;
+       if (vdev->v4l2_dev) {
+               if (vdev->v4l2_dev->dev)
+                       vdev->parent = vdev->v4l2_dev->dev;
+               if (vdev->ctrl_handler == NULL)
+                       vdev->ctrl_handler = vdev->v4l2_dev->ctrl_handler;
+       }
 
        /* Part 2: find a free minor, device node number and device index. */
 #ifdef CONFIG_VIDEO_FIXED_MINOR_RANGES
@@ -536,9 +540,9 @@ static int __video_register_device(struct video_device *vdev, int type, int nr,
 
        /* Part 4: register the device with sysfs */
        memset(&vdev->dev, 0, sizeof(vdev->dev));
-       /* The memset above cleared the device's drvdata, so
+       /* The memset above cleared the device's device_private, so
           put back the copy we made earlier. */
-       video_set_drvdata(vdev, priv);
+       vdev->dev.p = priv;
        vdev->dev.class = &video_class;
        vdev->dev.devt = MKDEV(VIDEO_MAJOR, vdev->minor);
        if (vdev->parent)