[media] tlg2300: embed video_device instead of allocating it
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 12 Jul 2012 15:39:58 +0000 (12:39 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 4 Mar 2013 20:31:59 +0000 (17:31 -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-radio.c

index 5dd73b7857d12087a7689c4d4dbe81bce77c3c6e..3a89128c3fc5225b7899610a24ec1053aac1887a 100644 (file)
@@ -118,7 +118,7 @@ struct radio_data {
        int             users;
        unsigned int    is_radio_streaming;
        int             pre_emphasis;
-       struct video_device *fm_dev;
+       struct video_device fm_dev;
 };
 
 #define DVB_SBUF_NUM           4
index 4c76e0894d9e0d98ea2d2fd718b7dda3d409d64a..719c3da2219312ce0727c66db21eab420bee5679 100644 (file)
@@ -369,31 +369,23 @@ static struct video_device poseidon_fm_template = {
        .name       = "Telegent-Radio",
        .fops       = &poseidon_fm_fops,
        .minor      = -1,
-       .release    = video_device_release,
+       .release    = video_device_release_empty,
        .ioctl_ops  = &poseidon_fm_ioctl_ops,
 };
 
 int poseidon_fm_init(struct poseidon *p)
 {
-       struct video_device *fm_dev;
-       int err;
+       struct video_device *vfd = &p->radio_data.fm_dev;
 
-       fm_dev = vdev_init(p, &poseidon_fm_template);
-       if (fm_dev == NULL)
-               return -ENOMEM;
+       *vfd = poseidon_fm_template;
+       vfd->v4l2_dev   = &p->v4l2_dev;
+       video_set_drvdata(vfd, p);
 
-       p->radio_data.fm_dev = fm_dev;
        set_frequency(p, TUNER_FREQ_MIN_FM);
-       err = video_register_device(fm_dev, VFL_TYPE_RADIO, -1);
-       if (err < 0) {
-               video_device_release(fm_dev);
-               return err;
-       }
-       return 0;
+       return video_register_device(vfd, VFL_TYPE_RADIO, -1);
 }
 
 int poseidon_fm_exit(struct poseidon *p)
 {
-       destroy_video_device(&p->radio_data.fm_dev);
        return 0;
 }