|
@@ -247,20 +247,28 @@ performed using the :c:func:`v4l2_async_unregister_subdev` call. Subdevices
|
|
|
registered this way are stored in a global list of subdevices, ready to be
|
|
|
picked up by bridge drivers.
|
|
|
|
|
|
-Bridge drivers in turn have to register a notifier object with an array of
|
|
|
-subdevice descriptors that the bridge device needs for its operation. This is
|
|
|
+Bridge drivers in turn have to register a notifier object. This is
|
|
|
performed using the :c:func:`v4l2_async_notifier_register` call. To
|
|
|
unregister the notifier the driver has to call
|
|
|
:c:func:`v4l2_async_notifier_unregister`. The former of the two functions
|
|
|
-takes two arguments: a pointer to struct :c:type:`v4l2_device` and a pointer to
|
|
|
-struct :c:type:`v4l2_async_notifier`. The latter contains a pointer to an array
|
|
|
-of pointers to subdevice descriptors of type struct :c:type:`v4l2_async_subdev`
|
|
|
-type. The V4L2 core will then use these descriptors to match asynchronously
|
|
|
-registered
|
|
|
-subdevices to them. If a match is detected the ``.bound()`` notifier callback
|
|
|
-is called. After all subdevices have been located the .complete() callback is
|
|
|
-called. When a subdevice is removed from the system the .unbind() method is
|
|
|
-called. All three callbacks are optional.
|
|
|
+takes two arguments: a pointer to struct :c:type:`v4l2_device` and a
|
|
|
+pointer to struct :c:type:`v4l2_async_notifier`.
|
|
|
+
|
|
|
+Before registering the notifier, bridge drivers must do two things:
|
|
|
+first, the notifier must be initialized using the
|
|
|
+:c:func:`v4l2_async_notifier_init`. Second, bridge drivers can then
|
|
|
+begin to form a list of subdevice descriptors that the bridge device
|
|
|
+needs for its operation. Subdevice descriptors are added to the notifier
|
|
|
+using the :c:func:`v4l2_async_notifier_add_subdev` call. This function
|
|
|
+takes two arguments: a pointer to struct :c:type:`v4l2_async_notifier`,
|
|
|
+and a pointer to the subdevice descripter, which is of type struct
|
|
|
+:c:type:`v4l2_async_subdev`.
|
|
|
+
|
|
|
+The V4L2 core will then use these descriptors to match asynchronously
|
|
|
+registered subdevices to them. If a match is detected the ``.bound()``
|
|
|
+notifier callback is called. After all subdevices have been located the
|
|
|
+.complete() callback is called. When a subdevice is removed from the
|
|
|
+system the .unbind() method is called. All three callbacks are optional.
|
|
|
|
|
|
V4L2 sub-device userspace API
|
|
|
-----------------------------
|