]> git.karo-electronics.de Git - linux-beck.git/commitdiff
[media] tlg2300: embed video_device
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 16 Jul 2012 11:17:58 +0000 (08:17 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 5 Mar 2013 13:35:11 +0000 (10:35 -0300)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Huang Shijie <shijie8@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/tlg2300/pd-common.h
drivers/media/usb/tlg2300/pd-video.c

index 67ad065d2c3c515c2bd684842bbecc772525fb24..052cb0c9530cc789e5d8bb90eb9bea2dafd11744 100644 (file)
@@ -40,7 +40,7 @@
 #define TUNER_FREQ_MAX         (862000000)
 
 struct vbi_data {
-       struct video_device     *v_dev;
+       struct video_device     v_dev;
        struct video_data       *video;
        struct front_face       *front;
 
@@ -63,7 +63,7 @@ struct running_context {
 
 struct video_data {
        /* v4l2 video device */
-       struct video_device     *v_dev;
+       struct video_device     v_dev;
 
        /* the working context */
        struct running_context  context;
@@ -234,7 +234,6 @@ void dvb_stop_streaming(struct pd_dvb_adapter *);
 /* FM */
 int poseidon_fm_init(struct poseidon *);
 int poseidon_fm_exit(struct poseidon *);
-struct video_device *vdev_init(struct poseidon *, struct video_device *);
 
 /* vendor command ops */
 int send_set_req(struct poseidon*, u8, s32, s32*);
@@ -250,7 +249,6 @@ void free_all_urb_generic(struct urb **urb_array, int num);
 
 /* misc */
 void poseidon_delete(struct kref *kref);
-void destroy_video_device(struct video_device **v_dev);
 extern int debug_mode;
 void set_debug_mode(struct video_device *vfd, int debug_mode);
 
index 21723378bb8f7d7ae84ab647958b9066ab1e3c34..312809a68b239166535c520988d041da12ee7840 100644 (file)
@@ -1590,48 +1590,18 @@ static struct video_device pd_video_template = {
        .name = "Telegent-Video",
        .fops = &pd_video_fops,
        .minor = -1,
-       .release = video_device_release,
+       .release = video_device_release_empty,
        .tvnorms = V4L2_STD_ALL,
        .ioctl_ops = &pd_video_ioctl_ops,
 };
 
-struct video_device *vdev_init(struct poseidon *pd, struct video_device *tmp)
-{
-       struct video_device *vfd;
-
-       vfd = video_device_alloc();
-       if (vfd == NULL)
-               return NULL;
-       *vfd            = *tmp;
-       vfd->minor      = -1;
-       vfd->v4l2_dev   = &pd->v4l2_dev;
-       /*vfd->parent   = &(pd->udev->dev); */
-       vfd->release    = video_device_release;
-       video_set_drvdata(vfd, pd);
-       return vfd;
-}
-
-void destroy_video_device(struct video_device **v_dev)
-{
-       struct video_device *dev = *v_dev;
-
-       if (dev == NULL)
-               return;
-
-       if (video_is_registered(dev))
-               video_unregister_device(dev);
-       else
-               video_device_release(dev);
-       *v_dev = NULL;
-}
-
 void pd_video_exit(struct poseidon *pd)
 {
        struct video_data *video = &pd->video_data;
        struct vbi_data *vbi = &pd->vbi_data;
 
-       destroy_video_device(&video->v_dev);
-       destroy_video_device(&vbi->v_dev);
+       video_unregister_device(&video->v_dev);
+       video_unregister_device(&vbi->v_dev);
        log();
 }
 
@@ -1641,21 +1611,19 @@ int pd_video_init(struct poseidon *pd)
        struct vbi_data *vbi    = &pd->vbi_data;
        int ret = -ENOMEM;
 
-       video->v_dev = vdev_init(pd, &pd_video_template);
-       if (video->v_dev == NULL)
-               goto out;
+       video->v_dev = pd_video_template;
+       video->v_dev.v4l2_dev = &pd->v4l2_dev;
+       video_set_drvdata(&video->v_dev, pd);
 
-       ret = video_register_device(video->v_dev, VFL_TYPE_GRABBER, -1);
+       ret = video_register_device(&video->v_dev, VFL_TYPE_GRABBER, -1);
        if (ret != 0)
                goto out;
 
        /* VBI uses the same template as video */
-       vbi->v_dev = vdev_init(pd, &pd_video_template);
-       if (vbi->v_dev == NULL) {
-               ret = -ENOMEM;
-               goto out;
-       }
-       ret = video_register_device(vbi->v_dev, VFL_TYPE_VBI, -1);
+       vbi->v_dev = pd_video_template;
+       vbi->v_dev.v4l2_dev = &pd->v4l2_dev;
+       video_set_drvdata(&vbi->v_dev, pd);
+       ret = video_register_device(&vbi->v_dev, VFL_TYPE_VBI, -1);
        if (ret != 0)
                goto out;
        log("register VIDEO/VBI devices");
@@ -1665,4 +1633,3 @@ out:
        pd_video_exit(pd);
        return ret;
 }
-