Lines Matching full:ref

54 dpll_pin_registration_find(struct dpll_pin_ref *ref,  in dpll_pin_registration_find()  argument
59 list_for_each_entry(reg, &ref->registration_list, list) { in dpll_pin_registration_find()
71 struct dpll_pin_ref *ref; in dpll_xa_ref_pin_add() local
76 xa_for_each(xa_pins, i, ref) { in dpll_xa_ref_pin_add()
77 if (ref->pin != pin) in dpll_xa_ref_pin_add()
79 reg = dpll_pin_registration_find(ref, ops, priv); in dpll_xa_ref_pin_add()
81 refcount_inc(&ref->refcount); in dpll_xa_ref_pin_add()
89 ref = kzalloc(sizeof(*ref), GFP_KERNEL); in dpll_xa_ref_pin_add()
90 if (!ref) in dpll_xa_ref_pin_add()
92 ref->pin = pin; in dpll_xa_ref_pin_add()
93 INIT_LIST_HEAD(&ref->registration_list); in dpll_xa_ref_pin_add()
94 ret = xa_insert(xa_pins, pin->pin_idx, ref, GFP_KERNEL); in dpll_xa_ref_pin_add()
96 kfree(ref); in dpll_xa_ref_pin_add()
99 refcount_set(&ref->refcount, 1); in dpll_xa_ref_pin_add()
106 kfree(ref); in dpll_xa_ref_pin_add()
113 refcount_inc(&ref->refcount); in dpll_xa_ref_pin_add()
114 list_add_tail(&reg->list, &ref->registration_list); in dpll_xa_ref_pin_add()
123 struct dpll_pin_ref *ref; in dpll_xa_ref_pin_del() local
126 xa_for_each(xa_pins, i, ref) { in dpll_xa_ref_pin_del()
127 if (ref->pin != pin) in dpll_xa_ref_pin_del()
129 reg = dpll_pin_registration_find(ref, ops, priv); in dpll_xa_ref_pin_del()
132 if (refcount_dec_and_test(&ref->refcount)) { in dpll_xa_ref_pin_del()
136 WARN_ON(!list_empty(&ref->registration_list)); in dpll_xa_ref_pin_del()
137 kfree(ref); in dpll_xa_ref_pin_del()
150 struct dpll_pin_ref *ref; in dpll_xa_ref_dpll_add() local
155 xa_for_each(xa_dplls, i, ref) { in dpll_xa_ref_dpll_add()
156 if (ref->dpll != dpll) in dpll_xa_ref_dpll_add()
158 reg = dpll_pin_registration_find(ref, ops, priv); in dpll_xa_ref_dpll_add()
160 refcount_inc(&ref->refcount); in dpll_xa_ref_dpll_add()
168 ref = kzalloc(sizeof(*ref), GFP_KERNEL); in dpll_xa_ref_dpll_add()
169 if (!ref) in dpll_xa_ref_dpll_add()
171 ref->dpll = dpll; in dpll_xa_ref_dpll_add()
172 INIT_LIST_HEAD(&ref->registration_list); in dpll_xa_ref_dpll_add()
173 ret = xa_insert(xa_dplls, dpll->id, ref, GFP_KERNEL); in dpll_xa_ref_dpll_add()
175 kfree(ref); in dpll_xa_ref_dpll_add()
178 refcount_set(&ref->refcount, 1); in dpll_xa_ref_dpll_add()
185 kfree(ref); in dpll_xa_ref_dpll_add()
192 refcount_inc(&ref->refcount); in dpll_xa_ref_dpll_add()
193 list_add_tail(&reg->list, &ref->registration_list); in dpll_xa_ref_dpll_add()
203 struct dpll_pin_ref *ref; in dpll_xa_ref_dpll_del() local
206 xa_for_each(xa_dplls, i, ref) { in dpll_xa_ref_dpll_del()
207 if (ref->dpll != dpll) in dpll_xa_ref_dpll_del()
209 reg = dpll_pin_registration_find(ref, ops, priv); in dpll_xa_ref_dpll_del()
212 if (refcount_dec_and_test(&ref->refcount)) { in dpll_xa_ref_dpll_del()
216 WARN_ON(!list_empty(&ref->registration_list)); in dpll_xa_ref_dpll_del()
217 kfree(ref); in dpll_xa_ref_dpll_del()
225 struct dpll_pin_ref *ref; in dpll_xa_ref_dpll_first() local
228 ref = xa_find(xa_refs, &i, ULONG_MAX, XA_PRESENT); in dpll_xa_ref_dpll_first()
229 WARN_ON(!ref); in dpll_xa_ref_dpll_first()
230 return ref; in dpll_xa_ref_dpll_first()
703 struct dpll_pin_ref *ref; in dpll_pin_on_pin_register() local
720 xa_for_each(&parent->dpll_refs, i, ref) { in dpll_pin_on_pin_register()
721 ret = __dpll_pin_register(ref->dpll, pin, ops, priv); in dpll_pin_on_pin_register()
733 xa_for_each(&parent->dpll_refs, i, ref) in dpll_pin_on_pin_register()
735 __dpll_pin_unregister(ref->dpll, pin, ops, priv); in dpll_pin_on_pin_register()
759 struct dpll_pin_ref *ref; in dpll_pin_on_pin_unregister() local
766 xa_for_each(&pin->dpll_refs, i, ref) in dpll_pin_on_pin_unregister()
767 __dpll_pin_unregister(ref->dpll, pin, ops, priv); in dpll_pin_on_pin_unregister()
800 dpll_pin_registration_first(struct dpll_pin_ref *ref) in dpll_pin_registration_first() argument
804 reg = list_first_entry_or_null(&ref->registration_list, in dpll_pin_registration_first()
814 struct dpll_pin_ref *ref; in dpll_pin_on_dpll_priv() local
816 ref = xa_load(&dpll->pin_refs, pin->pin_idx); in dpll_pin_on_dpll_priv()
817 if (!ref) in dpll_pin_on_dpll_priv()
819 reg = dpll_pin_registration_first(ref); in dpll_pin_on_dpll_priv()
827 struct dpll_pin_ref *ref; in dpll_pin_on_pin_priv() local
829 ref = xa_load(&pin->parent_refs, parent->pin_idx); in dpll_pin_on_pin_priv()
830 if (!ref) in dpll_pin_on_pin_priv()
832 reg = dpll_pin_registration_first(ref); in dpll_pin_on_pin_priv()
836 const struct dpll_pin_ops *dpll_pin_ops(struct dpll_pin_ref *ref) in dpll_pin_ops() argument
840 reg = dpll_pin_registration_first(ref); in dpll_pin_ops()