aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2013-02-04 06:17:42 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-03-05 12:38:10 -0500
commit968c60f60376a573460b6ef4991435d09528d48c (patch)
tree4e2725a912cad7f7611314ec9f99ca80ab7936a9
parente144760a33e3f09ccf6f3abb186920753f27a998 (diff)
[media] stk-webcam: add support for struct v4l2_device
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Tested-by: Arvydas Sidorenko <asido4@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/usb/stkwebcam/stk-webcam.c10
-rw-r--r--drivers/media/usb/stkwebcam/stk-webcam.h2
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/media/usb/stkwebcam/stk-webcam.c b/drivers/media/usb/stkwebcam/stk-webcam.c
index e9dbe23122c3..eaf152c51ae2 100644
--- a/drivers/media/usb/stkwebcam/stk-webcam.c
+++ b/drivers/media/usb/stkwebcam/stk-webcam.c
@@ -1294,7 +1294,7 @@ static int stk_register_video_device(struct stk_camera *dev)
1294 1294
1295 dev->vdev = stk_v4l_data; 1295 dev->vdev = stk_v4l_data;
1296 dev->vdev.debug = debug; 1296 dev->vdev.debug = debug;
1297 dev->vdev.parent = &dev->interface->dev; 1297 dev->vdev.v4l2_dev = &dev->v4l2_dev;
1298 err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1); 1298 err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1);
1299 if (err) 1299 if (err)
1300 STK_ERROR("v4l registration failed\n"); 1300 STK_ERROR("v4l registration failed\n");
@@ -1323,6 +1323,12 @@ static int stk_camera_probe(struct usb_interface *interface,
1323 STK_ERROR("Out of memory !\n"); 1323 STK_ERROR("Out of memory !\n");
1324 return -ENOMEM; 1324 return -ENOMEM;
1325 } 1325 }
1326 err = v4l2_device_register(&interface->dev, &dev->v4l2_dev);
1327 if (err < 0) {
1328 dev_err(&udev->dev, "couldn't register v4l2_device\n");
1329 kfree(dev);
1330 return err;
1331 }
1326 1332
1327 spin_lock_init(&dev->spinlock); 1333 spin_lock_init(&dev->spinlock);
1328 init_waitqueue_head(&dev->wait_frame); 1334 init_waitqueue_head(&dev->wait_frame);
@@ -1383,6 +1389,7 @@ static int stk_camera_probe(struct usb_interface *interface,
1383 return 0; 1389 return 0;
1384 1390
1385error: 1391error:
1392 v4l2_device_unregister(&dev->v4l2_dev);
1386 kfree(dev); 1393 kfree(dev);
1387 return err; 1394 return err;
1388} 1395}
@@ -1400,6 +1407,7 @@ static void stk_camera_disconnect(struct usb_interface *interface)
1400 video_device_node_name(&dev->vdev)); 1407 video_device_node_name(&dev->vdev));
1401 1408
1402 video_unregister_device(&dev->vdev); 1409 video_unregister_device(&dev->vdev);
1410 v4l2_device_unregister(&dev->v4l2_dev);
1403} 1411}
1404 1412
1405#ifdef CONFIG_PM 1413#ifdef CONFIG_PM
diff --git a/drivers/media/usb/stkwebcam/stk-webcam.h b/drivers/media/usb/stkwebcam/stk-webcam.h
index 9f6736637571..49ebe855cba6 100644
--- a/drivers/media/usb/stkwebcam/stk-webcam.h
+++ b/drivers/media/usb/stkwebcam/stk-webcam.h
@@ -23,6 +23,7 @@
23#define STKWEBCAM_H 23#define STKWEBCAM_H
24 24
25#include <linux/usb.h> 25#include <linux/usb.h>
26#include <media/v4l2-device.h>
26#include <media/v4l2-common.h> 27#include <media/v4l2-common.h>
27 28
28#define DRIVER_VERSION "v0.0.1" 29#define DRIVER_VERSION "v0.0.1"
@@ -91,6 +92,7 @@ struct regval {
91}; 92};
92 93
93struct stk_camera { 94struct stk_camera {
95 struct v4l2_device v4l2_dev;
94 struct video_device vdev; 96 struct video_device vdev;
95 struct usb_device *udev; 97 struct usb_device *udev;
96 struct usb_interface *interface; 98 struct usb_interface *interface;