Lines Matching defs:fdto

16  * @fdto: pointer to the device tree overlay blob
28 static uint32_t overlay_get_target_phandle(const void *fdto, int fragment)
33 val = fdt_getprop(fdto, fragment, "target", &len);
43 int fdt_overlay_target_offset(const void *fdt, const void *fdto,
51 phandle = overlay_get_target_phandle(fdto, fragment_offset);
58 path = fdt_getprop(fdto, fragment_offset, "target-path", &path_len);
124 * @fdto: Device tree overlay blob
137 static int overlay_adjust_node_phandles(void *fdto, int node,
143 ret = overlay_phandle_add_offset(fdto, node, "phandle", delta);
147 ret = overlay_phandle_add_offset(fdto, node, "linux,phandle", delta);
151 fdt_for_each_subnode(child, fdto, node) {
152 ret = overlay_adjust_node_phandles(fdto, child, delta);
162 * @fdto: Device tree overlay blob
174 static int overlay_adjust_local_phandles(void *fdto, uint32_t delta)
179 return overlay_adjust_node_phandles(fdto, 0, delta);
184 * @fdto: Device tree overlay blob
201 static int overlay_update_local_node_references(void *fdto,
210 fdt_for_each_property_offset(fixup_prop, fdto, fixup_node) {
218 fixup_val = fdt_getprop_by_offset(fdto, fixup_prop,
227 tree_val = fdt_getprop_w(fdto, tree_node, name, &tree_len);
248 fdt_for_each_subnode(fixup_child, fdto, fixup_node) {
249 const char *fixup_child_name = fdt_get_name(fdto, fixup_child,
253 tree_child = fdt_subnode_offset(fdto, tree_node,
260 ret = overlay_update_local_node_references(fdto,
273 * @fdto: Device tree overlay blob
288 static int overlay_update_local_references(void *fdto, uint32_t delta)
292 fixups = fdt_path_offset(fdto, "/__local_fixups__");
304 return overlay_update_local_node_references(fdto, 0, fixups,
311 * @fdto: Device tree overlay blob
331 static int overlay_fixup_one_phandle(void *fdt, void *fdto,
343 fixup_off = fdt_path_offset_namelen(fdto, path, path_len);
350 return fdt_setprop_inplace_namelen_partial(fdto, fixup_off,
359 * @fdto: Device tree overlay blob
375 static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off,
386 value = fdt_getprop_by_offset(fdto, property,
446 ret = overlay_fixup_one_phandle(fdt, fdto, symbols_off,
460 * @fdto: Device tree overlay blob
473 static int overlay_fixup_phandles(void *fdt, void *fdto)
479 fixups_off = fdt_path_offset(fdto, "/__fixups__");
490 fdt_for_each_property_offset(property, fdto, fixups_off) {
493 ret = overlay_fixup_phandle(fdt, fdto, symbols_off, property);
503 * @fdto: Device tree overlay
511 static int overlay_adjust_local_conflicting_phandle(void *fdto, int node,
517 php = fdt_getprop(fdto, node, "phandle", &len);
519 ret = fdt_setprop_inplace_u32(fdto, node, "phandle", fdt_phandle);
524 php = fdt_getprop(fdto, node, "linux,phandle", &len);
526 ret = fdt_setprop_inplace_u32(fdto, node, "linux,phandle", fdt_phandle);
536 * @fdto: Device tree overlay blob
548 static int overlay_update_node_conflicting_references(void *fdto, int tree_node,
557 fdt_for_each_property_offset(fixup_prop, fdto, fixup_node) {
565 fixup_val = fdt_getprop_by_offset(fdto, fixup_prop,
574 tree_val = fdt_getprop_w(fdto, tree_node, name, &tree_len);
594 fdt_for_each_subnode(fixup_child, fdto, fixup_node) {
595 const char *fixup_child_name = fdt_get_name(fdto, fixup_child, NULL);
598 tree_child = fdt_subnode_offset(fdto, tree_node, fixup_child_name);
605 ret = overlay_update_node_conflicting_references(fdto, tree_child,
618 * @fdto: Device tree overlay blob
628 static int overlay_update_local_conflicting_references(void *fdto,
634 fixups = fdt_path_offset(fdto, "/__local_fixups__");
640 return overlay_update_node_conflicting_references(fdto, 0, fixups,
649 * @fdto: Device tree overlay blob
650 * @fdtonode: Node in fdto matching @fdtnode
657 void *fdto, int fdtonode)
663 fdto_phandle = fdt_get_phandle(fdto, fdtonode);
668 ret = overlay_adjust_local_conflicting_phandle(fdto, fdtonode,
673 ret = overlay_update_local_conflicting_references(fdto,
680 fdt_for_each_subnode(fdtochild, fdto, fdtonode) {
681 const char *name = fdt_get_name(fdto, fdtochild, NULL);
694 fdto, fdtochild);
705 * @fdto: Device tree overlay blob
707 * Checks recursively if applying fdto overwrites phandle values in the base
708 * dtb. When such a phandle is found, the fdto is changed to use the fdt's
715 static int overlay_prevent_phandle_overwrite(void *fdt, void *fdto)
719 fdt_for_each_subnode(fragment, fdto, 0) {
724 overlay = fdt_subnode_offset(fdto, fragment, "__overlay__");
731 target = fdt_overlay_target_offset(fdt, fdto, fragment, NULL);
742 fdto, overlay);
754 * @fdto: Device tree overlay blob
770 void *fdto, int node)
775 fdt_for_each_property_offset(property, fdto, node) {
781 prop = fdt_getprop_by_offset(fdto, property, &name,
793 fdt_for_each_subnode(subnode, fdto, node) {
794 const char *name = fdt_get_name(fdto, subnode, NULL);
808 ret = overlay_apply_node(fdt, nnode, fdto, subnode);
819 * @fdto: Device tree overlay blob
831 static int overlay_merge(void *fdt, void *fdto)
835 fdt_for_each_subnode(fragment, fdto, 0) {
844 overlay = fdt_subnode_offset(fdto, fragment, "__overlay__");
851 target = fdt_overlay_target_offset(fdt, fdto, fragment, NULL);
855 ret = overlay_apply_node(fdt, target, fdto, overlay);
894 * @fdto: Device tree overlay blob
907 static int overlay_symbol_update(void *fdt, void *fdto)
920 ov_sym = fdt_subnode_offset(fdto, 0, "__symbols__");
937 fdt_for_each_property_offset(prop, fdto, ov_sym) {
938 path = fdt_getprop_by_offset(fdto, prop, &name, &path_len);
981 ret = fdt_subnode_offset_namelen(fdto, 0, frag_name,
989 ret = fdt_subnode_offset(fdto, fragment, "__overlay__");
994 ret = fdt_overlay_target_offset(fdt, fdto, fragment, &target_path);
1016 ret = fdt_overlay_target_offset(fdt, fdto, fragment, &target_path);
1042 int fdt_overlay_apply(void *fdt, void *fdto)
1048 FDT_RO_PROBE(fdto);
1054 /* Increase all phandles in the fdto by delta */
1055 ret = overlay_adjust_local_phandles(fdto, delta);
1059 /* Adapt the phandle values in fdto to the above increase */
1060 ret = overlay_update_local_references(fdto, delta);
1064 /* Update fdto's phandles using symbols from fdt */
1065 ret = overlay_fixup_phandles(fdt, fdto);
1070 ret = overlay_prevent_phandle_overwrite(fdt, fdto);
1074 ret = overlay_merge(fdt, fdto);
1078 ret = overlay_symbol_update(fdt, fdto);
1085 fdt_set_magic(fdto, ~0);
1093 fdt_set_magic(fdto, ~0);