Lines Matching full: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()
337 struct v4l2_async_connection *asc) in v4l2_async_match_notify() argument
350 ret = v4l2_async_nf_call_bound(notifier, sd, asc); in v4l2_async_match_notify()
352 if (asc->match.type == V4L2_ASYNC_MATCH_TYPE_FWNODE) in v4l2_async_match_notify()
355 asc->match.fwnode, ret); in v4l2_async_match_notify()
368 if (asc->match.type == V4L2_ASYNC_MATCH_TYPE_FWNODE) in v4l2_async_match_notify()
371 asc->match.fwnode, ret); in v4l2_async_match_notify()
376 list_add(&asc->asc_subdev_entry, &sd->asc_list); in v4l2_async_match_notify()
377 asc->sd = sd; in v4l2_async_match_notify()
380 list_move(&asc->asc_entry, ¬ifier->done_list); in v4l2_async_match_notify()
402 v4l2_async_nf_call_unbind(notifier, sd, asc); in v4l2_async_match_notify()
403 list_del(&asc->asc_subdev_entry); in v4l2_async_match_notify()
427 struct v4l2_async_connection *asc; in v4l2_async_nf_try_all_subdevs() local
430 asc = v4l2_async_find_match(notifier, sd); in v4l2_async_nf_try_all_subdevs()
431 if (!asc) in v4l2_async_nf_try_all_subdevs()
437 ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asc); in v4l2_async_nf_try_all_subdevs()
454 struct v4l2_async_connection *asc) in v4l2_async_unbind_subdev_one() argument
456 list_move_tail(&asc->asc_entry, ¬ifier->waiting_list); in v4l2_async_unbind_subdev_one()
457 if (list_is_singular(&asc->asc_subdev_entry)) { in v4l2_async_unbind_subdev_one()
458 v4l2_async_nf_call_unbind(notifier, asc->sd, asc); in v4l2_async_unbind_subdev_one()
459 v4l2_device_unregister_subdev(asc->sd); in v4l2_async_unbind_subdev_one()
460 asc->sd = NULL; in v4l2_async_unbind_subdev_one()
462 list_del(&asc->asc_subdev_entry); in v4l2_async_unbind_subdev_one()
469 struct v4l2_async_connection *asc, *asc_tmp; in v4l2_async_nf_unbind_all_subdevs() local
471 list_for_each_entry_safe(asc, asc_tmp, ¬ifier->done_list, in v4l2_async_nf_unbind_all_subdevs()
474 v4l2_async_find_subdev_notifier(asc->sd); in v4l2_async_nf_unbind_all_subdevs()
479 v4l2_async_unbind_subdev_one(notifier, asc); in v4l2_async_nf_unbind_all_subdevs()
490 struct v4l2_async_connection *asc; in v4l2_async_nf_has_async_match_entry() local
492 list_for_each_entry(asc, ¬ifier->waiting_list, asc_entry) in v4l2_async_nf_has_async_match_entry()
493 if (v4l2_async_match_equal(&asc->match, match)) in v4l2_async_nf_has_async_match_entry()
496 list_for_each_entry(asc, ¬ifier->done_list, asc_entry) in v4l2_async_nf_has_async_match_entry()
497 if (v4l2_async_match_equal(&asc->match, match)) in v4l2_async_nf_has_async_match_entry()
521 struct v4l2_async_connection *asc; in v4l2_async_nf_has_async_match() local
523 list_for_each_entry(asc, heads[i], asc_entry) { in v4l2_async_nf_has_async_match()
524 if (&asc->match == match) in v4l2_async_nf_has_async_match()
526 if (v4l2_async_match_equal(&asc->match, match)) in v4l2_async_nf_has_async_match()
531 /* Check that an asc does not exist in other notifiers. */ in v4l2_async_nf_has_async_match()
581 struct v4l2_async_connection *asc; in __v4l2_async_nf_register() local
586 list_for_each_entry(asc, ¬ifier->waiting_list, asc_entry) { in __v4l2_async_nf_register()
587 ret = v4l2_async_nf_match_valid(notifier, &asc->match); in __v4l2_async_nf_register()
657 struct v4l2_async_connection *asc, *tmp; in __v4l2_async_nf_cleanup() local
664 list_for_each_entry_safe(asc, tmp, ¬ifier->waiting_list, asc_entry) { in __v4l2_async_nf_cleanup()
665 list_del(&asc->asc_entry); in __v4l2_async_nf_cleanup()
666 v4l2_async_nf_call_destroy(notifier, asc); in __v4l2_async_nf_cleanup()
668 if (asc->match.type == V4L2_ASYNC_MATCH_TYPE_FWNODE) in __v4l2_async_nf_cleanup()
669 fwnode_handle_put(asc->match.fwnode); in __v4l2_async_nf_cleanup()
671 kfree(asc); in __v4l2_async_nf_cleanup()
689 struct v4l2_async_connection *asc) in __v4l2_async_nf_add_connection() argument
693 list_add_tail(&asc->asc_entry, ¬ifier->waiting_list); in __v4l2_async_nf_add_connection()
703 struct v4l2_async_connection *asc; in __v4l2_async_nf_add_fwnode() local
705 asc = kzalloc(asc_struct_size, GFP_KERNEL); in __v4l2_async_nf_add_fwnode()
706 if (!asc) in __v4l2_async_nf_add_fwnode()
709 asc->notifier = notifier; in __v4l2_async_nf_add_fwnode()
710 asc->match.type = V4L2_ASYNC_MATCH_TYPE_FWNODE; in __v4l2_async_nf_add_fwnode()
711 asc->match.fwnode = fwnode_handle_get(fwnode); in __v4l2_async_nf_add_fwnode()
713 __v4l2_async_nf_add_connection(notifier, asc); in __v4l2_async_nf_add_fwnode()
715 return asc; in __v4l2_async_nf_add_fwnode()
724 struct v4l2_async_connection *asc; in __v4l2_async_nf_add_fwnode_remote() local
731 asc = __v4l2_async_nf_add_fwnode(notif, remote, asc_struct_size); in __v4l2_async_nf_add_fwnode_remote()
737 return asc; in __v4l2_async_nf_add_fwnode_remote()
745 struct v4l2_async_connection *asc; in __v4l2_async_nf_add_i2c() local
747 asc = kzalloc(asc_struct_size, GFP_KERNEL); in __v4l2_async_nf_add_i2c()
748 if (!asc) in __v4l2_async_nf_add_i2c()
751 asc->notifier = notifier; in __v4l2_async_nf_add_i2c()
752 asc->match.type = V4L2_ASYNC_MATCH_TYPE_I2C; in __v4l2_async_nf_add_i2c()
753 asc->match.i2c.adapter_id = adapter_id; in __v4l2_async_nf_add_i2c()
754 asc->match.i2c.address = address; in __v4l2_async_nf_add_i2c()
756 __v4l2_async_nf_add_connection(notifier, asc); in __v4l2_async_nf_add_i2c()
758 return asc; in __v4l2_async_nf_add_i2c()
794 struct v4l2_async_connection *asc; in v4l2_async_register_subdev() local
823 while ((asc = v4l2_async_find_match(notifier, sd))) { in v4l2_async_register_subdev()
825 asc); in v4l2_async_register_subdev()
851 if (asc) in v4l2_async_register_subdev()
852 v4l2_async_unbind_subdev_one(notifier, asc); in v4l2_async_register_subdev()
862 struct v4l2_async_connection *asc, *asc_tmp; in v4l2_async_unregister_subdev() local
877 list_for_each_entry_safe(asc, asc_tmp, &sd->asc_list, in v4l2_async_unregister_subdev()
879 v4l2_async_unbind_subdev_one(asc->notifier, asc); in v4l2_async_unregister_subdev()
929 struct v4l2_async_connection *asc; in pending_subdevs_show() local
935 list_for_each_entry(asc, ¬if->waiting_list, asc_entry) in pending_subdevs_show()
936 print_waiting_match(s, &asc->match); in pending_subdevs_show()