[media] saa7146: embed video_device
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>
This commit is contained in:
parent
093654201e
commit
3ae863e0db
@ -587,26 +587,20 @@ int saa7146_vv_release(struct saa7146_dev* dev)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(saa7146_vv_release);
|
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)
|
char *name, int type)
|
||||||
{
|
{
|
||||||
struct video_device *vfd;
|
|
||||||
int err;
|
int err;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
DEB_EE("dev:%p, name:'%s', type:%d\n", dev, name, type);
|
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;
|
vfd->fops = &video_fops;
|
||||||
if (type == VFL_TYPE_GRABBER)
|
if (type == VFL_TYPE_GRABBER)
|
||||||
vfd->ioctl_ops = &dev->ext_vv_data->vid_ops;
|
vfd->ioctl_ops = &dev->ext_vv_data->vid_ops;
|
||||||
else
|
else
|
||||||
vfd->ioctl_ops = &dev->ext_vv_data->vbi_ops;
|
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->lock = &dev->v4l2_lock;
|
||||||
vfd->v4l2_dev = &dev->v4l2_dev;
|
vfd->v4l2_dev = &dev->v4l2_dev;
|
||||||
vfd->tvnorms = 0;
|
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);
|
err = video_register_device(vfd, type, -1);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
ERR("cannot register v4l2 device. skipping.\n");
|
ERR("cannot register v4l2 device. skipping.\n");
|
||||||
video_device_release(vfd);
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_info("%s: registered device %s [v4l2]\n",
|
pr_info("%s: registered device %s [v4l2]\n",
|
||||||
dev->name, video_device_node_name(vfd));
|
dev->name, video_device_node_name(vfd));
|
||||||
|
|
||||||
*vid = vfd;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(saa7146_register_device);
|
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);
|
DEB_EE("dev:%p\n", dev);
|
||||||
|
|
||||||
video_unregister_device(*vid);
|
video_unregister_device(vfd);
|
||||||
*vid = NULL;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(saa7146_unregister_device);
|
EXPORT_SYMBOL_GPL(saa7146_unregister_device);
|
||||||
|
@ -66,7 +66,7 @@ struct hexium
|
|||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
struct video_device *video_dev;
|
struct video_device video_dev;
|
||||||
struct i2c_adapter i2c_adapter;
|
struct i2c_adapter i2c_adapter;
|
||||||
|
|
||||||
int cur_input; /* current input */
|
int cur_input; /* current input */
|
||||||
|
@ -63,7 +63,7 @@ struct hexium_data
|
|||||||
struct hexium
|
struct hexium
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
struct video_device *video_dev;
|
struct video_device video_dev;
|
||||||
struct i2c_adapter i2c_adapter;
|
struct i2c_adapter i2c_adapter;
|
||||||
|
|
||||||
int cur_input; /* current input */
|
int cur_input; /* current input */
|
||||||
|
@ -151,8 +151,8 @@ static struct mxb_routing TEA6420_line[MXB_AUDIOS + 1][2] = {
|
|||||||
|
|
||||||
struct mxb
|
struct mxb
|
||||||
{
|
{
|
||||||
struct video_device *video_dev;
|
struct video_device video_dev;
|
||||||
struct video_device *vbi_dev;
|
struct video_device vbi_dev;
|
||||||
|
|
||||||
struct i2c_adapter i2c_adapter;
|
struct i2c_adapter i2c_adapter;
|
||||||
|
|
||||||
|
@ -102,8 +102,8 @@ struct av7110 {
|
|||||||
struct dvb_device dvb_dev;
|
struct dvb_device dvb_dev;
|
||||||
struct dvb_net dvb_net;
|
struct dvb_net dvb_net;
|
||||||
|
|
||||||
struct video_device *v4l_dev;
|
struct video_device v4l_dev;
|
||||||
struct video_device *vbi_dev;
|
struct video_device vbi_dev;
|
||||||
|
|
||||||
struct saa7146_dev *dev;
|
struct saa7146_dev *dev;
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
|||||||
|
|
||||||
struct budget_av {
|
struct budget_av {
|
||||||
struct budget budget;
|
struct budget budget;
|
||||||
struct video_device *vd;
|
struct video_device vd;
|
||||||
int cur_input;
|
int cur_input;
|
||||||
int has_saa7113;
|
int has_saa7113;
|
||||||
struct tasklet_struct ciintf_irq_tasklet;
|
struct tasklet_struct ciintf_irq_tasklet;
|
||||||
|
@ -178,8 +178,8 @@ struct saa7146_use_ops {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* from saa7146_fops.c */
|
/* from saa7146_fops.c */
|
||||||
int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev, char *name, int type);
|
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_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_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);
|
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);
|
int saa7146_buffer_queue(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, struct saa7146_buf *buf);
|
||||||
|
Loading…
Reference in New Issue
Block a user