diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-24 13:21:51 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-24 13:21:51 -0400 |
commit | ab11ca34eea8fda7a1a9302d86f6ef6108ffd68f (patch) | |
tree | 987ec6c263f3dfa4a7a6f9ce4d5ece47cbc12e29 /Documentation/video4linux | |
parent | f9369910a6225b8d4892c3f20ae740a711cd5ace (diff) | |
parent | 71006fb22b0f5a2045605b3887ee99a0e9adafe4 (diff) |
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
- some V4L2 API updates needed by embedded devices
- DVB API extensions for ATSC-MH delivery system, used in US for mobile
TV
- new tuners for fc0011/0012/0013 and tua9001
- a new dvb driver for af9033/9035
- a new ATSC-MH frontend (lg2160)
- new remote controller keymaps
- Removal of a few legacy webcam driver that got replaced by gspca on
several kernel versions ago
- a new driver for Exynos 4/5 webcams(s5pp fimc-lite)
- a new webcam sensor driver (smiapp)
- a new video input driver for embedded (sta2x1xx)
- several improvements, fixes, cleanups, etc inside the drivers.
Manually fix up conflicts due to err() -> dev_err() conversion in
drivers/staging/media/easycap/easycap_main.c
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (484 commits)
[media] saa7134-cards: Remove a PCI entry added by mistake
[media] radio-sf16fmi: add support for SF16-FMD
[media] rc-loopback: remove duplicate line
[media] patch for Asus My Cinema PS3-100 (1043:48cd)
[media] au0828: Move the Kconfig knob under V4L_USB_DRIVERS
[media] em28xx: simple comment fix
[media] [resend] radio-sf16fmr2: add PnP support for SF16-FMD2
[media] smiapp: Use v4l2_ctrl_new_int_menu() instead of v4l2_ctrl_new_custom()
[media] smiapp: Add support for 8-bit uncompressed formats
[media] smiapp: Allow generic quirk registers
[media] smiapp: Use non-binning limits if the binning limit is zero
[media] smiapp: Initialise rval in smiapp_read_nvm()
[media] smiapp: Round minimum pre_pll up rather than down in ip_clk_freq check
[media] smiapp: Use 8-bit reads only before identifying the sensor
[media] smiapp: Quirk for sensors that only do 8-bit reads
[media] smiapp: Pass struct sensor to register writing commands instead of i2c_client
[media] smiapp: Allow using external clock from the clock framework
[media] zl10353: change .read_snr() to report SNR as a 0.1 dB
[media] media: add support to gspca/pac7302.c for 093a:2627 (Genius FaceCam 300)
[media] m88rs2000 - only flip bit 2 on reg 0x70 on 16th try
...
Diffstat (limited to 'Documentation/video4linux')
-rw-r--r-- | Documentation/video4linux/4CCs.txt | 32 | ||||
-rw-r--r-- | Documentation/video4linux/gspca.txt | 1 | ||||
-rw-r--r-- | Documentation/video4linux/v4l2-controls.txt | 21 | ||||
-rw-r--r-- | Documentation/video4linux/v4l2-framework.txt | 106 |
4 files changed, 142 insertions, 18 deletions
diff --git a/Documentation/video4linux/4CCs.txt b/Documentation/video4linux/4CCs.txt new file mode 100644 index 000000000000..41241af1ebfe --- /dev/null +++ b/Documentation/video4linux/4CCs.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | Guidelines for Linux4Linux pixel format 4CCs | ||
2 | ============================================ | ||
3 | |||
4 | Guidelines for Video4Linux 4CC codes defined using v4l2_fourcc() are | ||
5 | specified in this document. First of the characters defines the nature of | ||
6 | the pixel format, compression and colour space. The interpretation of the | ||
7 | other three characters depends on the first one. | ||
8 | |||
9 | Existing 4CCs may not obey these guidelines. | ||
10 | |||
11 | Formats | ||
12 | ======= | ||
13 | |||
14 | Raw bayer | ||
15 | --------- | ||
16 | |||
17 | The following first characters are used by raw bayer formats: | ||
18 | |||
19 | B: raw bayer, uncompressed | ||
20 | b: raw bayer, DPCM compressed | ||
21 | a: A-law compressed | ||
22 | u: u-law compressed | ||
23 | |||
24 | 2nd character: pixel order | ||
25 | B: BGGR | ||
26 | G: GBRG | ||
27 | g: GRBG | ||
28 | R: RGGB | ||
29 | |||
30 | 3rd character: uncompressed bits-per-pixel 0--9, A-- | ||
31 | |||
32 | 4th character: compressed bits-per-pixel 0--9, A-- | ||
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index e6c2842407a4..1e6b6531bbcc 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
@@ -276,6 +276,7 @@ pac7302 093a:2622 Genius Eye 312 | |||
276 | pac7302 093a:2624 PAC7302 | 276 | pac7302 093a:2624 PAC7302 |
277 | pac7302 093a:2625 Genius iSlim 310 | 277 | pac7302 093a:2625 Genius iSlim 310 |
278 | pac7302 093a:2626 Labtec 2200 | 278 | pac7302 093a:2626 Labtec 2200 |
279 | pac7302 093a:2627 Genius FaceCam 300 | ||
279 | pac7302 093a:2628 Genius iLook 300 | 280 | pac7302 093a:2628 Genius iLook 300 |
280 | pac7302 093a:2629 Genious iSlim 300 | 281 | pac7302 093a:2629 Genious iSlim 300 |
281 | pac7302 093a:262a Webcam 300k | 282 | pac7302 093a:262a Webcam 300k |
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt index e2492a9d1027..43da22b89728 100644 --- a/Documentation/video4linux/v4l2-controls.txt +++ b/Documentation/video4linux/v4l2-controls.txt | |||
@@ -130,8 +130,18 @@ Menu controls are added by calling v4l2_ctrl_new_std_menu: | |||
130 | const struct v4l2_ctrl_ops *ops, | 130 | const struct v4l2_ctrl_ops *ops, |
131 | u32 id, s32 max, s32 skip_mask, s32 def); | 131 | u32 id, s32 max, s32 skip_mask, s32 def); |
132 | 132 | ||
133 | Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu: | ||
134 | |||
135 | struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, | ||
136 | const struct v4l2_ctrl_ops *ops, | ||
137 | u32 id, s32 max, s32 def, const s64 *qmenu_int); | ||
138 | |||
133 | These functions are typically called right after the v4l2_ctrl_handler_init: | 139 | These functions are typically called right after the v4l2_ctrl_handler_init: |
134 | 140 | ||
141 | static const s64 exp_bias_qmenu[] = { | ||
142 | -2, -1, 0, 1, 2 | ||
143 | }; | ||
144 | |||
135 | v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); | 145 | v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); |
136 | v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, | 146 | v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, |
137 | V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); | 147 | V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); |
@@ -141,6 +151,11 @@ These functions are typically called right after the v4l2_ctrl_handler_init: | |||
141 | V4L2_CID_POWER_LINE_FREQUENCY, | 151 | V4L2_CID_POWER_LINE_FREQUENCY, |
142 | V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, | 152 | V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, |
143 | V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); | 153 | V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); |
154 | v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops, | ||
155 | V4L2_CID_EXPOSURE_BIAS, | ||
156 | ARRAY_SIZE(exp_bias_qmenu) - 1, | ||
157 | ARRAY_SIZE(exp_bias_qmenu) / 2 - 1, | ||
158 | exp_bias_qmenu); | ||
144 | ... | 159 | ... |
145 | if (foo->ctrl_handler.error) { | 160 | if (foo->ctrl_handler.error) { |
146 | int err = foo->ctrl_handler.error; | 161 | int err = foo->ctrl_handler.error; |
@@ -164,6 +179,12 @@ controls. There is no min argument since that is always 0 for menu controls, | |||
164 | and instead of a step there is a skip_mask argument: if bit X is 1, then menu | 179 | and instead of a step there is a skip_mask argument: if bit X is 1, then menu |
165 | item X is skipped. | 180 | item X is skipped. |
166 | 181 | ||
182 | The v4l2_ctrl_new_int_menu function creates a new standard integer menu | ||
183 | control with driver-specific items in the menu. It differs from | ||
184 | v4l2_ctrl_new_std_menu in that it doesn't have the mask argument and takes | ||
185 | as the last argument an array of signed 64-bit integers that form an exact | ||
186 | menu item list. | ||
187 | |||
167 | Note that if something fails, the function will return NULL or an error and | 188 | Note that if something fails, the function will return NULL or an error and |
168 | set ctrl_handler->error to the error code. If ctrl_handler->error was already | 189 | set ctrl_handler->error to the error code. If ctrl_handler->error was already |
169 | set, then it will just return and do nothing. This is also true for | 190 | set, then it will just return and do nothing. This is also true for |
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index 659b2ba12a4f..1f5905270050 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
@@ -182,11 +182,11 @@ static int __devinit drv_probe(struct pci_dev *pdev, | |||
182 | } | 182 | } |
183 | 183 | ||
184 | If you have multiple device nodes then it can be difficult to know when it is | 184 | If you have multiple device nodes then it can be difficult to know when it is |
185 | safe to unregister v4l2_device. For this purpose v4l2_device has refcounting | 185 | safe to unregister v4l2_device for hotpluggable devices. For this purpose |
186 | support. The refcount is increased whenever video_register_device is called and | 186 | v4l2_device has refcounting support. The refcount is increased whenever |
187 | it is decreased whenever that device node is released. When the refcount reaches | 187 | video_register_device is called and it is decreased whenever that device node |
188 | zero, then the v4l2_device release() callback is called. You can do your final | 188 | is released. When the refcount reaches zero, then the v4l2_device release() |
189 | cleanup there. | 189 | callback is called. You can do your final cleanup there. |
190 | 190 | ||
191 | If other device nodes (e.g. ALSA) are created, then you can increase and | 191 | If other device nodes (e.g. ALSA) are created, then you can increase and |
192 | decrease the refcount manually as well by calling: | 192 | decrease the refcount manually as well by calling: |
@@ -197,6 +197,10 @@ or: | |||
197 | 197 | ||
198 | int v4l2_device_put(struct v4l2_device *v4l2_dev); | 198 | int v4l2_device_put(struct v4l2_device *v4l2_dev); |
199 | 199 | ||
200 | Since the initial refcount is 1 you also need to call v4l2_device_put in the | ||
201 | disconnect() callback (for USB devices) or in the remove() callback (for e.g. | ||
202 | PCI devices), otherwise the refcount will never reach 0. | ||
203 | |||
200 | struct v4l2_subdev | 204 | struct v4l2_subdev |
201 | ------------------ | 205 | ------------------ |
202 | 206 | ||
@@ -262,11 +266,16 @@ struct v4l2_subdev_video_ops { | |||
262 | ... | 266 | ... |
263 | }; | 267 | }; |
264 | 268 | ||
269 | struct v4l2_subdev_pad_ops { | ||
270 | ... | ||
271 | }; | ||
272 | |||
265 | struct v4l2_subdev_ops { | 273 | struct v4l2_subdev_ops { |
266 | const struct v4l2_subdev_core_ops *core; | 274 | const struct v4l2_subdev_core_ops *core; |
267 | const struct v4l2_subdev_tuner_ops *tuner; | 275 | const struct v4l2_subdev_tuner_ops *tuner; |
268 | const struct v4l2_subdev_audio_ops *audio; | 276 | const struct v4l2_subdev_audio_ops *audio; |
269 | const struct v4l2_subdev_video_ops *video; | 277 | const struct v4l2_subdev_video_ops *video; |
278 | const struct v4l2_subdev_pad_ops *video; | ||
270 | }; | 279 | }; |
271 | 280 | ||
272 | The core ops are common to all subdevs, the other categories are implemented | 281 | The core ops are common to all subdevs, the other categories are implemented |
@@ -303,6 +312,22 @@ Don't forget to cleanup the media entity before the sub-device is destroyed: | |||
303 | 312 | ||
304 | media_entity_cleanup(&sd->entity); | 313 | media_entity_cleanup(&sd->entity); |
305 | 314 | ||
315 | If the subdev driver intends to process video and integrate with the media | ||
316 | framework, it must implement format related functionality using | ||
317 | v4l2_subdev_pad_ops instead of v4l2_subdev_video_ops. | ||
318 | |||
319 | In that case, the subdev driver may set the link_validate field to provide | ||
320 | its own link validation function. The link validation function is called for | ||
321 | every link in the pipeline where both of the ends of the links are V4L2 | ||
322 | sub-devices. The driver is still responsible for validating the correctness | ||
323 | of the format configuration between sub-devices and video nodes. | ||
324 | |||
325 | If link_validate op is not set, the default function | ||
326 | v4l2_subdev_link_validate_default() is used instead. This function ensures | ||
327 | that width, height and the media bus pixel code are equal on both source and | ||
328 | sink of the link. Subdev drivers are also free to use this function to | ||
329 | perform the checks mentioned above in addition to their own checks. | ||
330 | |||
306 | A device (bridge) driver needs to register the v4l2_subdev with the | 331 | A device (bridge) driver needs to register the v4l2_subdev with the |
307 | v4l2_device: | 332 | v4l2_device: |
308 | 333 | ||
@@ -555,19 +580,25 @@ allocated memory. | |||
555 | You should also set these fields: | 580 | You should also set these fields: |
556 | 581 | ||
557 | - v4l2_dev: set to the v4l2_device parent device. | 582 | - v4l2_dev: set to the v4l2_device parent device. |
583 | |||
558 | - name: set to something descriptive and unique. | 584 | - name: set to something descriptive and unique. |
585 | |||
559 | - fops: set to the v4l2_file_operations struct. | 586 | - fops: set to the v4l2_file_operations struct. |
587 | |||
560 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance | 588 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance |
561 | (highly recommended to use this and it might become compulsory in the | 589 | (highly recommended to use this and it might become compulsory in the |
562 | future!), then set this to your v4l2_ioctl_ops struct. | 590 | future!), then set this to your v4l2_ioctl_ops struct. |
591 | |||
563 | - lock: leave to NULL if you want to do all the locking in the driver. | 592 | - lock: leave to NULL if you want to do all the locking in the driver. |
564 | Otherwise you give it a pointer to a struct mutex_lock and before any | 593 | Otherwise you give it a pointer to a struct mutex_lock and before the |
565 | of the v4l2_file_operations is called this lock will be taken by the | 594 | unlocked_ioctl file operation is called this lock will be taken by the |
566 | core and released afterwards. | 595 | core and released afterwards. See the next section for more details. |
596 | |||
567 | - prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. | 597 | - prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. |
568 | If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. | 598 | If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. |
569 | If you want to have a separate priority state per (group of) device node(s), | 599 | If you want to have a separate priority state per (group of) device node(s), |
570 | then you can point it to your own struct v4l2_prio_state. | 600 | then you can point it to your own struct v4l2_prio_state. |
601 | |||
571 | - parent: you only set this if v4l2_device was registered with NULL as | 602 | - parent: you only set this if v4l2_device was registered with NULL as |
572 | the parent device struct. This only happens in cases where one hardware | 603 | the parent device struct. This only happens in cases where one hardware |
573 | device has multiple PCI devices that all share the same v4l2_device core. | 604 | device has multiple PCI devices that all share the same v4l2_device core. |
@@ -577,6 +608,7 @@ You should also set these fields: | |||
577 | (cx8802). Since the v4l2_device cannot be associated with a particular | 608 | (cx8802). Since the v4l2_device cannot be associated with a particular |
578 | PCI device it is setup without a parent device. But when the struct | 609 | PCI device it is setup without a parent device. But when the struct |
579 | video_device is setup you do know which parent PCI device to use. | 610 | video_device is setup you do know which parent PCI device to use. |
611 | |||
580 | - flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework | 612 | - flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework |
581 | handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct | 613 | handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct |
582 | v4l2_fh. Eventually this flag will disappear once all drivers use the core | 614 | v4l2_fh. Eventually this flag will disappear once all drivers use the core |
@@ -587,6 +619,16 @@ in your v4l2_file_operations struct. | |||
587 | 619 | ||
588 | Do not use .ioctl! This is deprecated and will go away in the future. | 620 | Do not use .ioctl! This is deprecated and will go away in the future. |
589 | 621 | ||
622 | In some cases you want to tell the core that a function you had specified in | ||
623 | your v4l2_ioctl_ops should be ignored. You can mark such ioctls by calling this | ||
624 | function before video_device_register is called: | ||
625 | |||
626 | void v4l2_disable_ioctl(struct video_device *vdev, unsigned int cmd); | ||
627 | |||
628 | This tends to be needed if based on external factors (e.g. which card is | ||
629 | being used) you want to turns off certain features in v4l2_ioctl_ops without | ||
630 | having to make a new struct. | ||
631 | |||
590 | The v4l2_file_operations struct is a subset of file_operations. The main | 632 | The v4l2_file_operations struct is a subset of file_operations. The main |
591 | difference is that the inode argument is omitted since it is never used. | 633 | difference is that the inode argument is omitted since it is never used. |
592 | 634 | ||
@@ -609,8 +651,22 @@ v4l2_file_operations and locking | |||
609 | -------------------------------- | 651 | -------------------------------- |
610 | 652 | ||
611 | You can set a pointer to a mutex_lock in struct video_device. Usually this | 653 | You can set a pointer to a mutex_lock in struct video_device. Usually this |
612 | will be either a top-level mutex or a mutex per device node. If you want | 654 | will be either a top-level mutex or a mutex per device node. By default this |
613 | finer-grained locking then you have to set it to NULL and do you own locking. | 655 | lock will be used for unlocked_ioctl, but you can disable locking for |
656 | selected ioctls by calling: | ||
657 | |||
658 | void v4l2_disable_ioctl_locking(struct video_device *vdev, unsigned int cmd); | ||
659 | |||
660 | E.g.: v4l2_disable_ioctl_locking(vdev, VIDIOC_DQBUF); | ||
661 | |||
662 | You have to call this before you register the video_device. | ||
663 | |||
664 | Particularly with USB drivers where certain commands such as setting controls | ||
665 | can take a long time you may want to do your own locking for the buffer queuing | ||
666 | ioctls. | ||
667 | |||
668 | If you want still finer-grained locking then you have to set mutex_lock to NULL | ||
669 | and do you own locking completely. | ||
614 | 670 | ||
615 | It is up to the driver developer to decide which method to use. However, if | 671 | It is up to the driver developer to decide which method to use. However, if |
616 | your driver has high-latency operations (for example, changing the exposure | 672 | your driver has high-latency operations (for example, changing the exposure |
@@ -618,7 +674,7 @@ of a USB webcam might take a long time), then you might be better off with | |||
618 | doing your own locking if you want to allow the user to do other things with | 674 | doing your own locking if you want to allow the user to do other things with |
619 | the device while waiting for the high-latency command to finish. | 675 | the device while waiting for the high-latency command to finish. |
620 | 676 | ||
621 | If a lock is specified then all file operations will be serialized on that | 677 | If a lock is specified then all ioctl commands will be serialized on that |
622 | lock. If you use videobuf then you must pass the same lock to the videobuf | 678 | lock. If you use videobuf then you must pass the same lock to the videobuf |
623 | queue initialize function: if videobuf has to wait for a frame to arrive, then | 679 | queue initialize function: if videobuf has to wait for a frame to arrive, then |
624 | it will temporarily unlock the lock and relock it afterwards. If your driver | 680 | it will temporarily unlock the lock and relock it afterwards. If your driver |
@@ -941,21 +997,35 @@ fast. | |||
941 | 997 | ||
942 | Useful functions: | 998 | Useful functions: |
943 | 999 | ||
944 | - v4l2_event_queue() | 1000 | void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev) |
945 | 1001 | ||
946 | Queue events to video device. The driver's only responsibility is to fill | 1002 | Queue events to video device. The driver's only responsibility is to fill |
947 | in the type and the data fields. The other fields will be filled in by | 1003 | in the type and the data fields. The other fields will be filled in by |
948 | V4L2. | 1004 | V4L2. |
949 | 1005 | ||
950 | - v4l2_event_subscribe() | 1006 | int v4l2_event_subscribe(struct v4l2_fh *fh, |
1007 | struct v4l2_event_subscription *sub, unsigned elems, | ||
1008 | const struct v4l2_subscribed_event_ops *ops) | ||
951 | 1009 | ||
952 | The video_device->ioctl_ops->vidioc_subscribe_event must check the driver | 1010 | The video_device->ioctl_ops->vidioc_subscribe_event must check the driver |
953 | is able to produce events with specified event id. Then it calls | 1011 | is able to produce events with specified event id. Then it calls |
954 | v4l2_event_subscribe() to subscribe the event. The last argument is the | 1012 | v4l2_event_subscribe() to subscribe the event. |
955 | size of the event queue for this event. If it is 0, then the framework | 1013 | |
956 | will fill in a default value (this depends on the event type). | 1014 | The elems argument is the size of the event queue for this event. If it is 0, |
1015 | then the framework will fill in a default value (this depends on the event | ||
1016 | type). | ||
1017 | |||
1018 | The ops argument allows the driver to specify a number of callbacks: | ||
1019 | * add: called when a new listener gets added (subscribing to the same | ||
1020 | event twice will only cause this callback to get called once) | ||
1021 | * del: called when a listener stops listening | ||
1022 | * replace: replace event 'old' with event 'new'. | ||
1023 | * merge: merge event 'old' into event 'new'. | ||
1024 | All 4 callbacks are optional, if you don't want to specify any callbacks | ||
1025 | the ops argument itself maybe NULL. | ||
957 | 1026 | ||
958 | - v4l2_event_unsubscribe() | 1027 | int v4l2_event_unsubscribe(struct v4l2_fh *fh, |
1028 | struct v4l2_event_subscription *sub) | ||
959 | 1029 | ||
960 | vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use | 1030 | vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use |
961 | v4l2_event_unsubscribe() directly unless it wants to be involved in | 1031 | v4l2_event_unsubscribe() directly unless it wants to be involved in |
@@ -964,7 +1034,7 @@ Useful functions: | |||
964 | The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The | 1034 | The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The |
965 | drivers may want to handle this in a special way. | 1035 | drivers may want to handle this in a special way. |
966 | 1036 | ||
967 | - v4l2_event_pending() | 1037 | int v4l2_event_pending(struct v4l2_fh *fh) |
968 | 1038 | ||
969 | Returns the number of pending events. Useful when implementing poll. | 1039 | Returns the number of pending events. Useful when implementing poll. |
970 | 1040 | ||