The function fixes up an OP-TEE node as well as reserved memory regions.
It can be useful to fix up the memory reservations, but not the OP-TEE
node itself, so let's make this possible if the method is NULL.

Signed-off-by: Ahmad Fatoum <a.fat...@barebox.org>
---
 drivers/tee/optee/of_fixup.c | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/drivers/tee/optee/of_fixup.c b/drivers/tee/optee/of_fixup.c
index 5a3eb094f22d..152322901a7e 100644
--- a/drivers/tee/optee/of_fixup.c
+++ b/drivers/tee/optee/of_fixup.c
@@ -10,24 +10,27 @@ int of_optee_fixup(struct device_node *root, void *_data)
        struct of_optee_fixup_data *fixup_data = _data;
        const char *optee_of_path = "/firmware/optee";
        struct resource res_core = {}, res_shm = {};
-       struct device_node *node;
        u64 optee_membase;
        int ret;
 
        if (of_find_node_by_path_from(root, optee_of_path))
                return 0;
 
-       node = of_create_node(root, optee_of_path);
-       if (!node)
-               return -ENOMEM;
+       if (fixup_data->method) {
+               struct device_node *node;
 
-       ret = of_property_write_string(node, "compatible", "linaro,optee-tz");
-       if (ret)
-               return ret;
+               node = of_create_node(root, optee_of_path);
+               if (!node)
+                       return -ENOMEM;
 
-       ret = of_property_write_string(node, "method", fixup_data->method);
-       if (ret)
-               return ret;
+               ret = of_property_write_string(node, "compatible", 
"linaro,optee-tz");
+               if (ret)
+                       return ret;
+
+               ret = of_property_write_string(node, "method", 
fixup_data->method);
+               if (ret)
+                       return ret;
+       }
 
        if (!optee_get_membase(&optee_membase)) {
                res_core.start = optee_membase;
-- 
2.39.5


Reply via email to