Lines Matching +full:max +full:- +full:len
1 // SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
3 * libfdt - Flat Device Tree manipulation
14 const char *s, int len) in fdt_nodename_eq_() argument
19 if (!p || olen < len) in fdt_nodename_eq_()
23 if (memcmp(p, s, len) != 0) in fdt_nodename_eq_()
26 if (p[len] == '\0') in fdt_nodename_eq_()
28 else if (!memchr(s, '@', len) && (p[len] == '@')) in fdt_nodename_eq_()
38 size_t len; in fdt_get_string() local
54 err = -FDT_ERR_BADOFFSET; in fdt_get_string()
58 len = totalsize - absoffset; 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()
70 unsigned int sw_stroffset = -stroffset; in fdt_get_string()
75 if (sw_stroffset < len) in fdt_get_string()
76 len = sw_stroffset; in fdt_get_string()
78 err = -FDT_ERR_INTERNAL; in fdt_get_string()
83 n = memchr(s, '\0', len); in fdt_get_string()
86 err = -FDT_ERR_TRUNCATED; in fdt_get_string()
91 *lenp = n - s; in fdt_get_string()
106 const char *s, int len) in fdt_string_eq_() argument
111 return p && (slen == len) && (memcmp(p, s, len) == 0); in fdt_string_eq_()
116 uint32_t max = 0; in fdt_find_max_phandle() local
117 int offset = -1; in fdt_find_max_phandle()
124 if (offset == -FDT_ERR_NOTFOUND) in fdt_find_max_phandle()
132 if (value > max) in fdt_find_max_phandle()
133 max = value; in fdt_find_max_phandle()
137 *phandle = max; in fdt_find_max_phandle()
144 uint32_t max; in fdt_generate_phandle() local
147 err = fdt_find_max_phandle(fdt, &max); in fdt_generate_phandle()
151 if (max == FDT_MAX_PHANDLE) in fdt_generate_phandle()
152 return -FDT_ERR_NOPHANDLES; in fdt_generate_phandle()
155 *phandle = max + 1; in fdt_generate_phandle()
168 if (absoffset > fdt_totalsize(fdt) - in fdt_mem_rsv()
182 return -FDT_ERR_BADOFFSET; in fdt_get_mem_rsv()
184 *address = fdt64_ld_(&re->address); in fdt_get_mem_rsv()
185 *size = fdt64_ld_(&re->size); in fdt_get_mem_rsv()
195 if (fdt64_ld_(&re->size) == 0) in fdt_num_mem_rsv()
198 return -FDT_ERR_TRUNCATED; in fdt_num_mem_rsv()
212 return -FDT_ERR_BADSTRUCTURE; in nextprop_()
222 return -FDT_ERR_NOTFOUND; in nextprop_()
240 return -FDT_ERR_NOTFOUND; in fdt_subnode_offset_namelen()
259 return -FDT_ERR_BADPATH; in fdt_path_offset_namelen()
263 const char *q = memchr(path, '/', end - p); in fdt_path_offset_namelen()
268 p = fdt_get_alias_namelen(fdt, p, q - p); in fdt_path_offset_namelen()
270 return -FDT_ERR_BADPATH; in fdt_path_offset_namelen()
284 q = memchr(p, '/', end - p); in fdt_path_offset_namelen()
288 offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p); in fdt_path_offset_namelen()
303 const char *fdt_get_name(const void *fdt, int nodeoffset, int *len) in fdt_get_name() argument
313 nameptr = nh->name; in fdt_get_name()
324 err = -FDT_ERR_BADSTRUCTURE; in fdt_get_name()
330 if (len) in fdt_get_name()
331 *len = strlen(nameptr); in fdt_get_name()
336 if (len) in fdt_get_name()
337 *len = err; in fdt_get_name()
376 *lenp = fdt32_ld_(&prop->len); in fdt_get_property_by_offset_()
390 *lenp = -FDT_ERR_BADVERSION; in fdt_get_property_by_offset()
411 offset = -FDT_ERR_INTERNAL; in fdt_get_property_namelen_()
414 if (fdt_string_eq_(fdt, fdt32_ld_(&prop->nameoff), in fdt_get_property_namelen_()
437 *lenp = -FDT_ERR_BADVERSION; in fdt_get_property_namelen()
467 (poffset + sizeof(*prop)) % 8 && fdt32_ld_(&prop->len) >= 8) in fdt_getprop_namelen()
468 return prop->data + 4; in fdt_getprop_namelen()
469 return prop->data; in fdt_getprop_namelen()
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()
500 (offset + sizeof(*prop)) % 8 && fdt32_ld_(&prop->len) >= 8) in fdt_getprop_by_offset()
501 return prop->data + 4; in fdt_getprop_by_offset()
502 return prop->data; in fdt_getprop_by_offset()
514 int len; in fdt_get_phandle() local
516 /* FIXME: This is a bit sub-optimal, since we potentially scan in fdt_get_phandle()
518 php = fdt_getprop(fdt, nodeoffset, "phandle", &len); in fdt_get_phandle()
519 if (!php || (len != sizeof(*php))) { in fdt_get_phandle()
520 php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len); in fdt_get_phandle()
521 if (!php || (len != sizeof(*php))) in fdt_get_phandle()
543 int len; in fdt_get_alias_namelen() local
546 alias = fdt_path_getprop_namelen(fdt, "/aliases", name, namelen, &len); in fdt_get_alias_namelen()
549 !(alias && len > 0 && alias[len - 1] == '\0' && *alias == '/')) in fdt_get_alias_namelen()
580 return -FDT_ERR_NOSPACE; in fdt_get_path()
587 p--; in fdt_get_path()
588 } while (buf[p-1] != '/'); in fdt_get_path()
589 pdepth--; in fdt_get_path()
606 return -FDT_ERR_NOSPACE; in fdt_get_path()
609 p--; in fdt_get_path()
615 if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) in fdt_get_path()
616 return -FDT_ERR_BADOFFSET; in fdt_get_path()
617 else if (offset == -FDT_ERR_BADOFFSET) in fdt_get_path()
618 return -FDT_ERR_BADSTRUCTURE; in fdt_get_path()
627 int supernodeoffset = -FDT_ERR_INTERNAL; in fdt_supernode_atdepth_offset()
632 return -FDT_ERR_NOTFOUND; in fdt_supernode_atdepth_offset()
645 return -FDT_ERR_NOTFOUND; in fdt_supernode_atdepth_offset()
652 if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) in fdt_supernode_atdepth_offset()
653 return -FDT_ERR_BADOFFSET; in fdt_supernode_atdepth_offset()
654 else if (offset == -FDT_ERR_BADOFFSET) in fdt_supernode_atdepth_offset()
655 return -FDT_ERR_BADSTRUCTURE; in fdt_supernode_atdepth_offset()
669 -FDT_ERR_INTERNAL; in fdt_node_depth()
680 nodedepth - 1, NULL); in fdt_parent_offset()
689 int len; in fdt_node_offset_by_prop_value() local
701 val = fdt_getprop(fdt, offset, propname, &len); in fdt_node_offset_by_prop_value()
702 if (val && (len == proplen) in fdt_node_offset_by_prop_value()
703 && (memcmp(val, propval, len) == 0)) in fdt_node_offset_by_prop_value()
715 return -FDT_ERR_BADPHANDLE; in fdt_node_offset_by_phandle()
725 for (offset = fdt_next_node(fdt, -1, NULL); in fdt_node_offset_by_phandle()
737 int len = strlen(str); in fdt_stringlist_contains() local
740 while (listlen >= len) { in fdt_stringlist_contains()
741 if (memcmp(str, strlist, len+1) == 0) in fdt_stringlist_contains()
746 listlen -= (p-strlist) + 1; in fdt_stringlist_contains()
764 length = strnlen(list, end - list) + 1; in fdt_stringlist_count()
766 /* Abort if the last string isn't properly NUL-terminated. */ in fdt_stringlist_count()
768 return -FDT_ERR_BADVALUE; in fdt_stringlist_count()
780 int length, len, idx = 0; in fdt_stringlist_search() local
787 len = strlen(string) + 1; in fdt_stringlist_search()
791 length = strnlen(list, end - list) + 1; in fdt_stringlist_search()
793 /* Abort if the last string isn't properly NUL-terminated. */ in fdt_stringlist_search()
795 return -FDT_ERR_BADVALUE; in fdt_stringlist_search()
797 if (length == len && memcmp(list, string, length) == 0) in fdt_stringlist_search()
804 return -FDT_ERR_NOTFOUND; in fdt_stringlist_search()
825 length = strnlen(list, end - list) + 1; in fdt_stringlist_get()
827 /* Abort if the last string isn't properly NUL-terminated. */ in fdt_stringlist_get()
830 *lenp = -FDT_ERR_BADVALUE; in fdt_stringlist_get()
837 *lenp = length - 1; in fdt_stringlist_get()
843 idx--; in fdt_stringlist_get()
847 *lenp = -FDT_ERR_NOTFOUND; in fdt_stringlist_get()
856 int len; in fdt_node_check_compatible() local
858 prop = fdt_getprop(fdt, nodeoffset, "compatible", &len); in fdt_node_check_compatible()
860 return len; in fdt_node_check_compatible()
862 return !fdt_stringlist_contains(prop, len, compatible); in fdt_node_check_compatible()
881 if ((err < 0) && (err != -FDT_ERR_NOTFOUND)) in fdt_node_offset_by_compatible()