dm: core: Avoid registering an inaccessible tree

At present there are various restrictions on the use of livetree:

- It is only available once the tree is unflattened, i.e. after relocation
- It is designed to be used with the control FDT
- It can (in principle) be used with other FDTs, but only if they are
  unflattened first; this is not supported

Add a few checks to make sure that any tree that is created is actually
valid. Otherwise it can be confusing when nodes and properties cannot
actually be accessed.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-06-01 10:22:31 -06:00 committed by Tom Rini
parent 11c341b118
commit a6c4f18894

View file

@ -60,6 +60,11 @@ static oftree oftree_ensure(void *fdt)
return oftree_null();
}
if (of_live_active()) {
log_err("Cannot register a flattree when OF_LIVE is active\n");
return oftree_null();
}
/* register the new tree */
i = oftree_count++;
oftree_list[i] = fdt;
@ -133,6 +138,10 @@ oftree oftree_from_fdt(void *fdt)
if (CONFIG_IS_ENABLED(OFNODE_MULTI_TREE))
return oftree_ensure(fdt);
#ifdef OF_CHECKS
if (of_live_active())
return oftree_null();
#endif
tree.fdt = fdt;
return tree;