Lines Matching +full:child +full:- +full:node

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2009-2014 The FreeBSD Foundation
72 fdt_get_range_by_busaddr(phandle_t node, u_long addr, u_long *base, in fdt_get_range_by_busaddr() argument
80 if (node == 0) { in fdt_get_range_by_busaddr()
86 if ((fdt_addrsize_cells(node, &addr_cells, &size_cells)) != 0) in fdt_get_range_by_busaddr()
91 par_addr_cells = fdt_parent_addr_cells(node); in fdt_get_range_by_busaddr()
96 len = OF_getproplen(node, "ranges"); in fdt_get_range_by_busaddr()
98 return (-1); in fdt_get_range_by_busaddr()
102 return (fdt_get_range_by_busaddr(OF_parent(node), addr, in fdt_get_range_by_busaddr()
106 if (OF_getprop(node, "ranges", ranges, sizeof(ranges)) <= 0) in fdt_get_range_by_busaddr()
129 err = fdt_get_range_by_busaddr(OF_parent(node), par_bus_addr, in fdt_get_range_by_busaddr()
147 fdt_get_range(phandle_t node, int range_id, u_long *base, u_long *size) in fdt_get_range() argument
154 if ((fdt_addrsize_cells(node, &addr_cells, &size_cells)) != 0) in fdt_get_range()
159 par_addr_cells = fdt_parent_addr_cells(node); in fdt_get_range()
163 len = OF_getproplen(node, "ranges"); in fdt_get_range()
175 if (OF_getprop(node, "ranges", ranges, sizeof(ranges)) <= 0) in fdt_get_range()
191 err = fdt_get_range_by_busaddr(OF_parent(node), par_bus_addr, in fdt_get_range()
205 phandle_t node; in fdt_immr_addr() local
210 * Try to access the SOC node directly i.e. through /aliases/. in fdt_immr_addr()
212 if ((node = OF_finddevice("soc")) != -1) in fdt_immr_addr()
213 if (ofw_bus_node_is_compatible(node, "simple-bus")) in fdt_immr_addr()
216 * Find the node the long way. in fdt_immr_addr()
218 if ((node = OF_finddevice("/")) == -1) in fdt_immr_addr()
221 if ((node = fdt_find_compatible(node, "simple-bus", 0)) == 0) in fdt_immr_addr()
225 if ((r = fdt_get_range(node, 0, &base, &size)) == 0) { in fdt_immr_addr()
235 fdt_is_compatible_strict(phandle_t node, const char *compatible) in fdt_is_compatible_strict() argument
239 if (OF_getproplen(node, "compatible") <= 0) in fdt_is_compatible_strict()
242 if (OF_getprop(node, "compatible", compat, FDT_COMPAT_LEN) < 0) in fdt_is_compatible_strict()
255 phandle_t child; in fdt_find_compatible() local
258 * Traverse all children of 'start' node, and find first with in fdt_find_compatible()
261 for (child = OF_child(start); child != 0; child = OF_peer(child)) in fdt_find_compatible()
262 if (ofw_bus_node_is_compatible(child, compat)) { in fdt_find_compatible()
264 if (!fdt_is_compatible_strict(child, compat)) in fdt_find_compatible()
266 return (child); in fdt_find_compatible()
274 phandle_t child, node; in fdt_depth_search_compatible() local
277 * Depth-search all descendants of 'start' node, and find first with in fdt_depth_search_compatible()
280 for (node = OF_child(start); node != 0; node = OF_peer(node)) { in fdt_depth_search_compatible()
281 if (ofw_bus_node_is_compatible(node, compat) && in fdt_depth_search_compatible()
282 (strict == 0 || fdt_is_compatible_strict(node, compat))) { in fdt_depth_search_compatible()
283 return (node); in fdt_depth_search_compatible()
285 child = fdt_depth_search_compatible(node, compat, strict); in fdt_depth_search_compatible()
286 if (child != 0) in fdt_depth_search_compatible()
287 return (child); in fdt_depth_search_compatible()
293 fdt_parent_addr_cells(phandle_t node) in fdt_parent_addr_cells() argument
297 /* Find out #address-cells of the superior bus. */ in fdt_parent_addr_cells()
298 if (OF_searchprop(OF_parent(node), "#address-cells", &addr_cells, in fdt_parent_addr_cells()
316 fdt_addrsize_cells(phandle_t node, int *addr_cells, int *size_cells) in fdt_addrsize_cells() argument
322 * Retrieve #{address,size}-cells. in fdt_addrsize_cells()
325 if (OF_getencprop(node, "#address-cells", &cell, cell_size) < cell_size) in fdt_addrsize_cells()
329 if (OF_getencprop(node, "#size-cells", &cell, cell_size) < cell_size) in fdt_addrsize_cells()
359 fdt_regsize(phandle_t node, u_long *base, u_long *size) in fdt_regsize() argument
364 if (fdt_addrsize_cells(OF_parent(node), &addr_cells, &size_cells)) in fdt_regsize()
370 len = OF_getprop(node, "reg", &reg, sizeof(reg)); in fdt_regsize()
380 fdt_get_phyaddr(phandle_t node, device_t dev, int *phy_addr, void **phy_sc) in fdt_get_phyaddr() argument
385 device_t parent, child; in fdt_get_phyaddr() local
387 if (OF_getencprop(node, "phy-handle", (void *)&phy_handle, in fdt_get_phyaddr()
407 * Step 1: Search for ancestor of the phy-node with a "phy-handle" in fdt_get_phyaddr()
412 if (OF_getprop(phy_node, "phy-handle", (void *)&phy_handle, in fdt_get_phyaddr()
422 * compare its node with the one found in step 1, ancestor of phy in fdt_get_phyaddr()
423 * node (stored in phy_node). in fdt_get_phyaddr()
427 child = device_find_child(parent, device_get_name(dev), i); in fdt_get_phyaddr()
428 while (child != NULL) { in fdt_get_phyaddr()
429 if (ofw_bus_get_node(child) == phy_node) in fdt_get_phyaddr()
432 child = device_find_child(parent, device_get_name(dev), i); in fdt_get_phyaddr()
434 if (child == NULL) in fdt_get_phyaddr()
440 *phy_sc = (void *)device_get_softc(child); in fdt_get_phyaddr()
456 if (memory == -1) { in fdt_get_reserved_regions()
506 phandle_t child, root; in fdt_get_reserved_mem() local
510 root = OF_finddevice("/reserved-memory"); in fdt_get_reserved_mem()
511 if (root == -1) { in fdt_get_reserved_mem()
523 for (child = OF_child(root); child != 0; child = OF_peer(child)) { in fdt_get_reserved_mem()
524 if (!OF_hasprop(child, "no-map")) in fdt_get_reserved_mem()
527 rv = OF_getprop(child, "reg", reg, sizeof(reg)); in fdt_get_reserved_mem()
529 /* XXX: Does a no-map of a dynamic range make sense? */ in fdt_get_reserved_mem()
554 if (memory == -1) { in fdt_get_mem_regions()
614 if (chosen == -1) in fdt_get_chosen_bootargs()
616 if (OF_getprop(chosen, "bootargs", bootargs, max_size) == -1) in fdt_get_chosen_bootargs()