Lines Matching refs:fdt
13 static int fdt_nodename_eq_(const void *fdt, int offset, in fdt_nodename_eq_() argument
17 const char *p = fdt_get_name(fdt, offset, &olen); in fdt_nodename_eq_()
34 const char *fdt_get_string(const void *fdt, int stroffset, int *lenp) in fdt_get_string() argument
43 s = (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset; in fdt_get_string()
49 totalsize = fdt_ro_probe_(fdt); in fdt_get_string()
55 absoffset = stroffset + fdt_off_dt_strings(fdt); in fdt_get_string()
60 if (fdt_magic(fdt) == FDT_MAGIC) { in fdt_get_string()
63 if (can_assume(LATEST) || fdt_version(fdt) >= 17) { in fdt_get_string()
64 if ((unsigned)stroffset >= fdt_size_dt_strings(fdt)) in fdt_get_string()
66 if ((fdt_size_dt_strings(fdt) - stroffset) < len) in fdt_get_string()
67 len = fdt_size_dt_strings(fdt) - stroffset; in fdt_get_string()
69 } else if (fdt_magic(fdt) == FDT_SW_MAGIC) { in fdt_get_string()
73 (sw_stroffset > fdt_size_dt_strings(fdt))) in fdt_get_string()
82 s = (const char *)fdt + absoffset; in fdt_get_string()
100 const char *fdt_string(const void *fdt, int stroffset) in fdt_string() argument
102 return fdt_get_string(fdt, stroffset, NULL); in fdt_string()
105 static int fdt_string_eq_(const void *fdt, int stroffset, in fdt_string_eq_() argument
109 const char *p = fdt_get_string(fdt, stroffset, &slen); in fdt_string_eq_()
114 int fdt_find_max_phandle(const void *fdt, uint32_t *phandle) in fdt_find_max_phandle() argument
122 offset = fdt_next_node(fdt, offset, NULL); in fdt_find_max_phandle()
130 value = fdt_get_phandle(fdt, offset); in fdt_find_max_phandle()
142 int fdt_generate_phandle(const void *fdt, uint32_t *phandle) in fdt_generate_phandle() argument
147 err = fdt_find_max_phandle(fdt, &max); in fdt_generate_phandle()
160 static const struct fdt_reserve_entry *fdt_mem_rsv(const void *fdt, int n) in fdt_mem_rsv() argument
163 unsigned int absoffset = fdt_off_mem_rsvmap(fdt) + offset; in fdt_mem_rsv()
166 if (absoffset < fdt_off_mem_rsvmap(fdt)) in fdt_mem_rsv()
168 if (absoffset > fdt_totalsize(fdt) - in fdt_mem_rsv()
172 return fdt_mem_rsv_(fdt, n); in fdt_mem_rsv()
175 int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size) in fdt_get_mem_rsv() argument
179 FDT_RO_PROBE(fdt); in fdt_get_mem_rsv()
180 re = fdt_mem_rsv(fdt, n); in fdt_get_mem_rsv()
189 int fdt_num_mem_rsv(const void *fdt) in fdt_num_mem_rsv() argument
194 for (i = 0; (re = fdt_mem_rsv(fdt, i)) != NULL; i++) { in fdt_num_mem_rsv()
201 static int nextprop_(const void *fdt, int offset) in nextprop_() argument
207 tag = fdt_next_tag(fdt, offset, &nextoffset); in nextprop_()
225 int fdt_subnode_offset_namelen(const void *fdt, int offset, in fdt_subnode_offset_namelen() argument
230 FDT_RO_PROBE(fdt); in fdt_subnode_offset_namelen()
234 offset = fdt_next_node(fdt, offset, &depth)) in fdt_subnode_offset_namelen()
236 && fdt_nodename_eq_(fdt, offset, name, namelen)) in fdt_subnode_offset_namelen()
244 int fdt_subnode_offset(const void *fdt, int parentoffset, in fdt_subnode_offset() argument
247 return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name)); in fdt_subnode_offset()
250 int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen) in fdt_path_offset_namelen() argument
256 FDT_RO_PROBE(fdt); in fdt_path_offset_namelen()
268 p = fdt_get_alias_namelen(fdt, p, q - p); in fdt_path_offset_namelen()
271 offset = fdt_path_offset(fdt, p); in fdt_path_offset_namelen()
288 offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p); in fdt_path_offset_namelen()
298 int fdt_path_offset(const void *fdt, const char *path) in fdt_path_offset() argument
300 return fdt_path_offset_namelen(fdt, path, strlen(path)); in fdt_path_offset()
303 const char *fdt_get_name(const void *fdt, int nodeoffset, int *len) in fdt_get_name() argument
305 const struct fdt_node_header *nh = fdt_offset_ptr_(fdt, nodeoffset); in fdt_get_name()
309 if (((err = fdt_ro_probe_(fdt)) < 0) in fdt_get_name()
310 || ((err = fdt_check_node_offset_(fdt, nodeoffset)) < 0)) in fdt_get_name()
315 if (!can_assume(LATEST) && fdt_version(fdt) < 0x10) { in fdt_get_name()
341 int fdt_first_property_offset(const void *fdt, int nodeoffset) in fdt_first_property_offset() argument
345 if ((offset = fdt_check_node_offset_(fdt, nodeoffset)) < 0) in fdt_first_property_offset()
348 return nextprop_(fdt, offset); in fdt_first_property_offset()
351 int fdt_next_property_offset(const void *fdt, int offset) in fdt_next_property_offset() argument
353 if ((offset = fdt_check_prop_offset_(fdt, offset)) < 0) in fdt_next_property_offset()
356 return nextprop_(fdt, offset); in fdt_next_property_offset()
359 static const struct fdt_property *fdt_get_property_by_offset_(const void *fdt, in fdt_get_property_by_offset_() argument
367 (err = fdt_check_prop_offset_(fdt, offset)) < 0) { in fdt_get_property_by_offset_()
373 prop = fdt_offset_ptr_(fdt, offset); in fdt_get_property_by_offset_()
381 const struct fdt_property *fdt_get_property_by_offset(const void *fdt, in fdt_get_property_by_offset() argument
388 if (!can_assume(LATEST) && fdt_version(fdt) < 0x10) { in fdt_get_property_by_offset()
394 return fdt_get_property_by_offset_(fdt, offset, lenp); in fdt_get_property_by_offset()
397 static const struct fdt_property *fdt_get_property_namelen_(const void *fdt, in fdt_get_property_namelen_() argument
404 for (offset = fdt_first_property_offset(fdt, offset); in fdt_get_property_namelen_()
406 (offset = fdt_next_property_offset(fdt, offset))) { in fdt_get_property_namelen_()
409 prop = fdt_get_property_by_offset_(fdt, offset, lenp); in fdt_get_property_namelen_()
414 if (fdt_string_eq_(fdt, fdt32_ld_(&prop->nameoff), in fdt_get_property_namelen_()
428 const struct fdt_property *fdt_get_property_namelen(const void *fdt, in fdt_get_property_namelen() argument
435 if (!can_assume(LATEST) && fdt_version(fdt) < 0x10) { in fdt_get_property_namelen()
441 return fdt_get_property_namelen_(fdt, offset, name, namelen, lenp, in fdt_get_property_namelen()
446 const struct fdt_property *fdt_get_property(const void *fdt, in fdt_get_property() argument
450 return fdt_get_property_namelen(fdt, nodeoffset, name, in fdt_get_property()
454 const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, in fdt_getprop_namelen() argument
460 prop = fdt_get_property_namelen_(fdt, nodeoffset, name, namelen, lenp, in fdt_getprop_namelen()
466 if (!can_assume(LATEST) && fdt_version(fdt) < 0x10 && in fdt_getprop_namelen()
472 const void *fdt_getprop_by_offset(const void *fdt, int offset, in fdt_getprop_by_offset() argument
477 prop = fdt_get_property_by_offset_(fdt, offset, lenp); in fdt_getprop_by_offset()
485 name = fdt_get_string(fdt, fdt32_ld_(&prop->nameoff), in fdt_getprop_by_offset()
494 *namep = fdt_string(fdt, fdt32_ld_(&prop->nameoff)); in fdt_getprop_by_offset()
499 if (!can_assume(LATEST) && fdt_version(fdt) < 0x10 && in fdt_getprop_by_offset()
505 const void *fdt_getprop(const void *fdt, int nodeoffset, in fdt_getprop() argument
508 return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp); in fdt_getprop()
511 uint32_t fdt_get_phandle(const void *fdt, int nodeoffset) in fdt_get_phandle() argument
518 php = fdt_getprop(fdt, nodeoffset, "phandle", &len); in fdt_get_phandle()
520 php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len); in fdt_get_phandle()
528 static const void *fdt_path_getprop_namelen(const void *fdt, const char *path, in fdt_path_getprop_namelen() argument
532 int offset = fdt_path_offset(fdt, path); in fdt_path_getprop_namelen()
537 return fdt_getprop_namelen(fdt, offset, propname, propnamelen, lenp); in fdt_path_getprop_namelen()
540 const char *fdt_get_alias_namelen(const void *fdt, in fdt_get_alias_namelen() argument
546 alias = fdt_path_getprop_namelen(fdt, "/aliases", name, namelen, &len); in fdt_get_alias_namelen()
555 const char *fdt_get_alias(const void *fdt, const char *name) in fdt_get_alias() argument
557 return fdt_get_alias_namelen(fdt, name, strlen(name)); in fdt_get_alias()
560 const char *fdt_get_symbol_namelen(const void *fdt, in fdt_get_symbol_namelen() argument
563 return fdt_path_getprop_namelen(fdt, "/__symbols__", name, namelen, NULL); in fdt_get_symbol_namelen()
566 const char *fdt_get_symbol(const void *fdt, const char *name) in fdt_get_symbol() argument
568 return fdt_get_symbol_namelen(fdt, name, strlen(name)); in fdt_get_symbol()
571 int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen) in fdt_get_path() argument
577 FDT_RO_PROBE(fdt); in fdt_get_path()
584 offset = fdt_next_node(fdt, offset, &depth)) { in fdt_get_path()
593 name = fdt_get_name(fdt, offset, &namelen); in fdt_get_path()
623 int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, in fdt_supernode_atdepth_offset() argument
629 FDT_RO_PROBE(fdt); in fdt_supernode_atdepth_offset()
636 offset = fdt_next_node(fdt, offset, &depth)) { in fdt_supernode_atdepth_offset()
661 int fdt_node_depth(const void *fdt, int nodeoffset) in fdt_node_depth() argument
666 err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth); in fdt_node_depth()
673 int fdt_parent_offset(const void *fdt, int nodeoffset) in fdt_parent_offset() argument
675 int nodedepth = fdt_node_depth(fdt, nodeoffset); in fdt_parent_offset()
679 return fdt_supernode_atdepth_offset(fdt, nodeoffset, in fdt_parent_offset()
683 int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, in fdt_node_offset_by_prop_value() argument
691 FDT_RO_PROBE(fdt); in fdt_node_offset_by_prop_value()
698 for (offset = fdt_next_node(fdt, startoffset, NULL); in fdt_node_offset_by_prop_value()
700 offset = fdt_next_node(fdt, offset, NULL)) { in fdt_node_offset_by_prop_value()
701 val = fdt_getprop(fdt, offset, propname, &len); in fdt_node_offset_by_prop_value()
710 int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle) in fdt_node_offset_by_phandle() argument
717 FDT_RO_PROBE(fdt); in fdt_node_offset_by_phandle()
725 for (offset = fdt_next_node(fdt, -1, NULL); in fdt_node_offset_by_phandle()
727 offset = fdt_next_node(fdt, offset, NULL)) { in fdt_node_offset_by_phandle()
728 if (fdt_get_phandle(fdt, offset) == phandle) in fdt_node_offset_by_phandle()
752 int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property) in fdt_stringlist_count() argument
757 list = fdt_getprop(fdt, nodeoffset, property, &length); in fdt_stringlist_count()
777 int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property, in fdt_stringlist_search() argument
783 list = fdt_getprop(fdt, nodeoffset, property, &length); in fdt_stringlist_search()
807 const char *fdt_stringlist_get(const void *fdt, int nodeoffset, in fdt_stringlist_get() argument
814 list = fdt_getprop(fdt, nodeoffset, property, &length); in fdt_stringlist_get()
852 int fdt_node_check_compatible(const void *fdt, int nodeoffset, in fdt_node_check_compatible() argument
858 prop = fdt_getprop(fdt, nodeoffset, "compatible", &len); in fdt_node_check_compatible()
865 int fdt_node_offset_by_compatible(const void *fdt, int startoffset, in fdt_node_offset_by_compatible() argument
870 FDT_RO_PROBE(fdt); in fdt_node_offset_by_compatible()
877 for (offset = fdt_next_node(fdt, startoffset, NULL); in fdt_node_offset_by_compatible()
879 offset = fdt_next_node(fdt, offset, NULL)) { in fdt_node_offset_by_compatible()
880 err = fdt_node_check_compatible(fdt, offset, compatible); in fdt_node_offset_by_compatible()