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);