summaryrefslogtreecommitdiff
path: root/scripts/dtc/libfdt/fdt_ro.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2019-04-13 08:27:35 -0400
committerTom Rini <trini@konsulko.com>2019-04-13 08:27:35 -0400
commitcf5eebeb18f7790d5030eb94f51fca0ebcd6e406 (patch)
treef4c9c40f9353fbe4104875779c7eedd3ed2342cc /scripts/dtc/libfdt/fdt_ro.c
parent0a5228be868622894a5f8f226203cd7bac562187 (diff)
parent73c02e5e4fc1ef53d06289232edd6cc52e3d73f6 (diff)
Merge tag 'pull-12apr19' of git://git.denx.de/u-boot-dm
fdtdec tests and improvements for carve-outs pinctrl race-condition fix various other fixes in sandbox, sound, mkimage, etc.
Diffstat (limited to 'scripts/dtc/libfdt/fdt_ro.c')
-rw-r--r--scripts/dtc/libfdt/fdt_ro.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c
index dfb3236da3..dc499884e4 100644
--- a/scripts/dtc/libfdt/fdt_ro.c
+++ b/scripts/dtc/libfdt/fdt_ro.c
@@ -115,6 +115,37 @@ uint32_t fdt_get_max_phandle(const void *fdt)
return 0;
}
+int fdt_generate_phandle(const void *fdt, uint32_t *phandle)
+{
+ uint32_t max = 0;
+ int offset = -1;
+
+ while (true) {
+ uint32_t value;
+
+ offset = fdt_next_node(fdt, offset, NULL);
+ if (offset < 0) {
+ if (offset == -FDT_ERR_NOTFOUND)
+ break;
+
+ return offset;
+ }
+
+ value = fdt_get_phandle(fdt, offset);
+
+ if (value > max)
+ max = value;
+ }
+
+ if (max == FDT_MAX_PHANDLE)
+ return -FDT_ERR_NOPHANDLES;
+
+ if (phandle)
+ *phandle = max + 1;
+
+ return 0;
+}
+
int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size)
{
FDT_CHECK_HEADER(fdt);