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()
260 const char *q = memchr(path, '/', end - p); in fdt_path_offset_namelen()
265 p = fdt_get_alias_namelen(fdt, p, q - p); in fdt_path_offset_namelen()
267 return -FDT_ERR_BADPATH; in fdt_path_offset_namelen()
281 q = memchr(p, '/', end - p); in fdt_path_offset_namelen()
285 offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p); in fdt_path_offset_namelen()
300 const char *fdt_get_name(const void *fdt, int nodeoffset, int *len) in fdt_get_name() argument
310 nameptr = nh->name; in fdt_get_name()
321 err = -FDT_ERR_BADSTRUCTURE; in fdt_get_name()
327 if (len) in fdt_get_name()
328 *len = strlen(nameptr); in fdt_get_name()
333 if (len) in fdt_get_name()
334 *len = err; in fdt_get_name()
373 *lenp = fdt32_ld_(&prop->len); in fdt_get_property_by_offset_()
387 *lenp = -FDT_ERR_BADVERSION; in fdt_get_property_by_offset()
408 offset = -FDT_ERR_INTERNAL; in fdt_get_property_namelen_()
411 if (fdt_string_eq_(fdt, fdt32_ld_(&prop->nameoff), in fdt_get_property_namelen_()
434 *lenp = -FDT_ERR_BADVERSION; in fdt_get_property_namelen()
464 (poffset + sizeof(*prop)) % 8 && fdt32_ld_(&prop->len) >= 8) in fdt_getprop_namelen()
465 return prop->data + 4; in fdt_getprop_namelen()
466 return prop->data; in fdt_getprop_namelen()
482 name = fdt_get_string(fdt, fdt32_ld_(&prop->nameoff), in fdt_getprop_by_offset()
491 *namep = fdt_string(fdt, fdt32_ld_(&prop->nameoff)); in fdt_getprop_by_offset()
497 (offset + sizeof(*prop)) % 8 && fdt32_ld_(&prop->len) >= 8) in fdt_getprop_by_offset()
498 return prop->data + 4; in fdt_getprop_by_offset()
499 return prop->data; in fdt_getprop_by_offset()
511 int len; in fdt_get_phandle() local
513 /* FIXME: This is a bit sub-optimal, since we potentially scan in fdt_get_phandle()
515 php = fdt_getprop(fdt, nodeoffset, "phandle", &len); in fdt_get_phandle()
516 if (!php || (len != sizeof(*php))) { in fdt_get_phandle()
517 php = fdt_getprop(fdt, nodeoffset, "linux,phandle", &len); in fdt_get_phandle()
518 if (!php || (len != sizeof(*php))) in fdt_get_phandle()
551 return -FDT_ERR_NOSPACE; in fdt_get_path()
558 p--; in fdt_get_path()
559 } while (buf[p-1] != '/'); in fdt_get_path()
560 pdepth--; in fdt_get_path()
577 return -FDT_ERR_NOSPACE; in fdt_get_path()
580 p--; in fdt_get_path()
586 if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) in fdt_get_path()
587 return -FDT_ERR_BADOFFSET; in fdt_get_path()
588 else if (offset == -FDT_ERR_BADOFFSET) in fdt_get_path()
589 return -FDT_ERR_BADSTRUCTURE; in fdt_get_path()
598 int supernodeoffset = -FDT_ERR_INTERNAL; in fdt_supernode_atdepth_offset()
603 return -FDT_ERR_NOTFOUND; in fdt_supernode_atdepth_offset()
616 return -FDT_ERR_NOTFOUND; in fdt_supernode_atdepth_offset()
623 if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) in fdt_supernode_atdepth_offset()
624 return -FDT_ERR_BADOFFSET; in fdt_supernode_atdepth_offset()
625 else if (offset == -FDT_ERR_BADOFFSET) in fdt_supernode_atdepth_offset()
626 return -FDT_ERR_BADSTRUCTURE; in fdt_supernode_atdepth_offset()
640 -FDT_ERR_INTERNAL; in fdt_node_depth()
651 nodedepth - 1, NULL); in fdt_parent_offset()
660 int len; in fdt_node_offset_by_prop_value() local
672 val = fdt_getprop(fdt, offset, propname, &len); in fdt_node_offset_by_prop_value()
673 if (val && (len == proplen) in fdt_node_offset_by_prop_value()
674 && (memcmp(val, propval, len) == 0)) in fdt_node_offset_by_prop_value()
686 return -FDT_ERR_BADPHANDLE; in fdt_node_offset_by_phandle()
696 for (offset = fdt_next_node(fdt, -1, NULL); in fdt_node_offset_by_phandle()
708 int len = strlen(str); in fdt_stringlist_contains() local
711 while (listlen >= len) { in fdt_stringlist_contains()
712 if (memcmp(str, strlist, len+1) == 0) in fdt_stringlist_contains()
717 listlen -= (p-strlist) + 1; in fdt_stringlist_contains()
735 length = strnlen(list, end - list) + 1; in fdt_stringlist_count()
737 /* Abort if the last string isn't properly NUL-terminated. */ in fdt_stringlist_count()
739 return -FDT_ERR_BADVALUE; in fdt_stringlist_count()
751 int length, len, idx = 0; in fdt_stringlist_search() local
758 len = strlen(string) + 1; in fdt_stringlist_search()
762 length = strnlen(list, end - list) + 1; in fdt_stringlist_search()
764 /* Abort if the last string isn't properly NUL-terminated. */ in fdt_stringlist_search()
766 return -FDT_ERR_BADVALUE; in fdt_stringlist_search()
768 if (length == len && memcmp(list, string, length) == 0) in fdt_stringlist_search()
775 return -FDT_ERR_NOTFOUND; in fdt_stringlist_search()
796 length = strnlen(list, end - list) + 1; in fdt_stringlist_get()
798 /* Abort if the last string isn't properly NUL-terminated. */ in fdt_stringlist_get()
801 *lenp = -FDT_ERR_BADVALUE; in fdt_stringlist_get()
808 *lenp = length - 1; in fdt_stringlist_get()
814 idx--; in fdt_stringlist_get()
818 *lenp = -FDT_ERR_NOTFOUND; in fdt_stringlist_get()
827 int len; in fdt_node_check_compatible() local
829 prop = fdt_getprop(fdt, nodeoffset, "compatible", &len); in fdt_node_check_compatible()
831 return len; in fdt_node_check_compatible()
833 return !fdt_stringlist_contains(prop, len, compatible); in fdt_node_check_compatible()
852 if ((err < 0) && (err != -FDT_ERR_NOTFOUND)) in fdt_node_offset_by_compatible()