Lines Matching refs:ce

460 static void __of_changeset_entry_destroy(struct of_changeset_entry *ce)  in __of_changeset_entry_destroy()  argument
462 if (ce->action == OF_RECONFIG_ATTACH_NODE && in __of_changeset_entry_destroy()
463 of_node_check_flag(ce->np, OF_OVERLAY)) { in __of_changeset_entry_destroy()
464 if (kref_read(&ce->np->kobj.kref) > 1) { in __of_changeset_entry_destroy()
466 kref_read(&ce->np->kobj.kref), ce->np); in __of_changeset_entry_destroy()
468 of_node_set_flag(ce->np, OF_OVERLAY_FREE_CSET); in __of_changeset_entry_destroy()
472 of_node_put(ce->np); in __of_changeset_entry_destroy()
473 list_del(&ce->node); in __of_changeset_entry_destroy()
474 kfree(ce); in __of_changeset_entry_destroy()
478 static void __of_changeset_entry_dump(struct of_changeset_entry *ce) in __of_changeset_entry_dump() argument
480 switch (ce->action) { in __of_changeset_entry_dump()
484 pr_debug("cset<%p> %-15s %pOF/%s\n", ce, action_names[ce->action], in __of_changeset_entry_dump()
485 ce->np, ce->prop->name); in __of_changeset_entry_dump()
489 pr_debug("cset<%p> %-15s %pOF\n", ce, action_names[ce->action], in __of_changeset_entry_dump()
490 ce->np); in __of_changeset_entry_dump()
495 static inline void __of_changeset_entry_dump(struct of_changeset_entry *ce) in __of_changeset_entry_dump() argument
501 static void __of_changeset_entry_invert(struct of_changeset_entry *ce, in __of_changeset_entry_invert() argument
504 memcpy(rce, ce, sizeof(*rce)); in __of_changeset_entry_invert()
506 switch (ce->action) { in __of_changeset_entry_invert()
520 rce->old_prop = ce->prop; in __of_changeset_entry_invert()
521 rce->prop = ce->old_prop; in __of_changeset_entry_invert()
525 rce->prop = ce->prop; in __of_changeset_entry_invert()
531 static int __of_changeset_entry_notify(struct of_changeset_entry *ce, in __of_changeset_entry_notify() argument
539 __of_changeset_entry_invert(ce, &ce_inverted); in __of_changeset_entry_notify()
540 ce = &ce_inverted; in __of_changeset_entry_notify()
543 switch (ce->action) { in __of_changeset_entry_notify()
547 rd.dn = ce->np; in __of_changeset_entry_notify()
548 ret = of_reconfig_notify(ce->action, &rd); in __of_changeset_entry_notify()
553 ret = of_property_notify(ce->action, ce->np, ce->prop, ce->old_prop); in __of_changeset_entry_notify()
557 (int)ce->action); in __of_changeset_entry_notify()
562 pr_err("changeset notifier error @%pOF\n", ce->np); in __of_changeset_entry_notify()
566 static int __of_changeset_entry_apply(struct of_changeset_entry *ce) in __of_changeset_entry_apply() argument
572 __of_changeset_entry_dump(ce); in __of_changeset_entry_apply()
575 switch (ce->action) { in __of_changeset_entry_apply()
577 __of_attach_node(ce->np); in __of_changeset_entry_apply()
580 __of_detach_node(ce->np); in __of_changeset_entry_apply()
584 for (propp = &ce->np->deadprops; *propp; propp = &(*propp)->next) { in __of_changeset_entry_apply()
585 if (*propp == ce->prop) { in __of_changeset_entry_apply()
586 *propp = ce->prop->next; in __of_changeset_entry_apply()
587 ce->prop->next = NULL; in __of_changeset_entry_apply()
592 ret = __of_add_property(ce->np, ce->prop); in __of_changeset_entry_apply()
595 ce->np, in __of_changeset_entry_apply()
596 ce->prop->name); in __of_changeset_entry_apply()
601 ret = __of_remove_property(ce->np, ce->prop); in __of_changeset_entry_apply()
604 ce->np, in __of_changeset_entry_apply()
605 ce->prop->name); in __of_changeset_entry_apply()
612 for (propp = &ce->np->deadprops; *propp; propp = &(*propp)->next) { in __of_changeset_entry_apply()
613 if (*propp == ce->prop) { in __of_changeset_entry_apply()
614 *propp = ce->prop->next; in __of_changeset_entry_apply()
615 ce->prop->next = NULL; in __of_changeset_entry_apply()
620 ret = __of_update_property(ce->np, ce->prop, &old_prop); in __of_changeset_entry_apply()
623 ce->np, in __of_changeset_entry_apply()
624 ce->prop->name); in __of_changeset_entry_apply()
636 switch (ce->action) { in __of_changeset_entry_apply()
638 __of_attach_node_sysfs(ce->np); in __of_changeset_entry_apply()
641 __of_detach_node_sysfs(ce->np); in __of_changeset_entry_apply()
645 __of_add_property_sysfs(ce->np, ce->prop); in __of_changeset_entry_apply()
648 __of_remove_property_sysfs(ce->np, ce->prop); in __of_changeset_entry_apply()
651 __of_update_property_sysfs(ce->np, ce->prop, ce->old_prop); in __of_changeset_entry_apply()
658 static inline int __of_changeset_entry_revert(struct of_changeset_entry *ce) in __of_changeset_entry_revert() argument
662 __of_changeset_entry_invert(ce, &ce_inverted); in __of_changeset_entry_revert()
690 struct of_changeset_entry *ce, *cen; in of_changeset_destroy() local
692 list_for_each_entry_safe_reverse(ce, cen, &ocs->entries, node) in of_changeset_destroy()
693 __of_changeset_entry_destroy(ce); in of_changeset_destroy()
709 struct of_changeset_entry *ce; in __of_changeset_apply_entries() local
713 list_for_each_entry(ce, &ocs->entries, node) { in __of_changeset_apply_entries()
714 ret = __of_changeset_entry_apply(ce); in __of_changeset_apply_entries()
717 list_for_each_entry_continue_reverse(ce, &ocs->entries, in __of_changeset_apply_entries()
719 ret_tmp = __of_changeset_entry_revert(ce); in __of_changeset_apply_entries()
738 struct of_changeset_entry *ce; in __of_changeset_apply_notify() local
745 list_for_each_entry(ce, &ocs->entries, node) { in __of_changeset_apply_notify()
746 ret_tmp = __of_changeset_entry_notify(ce, 0); in __of_changeset_apply_notify()
812 struct of_changeset_entry *ce; in __of_changeset_revert_entries() local
816 list_for_each_entry_reverse(ce, &ocs->entries, node) { in __of_changeset_revert_entries()
817 ret = __of_changeset_entry_revert(ce); in __of_changeset_revert_entries()
820 list_for_each_entry_continue(ce, &ocs->entries, node) { in __of_changeset_revert_entries()
821 ret_tmp = __of_changeset_entry_apply(ce); in __of_changeset_revert_entries()
838 struct of_changeset_entry *ce; in __of_changeset_revert_notify() local
845 list_for_each_entry_reverse(ce, &ocs->entries, node) { in __of_changeset_revert_notify()
846 ret_tmp = __of_changeset_entry_notify(ce, 1); in __of_changeset_revert_notify()
911 struct of_changeset_entry *ce; in of_changeset_action() local
913 ce = kzalloc(sizeof(*ce), GFP_KERNEL); in of_changeset_action()
914 if (!ce) in of_changeset_action()
918 ce->action = action; in of_changeset_action()
919 ce->np = of_node_get(np); in of_changeset_action()
920 ce->prop = prop; in of_changeset_action()
923 ce->old_prop = of_find_property(np, prop->name, NULL); in of_changeset_action()
926 list_add_tail(&ce->node, &ocs->entries); in of_changeset_action()