[media] saa7146: embed video_device
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 9 Mar 2015 16:33:57 +0000 (13:33 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 3 Apr 2015 02:29:01 +0000 (23:29 -0300)
Embed the video_device struct to simplify the error handling and in
order to (eventually) get rid of video_device_alloc/release.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/common/saa7146/saa7146_fops.c
drivers/media/pci/saa7146/hexium_gemini.c
drivers/media/pci/saa7146/hexium_orion.c
drivers/media/pci/saa7146/mxb.c
drivers/media/pci/ttpci/av7110.h
drivers/media/pci/ttpci/budget-av.c
include/media/saa7146_vv.h

index b7d63933dae61a6adbac2d95edfe1bb19c6aacf1..df1e8c975cd82d97b6b5d9bb4edf0e2db7f006bd 100644 (file)
@@ -587,26 +587,20 @@ int saa7146_vv_release(struct saa7146_dev* dev)
 }
 EXPORT_SYMBOL_GPL(saa7146_vv_release);
 
-int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
+int saa7146_register_device(struct video_device *vfd, struct saa7146_dev *dev,
                            char *name, int type)
 {
-       struct video_device *vfd;
        int err;
        int i;
 
        DEB_EE("dev:%p, name:'%s', type:%d\n", dev, name, type);
 
-       // released by vfd->release
-       vfd = video_device_alloc();
-       if (vfd == NULL)
-               return -ENOMEM;
-
        vfd->fops = &video_fops;
        if (type == VFL_TYPE_GRABBER)
                vfd->ioctl_ops = &dev->ext_vv_data->vid_ops;
        else
                vfd->ioctl_ops = &dev->ext_vv_data->vbi_ops;
-       vfd->release = video_device_release;
+       vfd->release = video_device_release_empty;
        vfd->lock = &dev->v4l2_lock;
        vfd->v4l2_dev = &dev->v4l2_dev;
        vfd->tvnorms = 0;
@@ -618,25 +612,20 @@ int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
        err = video_register_device(vfd, type, -1);
        if (err < 0) {
                ERR("cannot register v4l2 device. skipping.\n");
-               video_device_release(vfd);
                return err;
        }
 
        pr_info("%s: registered device %s [v4l2]\n",
                dev->name, video_device_node_name(vfd));
-
-       *vid = vfd;
        return 0;
 }
 EXPORT_SYMBOL_GPL(saa7146_register_device);
 
-int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev)
+int saa7146_unregister_device(struct video_device *vfd, struct saa7146_dev *dev)
 {
        DEB_EE("dev:%p\n", dev);
 
-       video_unregister_device(*vid);
-       *vid = NULL;
-
+       video_unregister_device(vfd);
        return 0;
 }
 EXPORT_SYMBOL_GPL(saa7146_unregister_device);
index 366434f5647e66299a7f4e9aadb20d083f518d0b..03cbcd2095c6e18848cdb47ce399843fb9406f78 100644 (file)
@@ -66,7 +66,7 @@ struct hexium
 {
        int type;
 
-       struct video_device     *video_dev;
+       struct video_device     video_dev;
        struct i2c_adapter      i2c_adapter;
 
        int             cur_input;      /* current input */
index a1eb26d11070afa4b89ff2c6fa657223cf802c00..15f0d66ff78a237a85101c7ee04bd50d6830a9ab 100644 (file)
@@ -63,7 +63,7 @@ struct hexium_data
 struct hexium
 {
        int type;
-       struct video_device     *video_dev;
+       struct video_device     video_dev;
        struct i2c_adapter      i2c_adapter;
 
        int cur_input;  /* current input */
index c4c8fce8f2b48fcf26520b06cf8ad90c0f895212..0ca1e07ae7837f7cfe6acb239f30186dc8698a2d 100644 (file)
@@ -151,8 +151,8 @@ static struct mxb_routing TEA6420_line[MXB_AUDIOS + 1][2] = {
 
 struct mxb
 {
-       struct video_device     *video_dev;
-       struct video_device     *vbi_dev;
+       struct video_device     video_dev;
+       struct video_device     vbi_dev;
 
        struct i2c_adapter      i2c_adapter;
 
index ef3d9606b2695844f8f01dda48c294f72218b822..835635b0c71298b6832b53ec103d38453e534a6e 100644 (file)
@@ -102,8 +102,8 @@ struct av7110 {
        struct dvb_device       dvb_dev;
        struct dvb_net          dvb_net;
 
-       struct video_device     *v4l_dev;
-       struct video_device     *vbi_dev;
+       struct video_device     v4l_dev;
+       struct video_device     vbi_dev;
 
        struct saa7146_dev      *dev;
 
index 0ba3875af22e1cf06f675e37ad15f43ad4fa9bab..54c9910256f8cd4dc81ef339df56bcafe0df158e 100644 (file)
@@ -68,7 +68,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
 
 struct budget_av {
        struct budget budget;
-       struct video_device *vd;
+       struct video_device vd;
        int cur_input;
        int has_saa7113;
        struct tasklet_struct ciintf_irq_tasklet;
index 944ecdf3530fc6ef28329465375931e9866f02fe..92766f77a5dee7decc5885228d7d02cf43d99d88 100644 (file)
@@ -178,8 +178,8 @@ struct saa7146_use_ops  {
 };
 
 /* from saa7146_fops.c */
-int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev, char *name, int type);
-int saa7146_unregister_device(struct video_device **vid, struct saa7146_dev* dev);
+int saa7146_register_device(struct video_device *vid, struct saa7146_dev *dev, char *name, int type);
+int saa7146_unregister_device(struct video_device *vid, struct saa7146_dev *dev);
 void saa7146_buffer_finish(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, int state);
 void saa7146_buffer_next(struct saa7146_dev *dev, struct saa7146_dmaqueue *q,int vbi);
 int saa7146_buffer_queue(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, struct saa7146_buf *buf);