Lines Matching refs:asc
31 struct v4l2_async_connection *asc) in v4l2_async_nf_call_bound() argument
36 return n->ops->bound(n, subdev, asc); in v4l2_async_nf_call_bound()
41 struct v4l2_async_connection *asc) in v4l2_async_nf_call_unbind() argument
46 n->ops->unbind(n, subdev, asc); in v4l2_async_nf_call_unbind()
58 struct v4l2_async_connection *asc) in v4l2_async_nf_call_destroy() argument
63 n->ops->destroy(asc); in v4l2_async_nf_call_destroy()
185 struct v4l2_async_connection *asc; in v4l2_async_find_match() local
187 list_for_each_entry(asc, ¬ifier->waiting_list, asc_entry) { in v4l2_async_find_match()
189 switch (asc->match.type) { in v4l2_async_find_match()
203 if (match(notifier, sd, &asc->match)) in v4l2_async_find_match()
204 return asc; in v4l2_async_find_match()
259 struct v4l2_async_connection *asc; in v4l2_async_nf_can_complete() local
264 list_for_each_entry(asc, ¬ifier->done_list, asc_entry) { in v4l2_async_nf_can_complete()
266 v4l2_async_find_subdev_notifier(asc->sd); in v4l2_async_nf_can_complete()
344 struct v4l2_async_connection *asc) in v4l2_async_match_notify() argument
357 ret = v4l2_async_nf_call_bound(notifier, sd, asc); in v4l2_async_match_notify()
359 if (asc->match.type == V4L2_ASYNC_MATCH_TYPE_FWNODE) in v4l2_async_match_notify()
362 asc->match.fwnode, ret); in v4l2_async_match_notify()
375 if (asc->match.type == V4L2_ASYNC_MATCH_TYPE_FWNODE) in v4l2_async_match_notify()
378 asc->match.fwnode, ret); in v4l2_async_match_notify()
383 list_add(&asc->asc_subdev_entry, &sd->asc_list); in v4l2_async_match_notify()
384 asc->sd = sd; in v4l2_async_match_notify()
387 list_move(&asc->asc_entry, ¬ifier->done_list); in v4l2_async_match_notify()
409 v4l2_async_nf_call_unbind(notifier, sd, asc); in v4l2_async_match_notify()
410 list_del(&asc->asc_subdev_entry); in v4l2_async_match_notify()
434 struct v4l2_async_connection *asc; in v4l2_async_nf_try_all_subdevs() local
437 asc = v4l2_async_find_match(notifier, sd); in v4l2_async_nf_try_all_subdevs()
438 if (!asc) in v4l2_async_nf_try_all_subdevs()
444 ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asc); in v4l2_async_nf_try_all_subdevs()
461 struct v4l2_async_connection *asc) in v4l2_async_unbind_subdev_one() argument
463 list_move_tail(&asc->asc_entry, ¬ifier->waiting_list); in v4l2_async_unbind_subdev_one()
464 if (list_is_singular(&asc->asc_subdev_entry)) { in v4l2_async_unbind_subdev_one()
465 v4l2_async_nf_call_unbind(notifier, asc->sd, asc); in v4l2_async_unbind_subdev_one()
466 v4l2_device_unregister_subdev(asc->sd); in v4l2_async_unbind_subdev_one()
467 asc->sd = NULL; in v4l2_async_unbind_subdev_one()
469 list_del(&asc->asc_subdev_entry); in v4l2_async_unbind_subdev_one()
476 struct v4l2_async_connection *asc, *asc_tmp; in v4l2_async_nf_unbind_all_subdevs() local
478 list_for_each_entry_safe(asc, asc_tmp, ¬ifier->done_list, in v4l2_async_nf_unbind_all_subdevs()
481 v4l2_async_find_subdev_notifier(asc->sd); in v4l2_async_nf_unbind_all_subdevs()
486 v4l2_async_unbind_subdev_one(notifier, asc); in v4l2_async_nf_unbind_all_subdevs()
497 struct v4l2_async_connection *asc; in v4l2_async_nf_has_async_match_entry() local
499 list_for_each_entry(asc, ¬ifier->waiting_list, asc_entry) in v4l2_async_nf_has_async_match_entry()
500 if (v4l2_async_match_equal(&asc->match, match)) in v4l2_async_nf_has_async_match_entry()
503 list_for_each_entry(asc, ¬ifier->done_list, asc_entry) in v4l2_async_nf_has_async_match_entry()
504 if (v4l2_async_match_equal(&asc->match, match)) in v4l2_async_nf_has_async_match_entry()
528 struct v4l2_async_connection *asc; in v4l2_async_nf_has_async_match() local
530 list_for_each_entry(asc, heads[i], asc_entry) { in v4l2_async_nf_has_async_match()
531 if (&asc->match == match) in v4l2_async_nf_has_async_match()
533 if (v4l2_async_match_equal(&asc->match, match)) in v4l2_async_nf_has_async_match()
590 struct v4l2_async_connection *asc; in __v4l2_async_nf_register() local
595 list_for_each_entry(asc, ¬ifier->waiting_list, asc_entry) { in __v4l2_async_nf_register()
596 ret = v4l2_async_nf_match_valid(notifier, &asc->match); in __v4l2_async_nf_register()
660 struct v4l2_async_connection *asc, *tmp; in __v4l2_async_nf_cleanup() local
667 list_for_each_entry_safe(asc, tmp, ¬ifier->waiting_list, asc_entry) { in __v4l2_async_nf_cleanup()
668 list_del(&asc->asc_entry); in __v4l2_async_nf_cleanup()
669 v4l2_async_nf_call_destroy(notifier, asc); in __v4l2_async_nf_cleanup()
671 if (asc->match.type == V4L2_ASYNC_MATCH_TYPE_FWNODE) in __v4l2_async_nf_cleanup()
672 fwnode_handle_put(asc->match.fwnode); in __v4l2_async_nf_cleanup()
674 kfree(asc); in __v4l2_async_nf_cleanup()
692 struct v4l2_async_connection *asc) in __v4l2_async_nf_add_connection() argument
696 list_add_tail(&asc->asc_entry, ¬ifier->waiting_list); in __v4l2_async_nf_add_connection()
706 struct v4l2_async_connection *asc; in __v4l2_async_nf_add_fwnode() local
708 asc = kzalloc(asc_struct_size, GFP_KERNEL); in __v4l2_async_nf_add_fwnode()
709 if (!asc) in __v4l2_async_nf_add_fwnode()
712 asc->notifier = notifier; in __v4l2_async_nf_add_fwnode()
713 asc->match.type = V4L2_ASYNC_MATCH_TYPE_FWNODE; in __v4l2_async_nf_add_fwnode()
714 asc->match.fwnode = fwnode_handle_get(fwnode); in __v4l2_async_nf_add_fwnode()
716 __v4l2_async_nf_add_connection(notifier, asc); in __v4l2_async_nf_add_fwnode()
718 return asc; in __v4l2_async_nf_add_fwnode()
727 struct v4l2_async_connection *asc; in __v4l2_async_nf_add_fwnode_remote() local
734 asc = __v4l2_async_nf_add_fwnode(notif, remote, asc_struct_size); in __v4l2_async_nf_add_fwnode_remote()
740 return asc; in __v4l2_async_nf_add_fwnode_remote()
748 struct v4l2_async_connection *asc; in __v4l2_async_nf_add_i2c() local
750 asc = kzalloc(asc_struct_size, GFP_KERNEL); in __v4l2_async_nf_add_i2c()
751 if (!asc) in __v4l2_async_nf_add_i2c()
754 asc->notifier = notifier; in __v4l2_async_nf_add_i2c()
755 asc->match.type = V4L2_ASYNC_MATCH_TYPE_I2C; in __v4l2_async_nf_add_i2c()
756 asc->match.i2c.adapter_id = adapter_id; in __v4l2_async_nf_add_i2c()
757 asc->match.i2c.address = address; in __v4l2_async_nf_add_i2c()
759 __v4l2_async_nf_add_connection(notifier, asc); in __v4l2_async_nf_add_i2c()
761 return asc; in __v4l2_async_nf_add_i2c()
797 struct v4l2_async_connection *asc; in __v4l2_async_register_subdev() local
828 while ((asc = v4l2_async_find_match(notifier, sd))) { in __v4l2_async_register_subdev()
830 asc); in __v4l2_async_register_subdev()
856 if (asc) in __v4l2_async_register_subdev()
857 v4l2_async_unbind_subdev_one(notifier, asc); in __v4l2_async_register_subdev()
869 struct v4l2_async_connection *asc, *asc_tmp; in v4l2_async_unregister_subdev() local
884 list_for_each_entry_safe(asc, asc_tmp, &sd->asc_list, in v4l2_async_unregister_subdev()
886 v4l2_async_unbind_subdev_one(asc->notifier, asc); in v4l2_async_unregister_subdev()
936 struct v4l2_async_connection *asc; in pending_subdevs_show() local
942 list_for_each_entry(asc, ¬if->waiting_list, asc_entry) in pending_subdevs_show()
943 print_waiting_match(s, &asc->match); in pending_subdevs_show()