diff options
author | Sakari Ailus <sakari.ailus@iki.fi> | 2010-03-03 10:49:38 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-03-21 19:32:42 -0400 |
commit | 02adb1cc765b8c29dc83c6602bda19003cce62f1 (patch) | |
tree | 067fd5a73251f6dc33567926c409a0b1070710ab /include/media | |
parent | ea8aa4349e11c62242a8908fc172de27d7a151d7 (diff) |
[media] v4l: subdev: Events support
Provide v4l2_subdevs with v4l2_event support. Subdev drivers only need very
little to support events.
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: David Cohen <dacohen@gmail.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/v4l2-subdev.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index 3276065022ef..0f9937be53d2 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h | |||
@@ -37,6 +37,8 @@ | |||
37 | 37 | ||
38 | struct v4l2_device; | 38 | struct v4l2_device; |
39 | struct v4l2_ctrl_handler; | 39 | struct v4l2_ctrl_handler; |
40 | struct v4l2_event_subscription; | ||
41 | struct v4l2_fh; | ||
40 | struct v4l2_subdev; | 42 | struct v4l2_subdev; |
41 | struct tuner_setup; | 43 | struct tuner_setup; |
42 | 44 | ||
@@ -161,6 +163,10 @@ struct v4l2_subdev_core_ops { | |||
161 | int (*s_power)(struct v4l2_subdev *sd, int on); | 163 | int (*s_power)(struct v4l2_subdev *sd, int on); |
162 | int (*interrupt_service_routine)(struct v4l2_subdev *sd, | 164 | int (*interrupt_service_routine)(struct v4l2_subdev *sd, |
163 | u32 status, bool *handled); | 165 | u32 status, bool *handled); |
166 | int (*subscribe_event)(struct v4l2_subdev *sd, struct v4l2_fh *fh, | ||
167 | struct v4l2_event_subscription *sub); | ||
168 | int (*unsubscribe_event)(struct v4l2_subdev *sd, struct v4l2_fh *fh, | ||
169 | struct v4l2_event_subscription *sub); | ||
164 | }; | 170 | }; |
165 | 171 | ||
166 | /* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio. | 172 | /* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio. |
@@ -437,6 +443,8 @@ struct v4l2_subdev_internal_ops { | |||
437 | #define V4L2_SUBDEV_FL_IS_SPI (1U << 1) | 443 | #define V4L2_SUBDEV_FL_IS_SPI (1U << 1) |
438 | /* Set this flag if this subdev needs a device node. */ | 444 | /* Set this flag if this subdev needs a device node. */ |
439 | #define V4L2_SUBDEV_FL_HAS_DEVNODE (1U << 2) | 445 | #define V4L2_SUBDEV_FL_HAS_DEVNODE (1U << 2) |
446 | /* Set this flag if this subdev generates events. */ | ||
447 | #define V4L2_SUBDEV_FL_HAS_EVENTS (1U << 3) | ||
440 | 448 | ||
441 | /* Each instance of a subdev driver should create this struct, either | 449 | /* Each instance of a subdev driver should create this struct, either |
442 | stand-alone or embedded in a larger struct. | 450 | stand-alone or embedded in a larger struct. |
@@ -460,6 +468,8 @@ struct v4l2_subdev { | |||
460 | void *host_priv; | 468 | void *host_priv; |
461 | /* subdev device node */ | 469 | /* subdev device node */ |
462 | struct video_device devnode; | 470 | struct video_device devnode; |
471 | /* number of events to be allocated on open */ | ||
472 | unsigned int nevents; | ||
463 | }; | 473 | }; |
464 | 474 | ||
465 | #define vdev_to_v4l2_subdev(vdev) \ | 475 | #define vdev_to_v4l2_subdev(vdev) \ |