diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2023-03-07 10:34:24 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2023-03-10 11:20:12 +0100 |
commit | 964a52bc45eb95937a8123fe82f022061c066f99 (patch) | |
tree | 90e8156325f70dc1a36d2fc1158a78d8410d1d5e /drivers/tee | |
parent | a60135d20d268a467bef8a2c15e52560a7825a9e (diff) | |
download | barebox-964a52bc45eb95937a8123fe82f022061c066f99.tar.gz |
drivers: implement of_optee_fixup helper function
This function can be called by board-code after checking whether OP-TEE
was installed or not.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Link: https://lore.barebox.org/20230307093426.1551193-2-a.fatoum@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/tee')
-rw-r--r-- | drivers/tee/optee/of.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/tee/optee/of.c b/drivers/tee/optee/of.c new file mode 100644 index 0000000000..8295a1751c --- /dev/null +++ b/drivers/tee/optee/of.c @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <of.h> +#include <linux/ioport.h> +#include <asm/barebox-arm.h> +#include <asm/optee.h> + +int of_optee_fixup(struct device_node *root, void *_data) +{ + struct of_optee_fixup_data *fixup_data = _data; + struct resource res = {}; + struct device_node *node; + int ret; + + node = of_create_node(root, "/firmware/optee"); + if (!node) + return -ENOMEM; + + 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; + + res.start = arm_mem_endmem_get() - OPTEE_SIZE; + res.end = arm_mem_endmem_get() - fixup_data->shm_size -1; + res.flags = IORESOURCE_BUSY; + res.name = "optee_core"; + + ret = of_fixup_reserved_memory(root, &res); + if (ret) + return ret; + + res.start = arm_mem_endmem_get() - fixup_data->shm_size; + res.end = arm_mem_endmem_get() - 1; + res.flags &= ~IORESOURCE_BUSY; + res.name = "optee_shm"; + + return of_fixup_reserved_memory(root, &res); +} |