aboutsummaryrefslogtreecommitdiffstats
path: root/include/media/v4l2-dev.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2009-12-09 06:38:49 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-03-21 19:32:42 -0400
commit2096a5dcf9704f5a86ecba37169eb813aaf0431c (patch)
tree21e7d870302a7c6748667a785b465a7a84805228 /include/media/v4l2-dev.h
parent0070d91e5b5ae594116202ab7d62d8264830b1cd (diff)
[media] v4l: subdev: Add device node support
Create a device node named subdevX for every registered subdev. As the device node is registered before the subdev core::s_config function is called, return -EGAIN on open until initialization completes. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Vimarsh Zutshi <vimarsh.zutshi@gmail.com> Acked-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media/v4l2-dev.h')
-rw-r--r--include/media/v4l2-dev.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 15802a067a12..4fe6831b1851 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -21,7 +21,8 @@
21#define VFL_TYPE_GRABBER 0 21#define VFL_TYPE_GRABBER 0
22#define VFL_TYPE_VBI 1 22#define VFL_TYPE_VBI 1
23#define VFL_TYPE_RADIO 2 23#define VFL_TYPE_RADIO 2
24#define VFL_TYPE_MAX 3 24#define VFL_TYPE_SUBDEV 3
25#define VFL_TYPE_MAX 4
25 26
26struct v4l2_ioctl_callbacks; 27struct v4l2_ioctl_callbacks;
27struct video_device; 28struct video_device;
@@ -102,15 +103,26 @@ struct video_device
102/* dev to video-device */ 103/* dev to video-device */
103#define to_video_device(cd) container_of(cd, struct video_device, dev) 104#define to_video_device(cd) container_of(cd, struct video_device, dev)
104 105
106int __must_check __video_register_device(struct video_device *vdev, int type,
107 int nr, int warn_if_nr_in_use, struct module *owner);
108
105/* Register video devices. Note that if video_register_device fails, 109/* Register video devices. Note that if video_register_device fails,
106 the release() callback of the video_device structure is *not* called, so 110 the release() callback of the video_device structure is *not* called, so
107 the caller is responsible for freeing any data. Usually that means that 111 the caller is responsible for freeing any data. Usually that means that
108 you call video_device_release() on failure. */ 112 you call video_device_release() on failure. */
109int __must_check video_register_device(struct video_device *vdev, int type, int nr); 113static inline int __must_check video_register_device(struct video_device *vdev,
114 int type, int nr)
115{
116 return __video_register_device(vdev, type, nr, 1, vdev->fops->owner);
117}
110 118
111/* Same as video_register_device, but no warning is issued if the desired 119/* Same as video_register_device, but no warning is issued if the desired
112 device node number was already in use. */ 120 device node number was already in use. */
113int __must_check video_register_device_no_warn(struct video_device *vdev, int type, int nr); 121static inline int __must_check video_register_device_no_warn(
122 struct video_device *vdev, int type, int nr)
123{
124 return __video_register_device(vdev, type, nr, 0, vdev->fops->owner);
125}
114 126
115/* Unregister video devices. Will do nothing if vdev == NULL or 127/* Unregister video devices. Will do nothing if vdev == NULL or
116 video_is_registered() returns false. */ 128 video_is_registered() returns false. */