ovcs               94 drivers/of/overlay.c static int build_changeset_next_level(struct overlay_changeset *ovcs,
ovcs              159 drivers/of/overlay.c static int overlay_notify(struct overlay_changeset *ovcs,
ovcs              165 drivers/of/overlay.c 	for (i = 0; i < ovcs->count; i++) {
ovcs              166 drivers/of/overlay.c 		struct fragment *fragment = &ovcs->fragments[i];
ovcs              200 drivers/of/overlay.c 		struct overlay_changeset *ovcs, const struct property *prop)
ovcs              224 drivers/of/overlay.c 	fragment_node = __of_find_node_by_path(ovcs->overlay_tree, path + 1);
ovcs              229 drivers/of/overlay.c 	for (k = 0; k < ovcs->count; k++) {
ovcs              230 drivers/of/overlay.c 		fragment = &ovcs->fragments[k];
ovcs              234 drivers/of/overlay.c 	if (k >= ovcs->count)
ovcs              304 drivers/of/overlay.c static int add_changeset_property(struct overlay_changeset *ovcs,
ovcs              344 drivers/of/overlay.c 		new_prop = dup_and_fixup_symbol_prop(ovcs, overlay_prop);
ovcs              357 drivers/of/overlay.c 		ret = of_changeset_add_property(&ovcs->cset, target->np,
ovcs              360 drivers/of/overlay.c 		ret = of_changeset_update_property(&ovcs->cset, target->np,
ovcs              409 drivers/of/overlay.c static int add_changeset_node(struct overlay_changeset *ovcs,
ovcs              442 drivers/of/overlay.c 		ret = of_changeset_attach_node(&ovcs->cset, tchild);
ovcs              449 drivers/of/overlay.c 		ret = build_changeset_next_level(ovcs, &target_child, node);
ovcs              459 drivers/of/overlay.c 		ret = build_changeset_next_level(ovcs, &target_child, node);
ovcs              481 drivers/of/overlay.c static int build_changeset_next_level(struct overlay_changeset *ovcs,
ovcs              489 drivers/of/overlay.c 		ret = add_changeset_property(ovcs, target, prop, 0);
ovcs              498 drivers/of/overlay.c 		ret = add_changeset_node(ovcs, target, child);
ovcs              513 drivers/of/overlay.c static int build_changeset_symbols_node(struct overlay_changeset *ovcs,
ovcs              521 drivers/of/overlay.c 		ret = add_changeset_property(ovcs, target, prop, 1);
ovcs              532 drivers/of/overlay.c static int find_dup_cset_node_entry(struct overlay_changeset *ovcs,
ovcs              544 drivers/of/overlay.c 	list_for_each_entry_continue(ce_2, &ovcs->cset.entries, node) {
ovcs              565 drivers/of/overlay.c static int find_dup_cset_prop(struct overlay_changeset *ovcs,
ovcs              578 drivers/of/overlay.c 	list_for_each_entry_continue(ce_2, &ovcs->cset.entries, node) {
ovcs              611 drivers/of/overlay.c static int changeset_dup_entry_check(struct overlay_changeset *ovcs)
ovcs              616 drivers/of/overlay.c 	list_for_each_entry(ce_1, &ovcs->cset.entries, node) {
ovcs              617 drivers/of/overlay.c 		dup_entry |= find_dup_cset_node_entry(ovcs, ce_1);
ovcs              618 drivers/of/overlay.c 		dup_entry |= find_dup_cset_prop(ovcs, ce_1);
ovcs              636 drivers/of/overlay.c static int build_changeset(struct overlay_changeset *ovcs)
ovcs              646 drivers/of/overlay.c 	if (ovcs->symbols_fragment)
ovcs              647 drivers/of/overlay.c 		fragments_count = ovcs->count - 1;
ovcs              649 drivers/of/overlay.c 		fragments_count = ovcs->count;
ovcs              652 drivers/of/overlay.c 		fragment = &ovcs->fragments[i];
ovcs              656 drivers/of/overlay.c 		ret = build_changeset_next_level(ovcs, &target,
ovcs              665 drivers/of/overlay.c 	if (ovcs->symbols_fragment) {
ovcs              666 drivers/of/overlay.c 		fragment = &ovcs->fragments[ovcs->count - 1];
ovcs              670 drivers/of/overlay.c 		ret = build_changeset_symbols_node(ovcs, &target,
ovcs              679 drivers/of/overlay.c 	return changeset_dup_entry_check(ovcs);
ovcs              732 drivers/of/overlay.c static int init_overlay_changeset(struct overlay_changeset *ovcs,
ovcs              753 drivers/of/overlay.c 	ovcs->overlay_tree = tree;
ovcs              754 drivers/of/overlay.c 	ovcs->fdt = fdt;
ovcs              756 drivers/of/overlay.c 	INIT_LIST_HEAD(&ovcs->ovcs_list);
ovcs              758 drivers/of/overlay.c 	of_changeset_init(&ovcs->cset);
ovcs              760 drivers/of/overlay.c 	id = idr_alloc(&ovcs_idr, ovcs, 1, 0, GFP_KERNEL);
ovcs              811 drivers/of/overlay.c 		ovcs->symbols_fragment = 1;
ovcs              831 drivers/of/overlay.c 	ovcs->id = id;
ovcs              832 drivers/of/overlay.c 	ovcs->count = cnt;
ovcs              833 drivers/of/overlay.c 	ovcs->fragments = fragments;
ovcs              847 drivers/of/overlay.c static void free_overlay_changeset(struct overlay_changeset *ovcs)
ovcs              851 drivers/of/overlay.c 	if (ovcs->cset.entries.next)
ovcs              852 drivers/of/overlay.c 		of_changeset_destroy(&ovcs->cset);
ovcs              854 drivers/of/overlay.c 	if (ovcs->id)
ovcs              855 drivers/of/overlay.c 		idr_remove(&ovcs_idr, ovcs->id);
ovcs              857 drivers/of/overlay.c 	for (i = 0; i < ovcs->count; i++) {
ovcs              858 drivers/of/overlay.c 		of_node_put(ovcs->fragments[i].target);
ovcs              859 drivers/of/overlay.c 		of_node_put(ovcs->fragments[i].overlay);
ovcs              861 drivers/of/overlay.c 	kfree(ovcs->fragments);
ovcs              867 drivers/of/overlay.c 	kfree(ovcs->overlay_tree);
ovcs              868 drivers/of/overlay.c 	kfree(ovcs->fdt);
ovcs              869 drivers/of/overlay.c 	kfree(ovcs);
ovcs              918 drivers/of/overlay.c 	struct overlay_changeset *ovcs;
ovcs              934 drivers/of/overlay.c 	ovcs = kzalloc(sizeof(*ovcs), GFP_KERNEL);
ovcs              935 drivers/of/overlay.c 	if (!ovcs) {
ovcs              949 drivers/of/overlay.c 	ret = init_overlay_changeset(ovcs, fdt, tree);
ovcs              958 drivers/of/overlay.c 	ret = overlay_notify(ovcs, OF_OVERLAY_PRE_APPLY);
ovcs              964 drivers/of/overlay.c 	ret = build_changeset(ovcs);
ovcs              969 drivers/of/overlay.c 	ret = __of_changeset_apply_entries(&ovcs->cset, &ret_revert);
ovcs              981 drivers/of/overlay.c 	ret = __of_changeset_apply_notify(&ovcs->cset);
ovcs              986 drivers/of/overlay.c 	list_add_tail(&ovcs->ovcs_list, &ovcs_list);
ovcs              987 drivers/of/overlay.c 	*ovcs_id = ovcs->id;
ovcs              989 drivers/of/overlay.c 	ret_tmp = overlay_notify(ovcs, OF_OVERLAY_POST_APPLY);
ovcs             1004 drivers/of/overlay.c 	free_overlay_changeset(ovcs);
ovcs             1104 drivers/of/overlay.c 	struct overlay_changeset *ovcs;
ovcs             1107 drivers/of/overlay.c 	list_for_each_entry_reverse(ovcs, &ovcs_list, ovcs_list) {
ovcs             1108 drivers/of/overlay.c 		if (ovcs == remove_ovcs)
ovcs             1111 drivers/of/overlay.c 		list_for_each_entry(ce, &ovcs->cset.entries, node) {
ovcs             1114 drivers/of/overlay.c 					__func__, remove_ovcs->id, ovcs->id,
ovcs             1120 drivers/of/overlay.c 					__func__, remove_ovcs->id, ovcs->id,
ovcs             1190 drivers/of/overlay.c 	struct overlay_changeset *ovcs;
ovcs             1203 drivers/of/overlay.c 	ovcs = idr_find(&ovcs_idr, *ovcs_id);
ovcs             1204 drivers/of/overlay.c 	if (!ovcs) {
ovcs             1210 drivers/of/overlay.c 	if (!overlay_removal_is_ok(ovcs)) {
ovcs             1215 drivers/of/overlay.c 	ret = overlay_notify(ovcs, OF_OVERLAY_PRE_REMOVE);
ovcs             1221 drivers/of/overlay.c 	list_del(&ovcs->ovcs_list);
ovcs             1230 drivers/of/overlay.c 	ret = __of_changeset_revert_entries(&ovcs->cset, &ret_apply);
ovcs             1240 drivers/of/overlay.c 	ret = __of_changeset_revert_notify(&ovcs->cset);
ovcs             1247 drivers/of/overlay.c 	ret_tmp = overlay_notify(ovcs, OF_OVERLAY_POST_REMOVE);
ovcs             1255 drivers/of/overlay.c 	free_overlay_changeset(ovcs);
ovcs             1276 drivers/of/overlay.c 	struct overlay_changeset *ovcs, *ovcs_n;
ovcs             1280 drivers/of/overlay.c 	list_for_each_entry_safe_reverse(ovcs, ovcs_n, &ovcs_list, ovcs_list) {
ovcs             1281 drivers/of/overlay.c 		ret = of_overlay_remove(&ovcs->id);