Lines Matching refs:notifier

51 static struct v4l2_async_subdev *v4l2_async_belongs(struct v4l2_async_notifier *notifier,  in v4l2_async_belongs()  argument
57 list_for_each_entry(asd, &notifier->waiting, list) { in v4l2_async_belongs()
89 static int v4l2_async_test_notify(struct v4l2_async_notifier *notifier, in v4l2_async_test_notify() argument
98 sd->notifier = notifier; in v4l2_async_test_notify()
100 if (notifier->bound) { in v4l2_async_test_notify()
101 ret = notifier->bound(notifier, sd, asd); in v4l2_async_test_notify()
106 list_move(&sd->async_list, &notifier->done); in v4l2_async_test_notify()
108 ret = v4l2_device_register_subdev(notifier->v4l2_dev, sd); in v4l2_async_test_notify()
110 if (notifier->unbind) in v4l2_async_test_notify()
111 notifier->unbind(notifier, sd, asd); in v4l2_async_test_notify()
115 if (list_empty(&notifier->waiting) && notifier->complete) in v4l2_async_test_notify()
116 return notifier->complete(notifier); in v4l2_async_test_notify()
131 struct v4l2_async_notifier *notifier) in v4l2_async_notifier_register() argument
137 if (!notifier->num_subdevs || notifier->num_subdevs > V4L2_MAX_SUBDEVS) in v4l2_async_notifier_register()
140 notifier->v4l2_dev = v4l2_dev; in v4l2_async_notifier_register()
141 INIT_LIST_HEAD(&notifier->waiting); in v4l2_async_notifier_register()
142 INIT_LIST_HEAD(&notifier->done); in v4l2_async_notifier_register()
144 for (i = 0; i < notifier->num_subdevs; i++) { in v4l2_async_notifier_register()
145 asd = notifier->subdevs[i]; in v4l2_async_notifier_register()
154 dev_err(notifier->v4l2_dev ? notifier->v4l2_dev->dev : NULL, in v4l2_async_notifier_register()
159 list_add_tail(&asd->list, &notifier->waiting); in v4l2_async_notifier_register()
165 list_add(&notifier->list, &notifier_list); in v4l2_async_notifier_register()
170 asd = v4l2_async_belongs(notifier, sd); in v4l2_async_notifier_register()
174 ret = v4l2_async_test_notify(notifier, sd, asd); in v4l2_async_notifier_register()
187 void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier) in v4l2_async_notifier_unregister() argument
190 unsigned int notif_n_subdev = notifier->num_subdevs; in v4l2_async_notifier_unregister()
195 if (!notifier->v4l2_dev) in v4l2_async_notifier_unregister()
200 dev_err(notifier->v4l2_dev->dev, in v4l2_async_notifier_unregister()
206 list_del(&notifier->list); in v4l2_async_notifier_unregister()
208 list_for_each_entry_safe(sd, tmp, &notifier->done, async_list) { in v4l2_async_notifier_unregister()
218 if (notifier->unbind) in v4l2_async_notifier_unregister()
219 notifier->unbind(notifier, sd, sd->asd); in v4l2_async_notifier_unregister()
256 notifier->v4l2_dev = NULL; in v4l2_async_notifier_unregister()
267 struct v4l2_async_notifier *notifier; in v4l2_async_register_subdev() local
273 list_for_each_entry(notifier, &notifier_list, list) { in v4l2_async_register_subdev()
274 struct v4l2_async_subdev *asd = v4l2_async_belongs(notifier, sd); in v4l2_async_register_subdev()
276 int ret = v4l2_async_test_notify(notifier, sd, asd); in v4l2_async_register_subdev()
293 struct v4l2_async_notifier *notifier = sd->notifier; in v4l2_async_unregister_subdev() local
303 list_add(&sd->asd->list, &notifier->waiting); in v4l2_async_unregister_subdev()
307 if (notifier->unbind) in v4l2_async_unregister_subdev()
308 notifier->unbind(notifier, sd, sd->asd); in v4l2_async_unregister_subdev()