From 17dfd84f5bfa7b32f866630fbb2d7b988823e56b Mon Sep 17 00:00:00 2001 From: Dmitri Belimov Date: Thu, 13 Jan 2011 00:46:07 -0300 Subject: [PATCH] --- yaml --- r: 232229 b: refs/heads/master c: 3c61be446ae5c26e2829d37c6b5d02d3af536024 h: refs/heads/master i: 232227: 2bcc75272b893082d8a63adc00e490991d5ed338 v: v3 --- [refs] | 2 +- trunk/drivers/staging/tm6000/tm6000-video.c | 46 ++++++++++++++++----- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 71881048978c..f22801a6de2d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2400982a2e8a8e4e95f0a0e1517bbe63cc88038f +refs/heads/master: 3c61be446ae5c26e2829d37c6b5d02d3af536024 diff --git a/trunk/drivers/staging/tm6000/tm6000-video.c b/trunk/drivers/staging/tm6000/tm6000-video.c index 8fe017c3721f..eb9b9f1bc138 100644 --- a/trunk/drivers/staging/tm6000/tm6000-video.c +++ b/trunk/drivers/staging/tm6000/tm6000-video.c @@ -1450,29 +1450,55 @@ static struct video_device tm6000_template = { * ------------------------------------------------------------------ */ -int tm6000_v4l2_register(struct tm6000_core *dev) +static struct video_device *vdev_init(struct tm6000_core *dev, + const struct video_device + *template, const char *type_name) { - int ret = -1; struct video_device *vfd; vfd = video_device_alloc(); - if(!vfd) { + if (NULL == vfd) + return NULL; + + *vfd = *template; + vfd->v4l2_dev = &dev->v4l2_dev; + vfd->release = video_device_release; + vfd->debug = tm6000_debug; + vfd->lock = &dev->lock; + + snprintf(vfd->name, sizeof(vfd->name), "%s %s", dev->name, type_name); + + video_set_drvdata(vfd, dev); + return vfd; +} + +int tm6000_v4l2_register(struct tm6000_core *dev) +{ + int ret = -1; + + dev->vfd = vdev_init(dev, &tm6000_template, "video"); + + if (!dev->vfd) { + printk(KERN_INFO "%s: can't register video device\n", + dev->name); return -ENOMEM; } - dev->vfd = vfd; /* init video dma queues */ INIT_LIST_HEAD(&dev->vidq.active); INIT_LIST_HEAD(&dev->vidq.queued); - memcpy(dev->vfd, &tm6000_template, sizeof(*(dev->vfd))); - dev->vfd->debug = tm6000_debug; - dev->vfd->lock = &dev->lock; + ret = video_register_device(dev->vfd, VFL_TYPE_GRABBER, video_nr); - vfd->v4l2_dev = &dev->v4l2_dev; - video_set_drvdata(vfd, dev); + if (ret < 0) { + printk(KERN_INFO "%s: can't register video device\n", + dev->name); + return ret; + } + + printk(KERN_INFO "%s: registered device %s\n", + dev->name, video_device_node_name(dev->vfd)); - ret = video_register_device(dev->vfd, VFL_TYPE_GRABBER, video_nr); printk(KERN_INFO "Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load status: %d)\n", ret); return ret; }