media: v4l2: async: Add v4l2_async_notifier_add_subdev
commitb47d7ff1ae8d40eef92abbe718316c8a56558744
authorSteve Longerbeam <slongerbeam@gmail.com>
Sat, 29 Sep 2018 19:54:06 +0000 (29 15:54 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 4 Oct 2018 19:17:33 +0000 (4 15:17 -0400)
treefc9ab32839a16e72aa9773c01704c6ffc762d042
parenta6e7003c35e185b0fe4245bdfd086021de9ec305
media: v4l2: async: Add v4l2_async_notifier_add_subdev

v4l2_async_notifier_add_subdev() adds an asd to the notifier. It checks
that no other equivalent asd's have already been added to this notifier's
asd list, or to other registered notifier's waiting or done lists, and
increments num_subdevs.

v4l2_async_notifier_add_subdev() does not make use of the notifier subdevs
array, otherwise it would have to re-allocate the array every time the
function was called. In place of the subdevs array, the function adds
the newly allocated asd to a new master asd_list. The function will
return error with a WARN() if it is ever called with the subdevs array
allocated.

Drivers are now required to call a v4l2_async_notifier_init(), before the
first call to v4l2_async_notifier_add_subdev(), in order to initialize
the asd_list.

In v4l2_async_notifier_has_async_subdev(), __v4l2_async_notifier_register(),
and v4l2_async_notifier_cleanup(), maintain backward compatibility with
the subdevs array, by alternatively operate on the subdevs array or a
non-empty notifier->asd_list.

Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/v4l2-core/v4l2-async.c
include/media/v4l2-async.h