A pointer to the v4l2_device is stored in the v4l2_entity structure that
video_device derives from. There is no need to hold an extra copy of the
pointer.

Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>

Index: v4l-dvb-mc/linux/drivers/media/radio/dsbr100.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/radio/dsbr100.c
+++ v4l-dvb-mc/linux/drivers/media/radio/dsbr100.c
@@ -657,7 +657,7 @@ static int usb_dsbr100_probe(struct usb_
        }
 
        strlcpy(radio->videodev.name, v4l2_dev->name, 
sizeof(radio->videodev.name));
-       radio->videodev.v4l2_dev = v4l2_dev;
+       radio->videodev.entity.parent = v4l2_dev;
        radio->videodev.fops = &usb_dsbr100_fops;
        radio->videodev.ioctl_ops = &usb_dsbr100_ioctl_ops;
        radio->videodev.release = usb_dsbr100_video_device_release;
Index: v4l-dvb-mc/linux/drivers/media/radio/radio-gemtek-pci.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/radio/radio-gemtek-pci.c
+++ v4l-dvb-mc/linux/drivers/media/radio/radio-gemtek-pci.c
@@ -414,7 +414,7 @@ static int __devinit gemtek_pci_probe(st
        }
 
        strlcpy(card->vdev.name, v4l2_dev->name, sizeof(card->vdev.name));
-       card->vdev.v4l2_dev = v4l2_dev;
+       card->vdev.entity.parent = v4l2_dev;
        card->vdev.fops = &gemtek_pci_fops;
        card->vdev.ioctl_ops = &gemtek_pci_ioctl_ops;
        card->vdev.release = video_device_release_empty;
Index: v4l-dvb-mc/linux/drivers/media/radio/radio-maestro.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/radio/radio-maestro.c
+++ v4l-dvb-mc/linux/drivers/media/radio/radio-maestro.c
@@ -373,7 +373,7 @@ static int __devinit maestro_probe(struc
        dev->io = pci_resource_start(pdev, 0) + GPIO_DATA;
 
        strlcpy(dev->vdev.name, v4l2_dev->name, sizeof(dev->vdev.name));
-       dev->vdev.v4l2_dev = v4l2_dev;
+       dev->vdev.entity.parent = v4l2_dev;
        dev->vdev.fops = &maestro_fops;
        dev->vdev.ioctl_ops = &maestro_ioctl_ops;
        dev->vdev.release = video_device_release_empty;
Index: v4l-dvb-mc/linux/drivers/media/radio/radio-maxiradio.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/radio/radio-maxiradio.c
+++ v4l-dvb-mc/linux/drivers/media/radio/radio-maxiradio.c
@@ -397,7 +397,7 @@ static int __devinit maxiradio_init_one(
 
        dev->io = pci_resource_start(pdev, 0);
        strlcpy(dev->vdev.name, v4l2_dev->name, sizeof(dev->vdev.name));
-       dev->vdev.v4l2_dev = v4l2_dev;
+       dev->vdev.entity.parent = v4l2_dev;
        dev->vdev.fops = &maxiradio_fops;
        dev->vdev.ioctl_ops = &maxiradio_ioctl_ops;
        dev->vdev.release = video_device_release_empty;
Index: v4l-dvb-mc/linux/drivers/media/radio/radio-mr800.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/radio/radio-mr800.c
+++ v4l-dvb-mc/linux/drivers/media/radio/radio-mr800.c
@@ -700,7 +700,7 @@ static int usb_amradio_probe(struct usb_
        }
 
        strlcpy(radio->videodev->name, v4l2_dev->name, 
sizeof(radio->videodev->name));
-       radio->videodev->v4l2_dev = v4l2_dev;
+       radio->videodev->entity.parent = v4l2_dev;
        radio->videodev->fops = &usb_amradio_fops;
        radio->videodev->ioctl_ops = &usb_amradio_ioctl_ops;
        radio->videodev->release = usb_amradio_video_device_release;
Index: v4l-dvb-mc/linux/drivers/media/video/bt8xx/bttv-driver.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/bt8xx/bttv-driver.c
+++ v4l-dvb-mc/linux/drivers/media/video/bt8xx/bttv-driver.c
@@ -4204,7 +4204,7 @@ static struct video_device *vdev_init(st
        if (NULL == vfd)
                return NULL;
        *vfd = *template;
-       vfd->v4l2_dev = &btv->c.v4l2_dev;
+       vfd->entity.parent = &btv->c.v4l2_dev;
        vfd->release = video_device_release;
        vfd->debug   = bttv_debug;
        video_set_drvdata(vfd, btv);
Index: v4l-dvb-mc/linux/drivers/media/video/cafe_ccic.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/cafe_ccic.c
+++ v4l-dvb-mc/linux/drivers/media/video/cafe_ccic.c
@@ -1972,7 +1972,7 @@ static int cafe_pci_probe(struct pci_dev
        cam->vdev = cafe_v4l_template;
        cam->vdev.debug = 0;
 /*     cam->vdev.debug = V4L2_DEBUG_IOCTL_ARG;*/
-       cam->vdev.v4l2_dev = &cam->v4l2_dev;
+       cam->vdev.entity.parent = &cam->v4l2_dev;
        ret = video_register_device(&cam->vdev, VFL_TYPE_GRABBER, -1);
        if (ret)
                goto out_smbus;
Index: v4l-dvb-mc/linux/drivers/media/video/cx18/cx18-streams.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/cx18/cx18-streams.c
+++ v4l-dvb-mc/linux/drivers/media/video/cx18/cx18-streams.c
@@ -182,7 +182,7 @@ static int cx18_prep_dev(struct cx18 *cx
                 cx->v4l2_dev.name, s->name);
 
        s->video_dev->num = num;
-       s->video_dev->v4l2_dev = &cx->v4l2_dev;
+       s->video_dev->entity.parent = &cx->v4l2_dev;
        s->video_dev->fops = &cx18_v4l2_enc_fops;
        s->video_dev->release = video_device_release;
        s->video_dev->tvnorms = V4L2_STD_ALL;
Index: v4l-dvb-mc/linux/drivers/media/video/cx231xx/cx231xx-video.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/cx231xx/cx231xx-video.c
+++ v4l-dvb-mc/linux/drivers/media/video/cx231xx/cx231xx-video.c
@@ -2320,7 +2320,7 @@ static struct video_device *cx231xx_vdev
 
        *vfd = *template;
        vfd->minor = -1;
-       vfd->v4l2_dev = &dev->v4l2_dev;
+       vfd->entity.parent = &dev->v4l2_dev;
        vfd->release = video_device_release;
        vfd->debug = video_debug;
 
Index: v4l-dvb-mc/linux/drivers/media/video/cx23885/cx23885-video.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/cx23885/cx23885-video.c
+++ v4l-dvb-mc/linux/drivers/media/video/cx23885/cx23885-video.c
@@ -353,7 +353,7 @@ static struct video_device *cx23885_vdev
                return NULL;
        *vfd = *template;
        vfd->minor = -1;
-       vfd->v4l2_dev = &dev->v4l2_dev;
+       vfd->entity.parent = &dev->v4l2_dev;
        vfd->release = video_device_release;
        snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)",
                 dev->name, type, cx23885_boards[dev->board].name);
Index: v4l-dvb-mc/linux/drivers/media/video/cx88/cx88-core.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/cx88/cx88-core.c
+++ v4l-dvb-mc/linux/drivers/media/video/cx88/cx88-core.c
@@ -1057,7 +1057,7 @@ struct video_device *cx88_vdev_init(stru
        if (NULL == vfd)
                return NULL;
        *vfd = *template;
-       vfd->v4l2_dev = &core->v4l2_dev;
+       vfd->entity.parent = &core->v4l2_dev;
        vfd->parent = &pci->dev;
        vfd->release = video_device_release;
        snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)",
Index: v4l-dvb-mc/linux/drivers/media/video/em28xx/em28xx-video.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/em28xx/em28xx-video.c
+++ v4l-dvb-mc/linux/drivers/media/video/em28xx/em28xx-video.c
@@ -2154,7 +2154,7 @@ static struct video_device *em28xx_vdev_
 
        *vfd            = *template;
        vfd->minor      = -1;
-       vfd->v4l2_dev   = &dev->v4l2_dev;
+       vfd->entity.parent = &dev->v4l2_dev;
        vfd->release    = video_device_release;
        vfd->debug      = video_debug;
 
Index: v4l-dvb-mc/linux/drivers/media/video/ivtv/ivtv-streams.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/ivtv/ivtv-streams.c
+++ v4l-dvb-mc/linux/drivers/media/video/ivtv/ivtv-streams.c
@@ -207,7 +207,7 @@ static int ivtv_prep_dev(struct ivtv *it
                        itv->v4l2_dev.name, s->name);
 
        s->vdev->num = num;
-       s->vdev->v4l2_dev = &itv->v4l2_dev;
+       s->vdev->entity.parent = &itv->v4l2_dev;
        s->vdev->fops = ivtv_stream_info[type].fops;
        s->vdev->release = video_device_release;
        s->vdev->tvnorms = V4L2_STD_ALL;
Index: v4l-dvb-mc/linux/drivers/media/video/saa7134/saa7134-core.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/saa7134/saa7134-core.c
+++ v4l-dvb-mc/linux/drivers/media/video/saa7134/saa7134-core.c
@@ -853,7 +853,7 @@ static struct video_device *vdev_init(st
        if (NULL == vfd)
                return NULL;
        *vfd = *template;
-       vfd->v4l2_dev  = &dev->v4l2_dev;
+       vfd->entity.parent = &dev->v4l2_dev;
        vfd->release = video_device_release;
        vfd->debug   = video_debug;
        snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)",
Index: v4l-dvb-mc/linux/drivers/media/video/usbvision/usbvision-video.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/usbvision/usbvision-video.c
+++ v4l-dvb-mc/linux/drivers/media/video/usbvision/usbvision-video.c
@@ -1406,7 +1406,7 @@ static struct video_device *usbvision_vd
        }
        *vdev = *vdev_template;
 //     vdev->minor   = -1;
-       vdev->v4l2_dev = &usbvision->v4l2_dev;
+       vdev->entity.parent = &usbvision->v4l2_dev;
        snprintf(vdev->name, sizeof(vdev->name), "%s", name);
        video_set_drvdata(vdev, usbvision);
        return vdev;
Index: v4l-dvb-mc/linux/drivers/media/video/v4l2-dev.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/v4l2-dev.c
+++ v4l-dvb-mc/linux/drivers/media/video/v4l2-dev.c
@@ -439,8 +439,8 @@ int video_register_device(struct video_d
 
        vdev->vfl_type = type;
        vdev->cdev = NULL;
-       if (vdev->v4l2_dev && vdev->v4l2_dev->dev)
-               vdev->parent = vdev->v4l2_dev->dev;
+       if (vdev->entity.parent && vdev->entity.parent->dev)
+               vdev->parent = vdev->entity.parent->dev;
 
        /* Part 2: find a free minor, kernel number and device index. */
 #ifdef CONFIG_VIDEO_FIXED_MINOR_RANGES
@@ -573,13 +573,13 @@ int video_register_device(struct video_d
           reference to the device goes away. */
        vdev->dev.release = v4l2_device_release;
 
-       if (vdev->v4l2_dev) {
+       if (vdev->entity.parent) {
                vdev->entity.type = V4L2_ENTITY_TYPE_NODE;
                vdev->entity.subtype = V4L2_NODE_TYPE_V4L;
                vdev->entity.v4l.major = VIDEO_MAJOR;
                vdev->entity.v4l.minor = vdev->minor;
                vdev->entity.name = vdev->name;
-               ret = v4l2_device_register_node(vdev->v4l2_dev, vdev);
+               ret = v4l2_device_register_node(vdev->entity.parent, vdev);
                if (ret < 0)
                        printk(KERN_ERR "error\n"); /* TODO */
        }
Index: v4l-dvb-mc/linux/drivers/media/video/v4l2-device.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/v4l2-device.c
+++ v4l-dvb-mc/linux/drivers/media/video/v4l2-device.c
@@ -196,10 +196,10 @@ static long mc_ioctl(struct file *filp, 
 
        switch (cmd) {
        case VIDIOC_MC_ENUM_ENTITIES:
-               return mc_enum_entities(vdev->v4l2_dev, (struct v4l2_mc_entity 
__user *)arg);
+               return mc_enum_entities(vdev->entity.parent, (struct 
v4l2_mc_entity __user *)arg);
 
        case VIDIOC_MC_ENUM_LINKS:
-               return mc_enum_links(vdev->v4l2_dev, (struct v4l2_mc_ios __user 
*)arg);
+               return mc_enum_links(vdev->entity.parent, (struct v4l2_mc_ios 
__user *)arg);
 
        case VIDIOC_MC_G_ENTITY:
                id = fh->ent ? fh->ent->id : 0;
@@ -208,17 +208,17 @@ static long mc_ioctl(struct file *filp, 
        case VIDIOC_MC_S_ENTITY:
                if (copy_from_user(&id, uarg, sizeof(*uarg)))
                        return -EFAULT;
-               ent = find_entity(vdev->v4l2_dev, id);
+               ent = find_entity(vdev->entity.parent, id);
                if (ent == NULL)
                        return -EINVAL;
                fh->ent = ent;
                break;
 
        case VIDIOC_MC_MAKE_LINK:
-               return mc_make_link(vdev->v4l2_dev, (struct v4l2_mc_link __user 
*)arg);
+               return mc_make_link(vdev->entity.parent, (struct v4l2_mc_link 
__user *)arg);
 
        case VIDIOC_MC_DELETE_LINK:
-               return mc_delete_link(vdev->v4l2_dev, (struct v4l2_mc_link 
__user *)arg);
+               return mc_delete_link(vdev->entity.parent, (struct v4l2_mc_link 
__user *)arg);
 
        default:
                if (fh->ent == NULL || fh->ent->ioctl == NULL)
@@ -264,7 +264,7 @@ int v4l2_device_register(struct device *
        vdev = &v4l2_dev->mc;
 
        snprintf(vdev->name, sizeof(vdev->name), "media controller");
-       vdev->v4l2_dev = v4l2_dev;
+       vdev->entity.parent = v4l2_dev;
        vdev->fops = &mc_fops;
        vdev->release = video_device_release_empty;
        return video_register_device(vdev, VFL_TYPE_MC, -1);
@@ -363,7 +363,7 @@ int v4l2_device_register_node(struct v4l
        /* Check for valid input */
        if (v4l2_dev == NULL || vdev == NULL)
                return -EINVAL;
-       vdev->v4l2_dev = v4l2_dev;
+       vdev->entity.parent = v4l2_dev;
        spin_lock(&v4l2_dev->lock);
        vdev->entity.id = v4l2_dev->devnode_id++;
        list_add_tail(&vdev->entity.list, &v4l2_dev->devnodes);
@@ -375,12 +375,12 @@ EXPORT_SYMBOL_GPL(v4l2_device_register_n
 void v4l2_device_unregister_node(struct video_device *vdev)
 {
        /* return if it isn't registered */
-       if (vdev == NULL || vdev->v4l2_dev == NULL)
+       if (vdev == NULL || vdev->entity.parent == NULL)
                return;
-       spin_lock(&vdev->v4l2_dev->lock);
+       spin_lock(&vdev->entity.parent->lock);
        list_del(&vdev->entity.list);
-       spin_unlock(&vdev->v4l2_dev->lock);
-       vdev->v4l2_dev = NULL;
+       spin_unlock(&vdev->entity.parent->lock);
+       vdev->entity.parent = NULL;
 }
 EXPORT_SYMBOL_GPL(v4l2_device_unregister_node);
 
Index: v4l-dvb-mc/linux/drivers/media/video/w9968cf.c
===================================================================
--- v4l-dvb-mc.orig/linux/drivers/media/video/w9968cf.c
+++ v4l-dvb-mc/linux/drivers/media/video/w9968cf.c
@@ -3502,7 +3502,7 @@ w9968cf_usb_probe(struct usb_interface* 
        cam->v4ldev->minor = video_nr[dev_nr];
        cam->v4ldev->release = video_device_release;
        video_set_drvdata(cam->v4ldev, cam);
-       cam->v4ldev->v4l2_dev = &cam->v4l2_dev;
+       cam->v4ldev->entity.parent = &cam->v4l2_dev;
 
        err = video_register_device(cam->v4ldev, VFL_TYPE_GRABBER,
                                    video_nr[dev_nr]);
Index: v4l-dvb-mc/linux/include/media/v4l2-dev.h
===================================================================
--- v4l-dvb-mc.orig/linux/include/media/v4l2-dev.h
+++ v4l-dvb-mc/linux/include/media/v4l2-dev.h
@@ -29,7 +29,6 @@
 struct v4l2_ioctl_callbacks;
 struct video_device;
 struct v4l2_alsa_device;
-struct v4l2_device;
 
 /* Flag to mark the video_device struct as unregistered.
    Drivers can set this flag if they want to block all future
@@ -71,9 +70,8 @@ struct video_device
 #endif
        struct cdev *cdev;              /* character device */
 
-       /* Set either parent or v4l2_dev if your driver uses v4l2_device */
+       /* Set either parent or entity.parent if your driver uses v4l2_device */
        struct device *parent;          /* device parent */
-       struct v4l2_device *v4l2_dev;   /* v4l2_device parent */
 
        /* device info */
        char name[32];


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to