[media] tlg2300: embed video_device

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>
This commit is contained in:
Hans Verkuil 2012-07-16 08:17:58 -03:00 committed by Mauro Carvalho Chehab
parent 270ecca60e
commit 1b952f17f3
2 changed files with 13 additions and 48 deletions

View file

@ -40,7 +40,7 @@
#define TUNER_FREQ_MAX (862000000) #define TUNER_FREQ_MAX (862000000)
struct vbi_data { struct vbi_data {
struct video_device *v_dev; struct video_device v_dev;
struct video_data *video; struct video_data *video;
struct front_face *front; struct front_face *front;
@ -63,7 +63,7 @@ struct running_context {
struct video_data { struct video_data {
/* v4l2 video device */ /* v4l2 video device */
struct video_device *v_dev; struct video_device v_dev;
/* the working context */ /* the working context */
struct running_context context; struct running_context context;
@ -234,7 +234,6 @@ void dvb_stop_streaming(struct pd_dvb_adapter *);
/* FM */ /* FM */
int poseidon_fm_init(struct poseidon *); int poseidon_fm_init(struct poseidon *);
int poseidon_fm_exit(struct poseidon *); int poseidon_fm_exit(struct poseidon *);
struct video_device *vdev_init(struct poseidon *, struct video_device *);
/* vendor command ops */ /* vendor command ops */
int send_set_req(struct poseidon*, u8, s32, s32*); 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 */ /* misc */
void poseidon_delete(struct kref *kref); void poseidon_delete(struct kref *kref);
void destroy_video_device(struct video_device **v_dev);
extern int debug_mode; extern int debug_mode;
void set_debug_mode(struct video_device *vfd, int debug_mode); void set_debug_mode(struct video_device *vfd, int debug_mode);

View file

@ -1590,48 +1590,18 @@ static struct video_device pd_video_template = {
.name = "Telegent-Video", .name = "Telegent-Video",
.fops = &pd_video_fops, .fops = &pd_video_fops,
.minor = -1, .minor = -1,
.release = video_device_release, .release = video_device_release_empty,
.tvnorms = V4L2_STD_ALL, .tvnorms = V4L2_STD_ALL,
.ioctl_ops = &pd_video_ioctl_ops, .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) void pd_video_exit(struct poseidon *pd)
{ {
struct video_data *video = &pd->video_data; struct video_data *video = &pd->video_data;
struct vbi_data *vbi = &pd->vbi_data; struct vbi_data *vbi = &pd->vbi_data;
destroy_video_device(&video->v_dev); video_unregister_device(&video->v_dev);
destroy_video_device(&vbi->v_dev); video_unregister_device(&vbi->v_dev);
log(); log();
} }
@ -1641,21 +1611,19 @@ int pd_video_init(struct poseidon *pd)
struct vbi_data *vbi = &pd->vbi_data; struct vbi_data *vbi = &pd->vbi_data;
int ret = -ENOMEM; int ret = -ENOMEM;
video->v_dev = vdev_init(pd, &pd_video_template); video->v_dev = pd_video_template;
if (video->v_dev == NULL) video->v_dev.v4l2_dev = &pd->v4l2_dev;
goto out; 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) if (ret != 0)
goto out; goto out;
/* VBI uses the same template as video */ /* VBI uses the same template as video */
vbi->v_dev = vdev_init(pd, &pd_video_template); vbi->v_dev = pd_video_template;
if (vbi->v_dev == NULL) { vbi->v_dev.v4l2_dev = &pd->v4l2_dev;
ret = -ENOMEM; video_set_drvdata(&vbi->v_dev, pd);
goto out; ret = video_register_device(&vbi->v_dev, VFL_TYPE_VBI, -1);
}
ret = video_register_device(vbi->v_dev, VFL_TYPE_VBI, -1);
if (ret != 0) if (ret != 0)
goto out; goto out;
log("register VIDEO/VBI devices"); log("register VIDEO/VBI devices");
@ -1665,4 +1633,3 @@ out:
pd_video_exit(pd); pd_video_exit(pd);
return ret; return ret;
} }