diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2013-02-04 06:17:42 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-03-05 12:38:10 -0500 |
commit | 968c60f60376a573460b6ef4991435d09528d48c (patch) | |
tree | 4e2725a912cad7f7611314ec9f99ca80ab7936a9 | |
parent | e144760a33e3f09ccf6f3abb186920753f27a998 (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.c | 10 | ||||
-rw-r--r-- | drivers/media/usb/stkwebcam/stk-webcam.h | 2 |
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 | ||
1385 | error: | 1391 | error: |
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 | ||
93 | struct stk_camera { | 94 | struct 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; |