fdtdec: only create phandle if caller wants it in fdtdec_add_reserved_memory()
authorHeiko Stuebner <heiko.stuebner@theobroma-systems.com>
Wed, 23 Oct 2019 14:46:39 +0000 (16:46 +0200)
committerSimon Glass <sjg@chromium.org>
Thu, 14 Nov 2019 13:09:34 +0000 (07:09 -0600)
The phandlep pointer returning the phandle to the caller is optional
and if it is not set when calling fdtdec_add_reserved_memory() it is
highly likely that the caller is not interested in a phandle to the
created reserved-memory area and really just wants that area added.

So just don't create a phandle in that case.

Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
include/fdtdec.h
lib/fdtdec.c

index e150975b276470f41314d10a49f24a6b0ab75411..696e0fd024d5d1ca972401e9aa651e30da439742 100644 (file)
@@ -1061,7 +1061,7 @@ static inline int fdtdec_set_phandle(void *blob, int node, uint32_t phandle)
  * @param basename     base name of the node to create
  * @param carveout     information about the carveout region
  * @param phandlep     return location for the phandle of the carveout region
- *                     can be NULL
+ *                     can be NULL if no phandle should be added
  * @return 0 on success or a negative error code on failure
  */
 int fdtdec_add_reserved_memory(void *blob, const char *basename,
index 38a0cff25ee7de70e0af4dc42f1ade08580ec101..61af3472e6a41352f3fd2f43a8d56a4b5be5e48a 100644 (file)
@@ -1339,13 +1339,15 @@ int fdtdec_add_reserved_memory(void *blob, const char *basename,
        if (node < 0)
                return node;
 
-       err = fdt_generate_phandle(blob, &phandle);
-       if (err < 0)
-               return err;
-
-       err = fdtdec_set_phandle(blob, node, phandle);
-       if (err < 0)
-               return err;
+       if (phandlep) {
+               err = fdt_generate_phandle(blob, &phandle);
+               if (err < 0)
+                       return err;
+
+               err = fdtdec_set_phandle(blob, node, phandle);
+               if (err < 0)
+                       return err;
+       }
 
        /* store one or two address cells */
        if (na > 1)