Lines Matching refs:sd

52 						    struct v4l2_subdev *sd)  in v4l2_async_belongs()  argument
82 if (match(sd->dev, asd)) in v4l2_async_belongs()
90 struct v4l2_subdev *sd, in v4l2_async_test_notify() argument
97 sd->asd = asd; in v4l2_async_test_notify()
98 sd->notifier = notifier; 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()
111 notifier->unbind(notifier, sd, asd); in v4l2_async_test_notify()
121 static void v4l2_async_cleanup(struct v4l2_subdev *sd) in v4l2_async_cleanup() argument
123 v4l2_device_unregister_subdev(sd); in v4l2_async_cleanup()
125 list_del_init(&sd->async_list); in v4l2_async_cleanup()
126 sd->asd = NULL; in v4l2_async_cleanup()
127 sd->dev = NULL; in v4l2_async_cleanup()
133 struct v4l2_subdev *sd, *tmp; in v4l2_async_notifier_register() local
167 list_for_each_entry_safe(sd, tmp, &subdev_list, async_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()
189 struct v4l2_subdev *sd, *tmp; in v4l2_async_notifier_unregister() local
208 list_for_each_entry_safe(sd, tmp, &notifier->done, async_list) { in v4l2_async_notifier_unregister()
211 d = get_device(sd->dev); in v4l2_async_notifier_unregister()
213 v4l2_async_cleanup(sd); in v4l2_async_notifier_unregister()
219 notifier->unbind(notifier, sd, sd->asd); in v4l2_async_notifier_unregister()
265 int v4l2_async_register_subdev(struct v4l2_subdev *sd) in v4l2_async_register_subdev() argument
271 INIT_LIST_HEAD(&sd->async_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()
283 list_add(&sd->async_list, &subdev_list); in v4l2_async_register_subdev()
291 void v4l2_async_unregister_subdev(struct v4l2_subdev *sd) in v4l2_async_unregister_subdev() argument
293 struct v4l2_async_notifier *notifier = sd->notifier; in v4l2_async_unregister_subdev()
295 if (!sd->asd) { in v4l2_async_unregister_subdev()
296 if (!list_empty(&sd->async_list)) in v4l2_async_unregister_subdev()
297 v4l2_async_cleanup(sd); in v4l2_async_unregister_subdev()
303 list_add(&sd->asd->list, &notifier->waiting); in v4l2_async_unregister_subdev()
305 v4l2_async_cleanup(sd); in v4l2_async_unregister_subdev()
308 notifier->unbind(notifier, sd, sd->asd); in v4l2_async_unregister_subdev()