[PATCH v2 18/18] ARM: i.MX8M: fix optee of-fixup logic
Sascha Hauer
sha at pengutronix.de
Thu Jan 18 07:30:09 PST 2024
On Tue, Jan 16, 2024 at 06:07:38PM +0100, Marco Felsch wrote:
> The current code checks only if "/firmware/optee" exist on the builtin
> dtb and applys the fixup if not found and if found nothing is done. If a
> builtin dts contains the node but an external don't the fixup won't be
> applied. Also if the external dts does have a node + the reserved memory
> region nodes but the barebox builtin dts don't we do add additional
> reserved memory nodes which may conflict due to different name scheme:
> <name> vs. <name>@<addr>.
>
> Move the "/firmware/optee" check into the of_optee_fixup() so the check
> is done on the correct dtb root nodes.
>
> Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
> ---
> arch/arm/mach-imx/imx8m.c | 3 +--
> drivers/tee/optee/of_fixup.c | 6 +++++-
> 2 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/mach-imx/imx8m.c b/arch/arm/mach-imx/imx8m.c
> index 6db16f024148..73b420b38697 100644
> --- a/arch/arm/mach-imx/imx8m.c
> +++ b/arch/arm/mach-imx/imx8m.c
> @@ -68,8 +68,7 @@ static int imx8m_init(const char *cputypestr)
> imx_set_reset_reason(src + IMX7_SRC_SRSR, imx7_reset_reasons);
> pr_info("%s unique ID: %llx\n", cputypestr, imx8m_uid());
>
> - if (IS_ENABLED(CONFIG_PBL_OPTEE) && tzc380_is_enabled() &&
> - !of_find_node_by_path_from(NULL, "/firmware/optee")) {
> + if (IS_ENABLED(CONFIG_PBL_OPTEE) && tzc380_is_enabled()) {
> static struct of_optee_fixup_data optee_fixup_data = {
> .shm_size = OPTEE_SHM_SIZE,
> .method = "smc",
> diff --git a/drivers/tee/optee/of_fixup.c b/drivers/tee/optee/of_fixup.c
> index cdf650592e90..2ff1f01964c8 100644
> --- a/drivers/tee/optee/of_fixup.c
> +++ b/drivers/tee/optee/of_fixup.c
> @@ -9,12 +9,16 @@
> 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 = {};
> struct device_node *node;
> u64 optee_membase;
> int ret;
>
> - node = of_create_node(root, "/firmware/optee");
> + if (of_find_node_by_path_from(NULL, optee_of_path))
> + return 0;
This implements a "when the internal dts does have a OP-TEE node, then
do not fixup the external dts". This is surely not what you meant. Should
this be
if (of_find_node_by_path_from(root, optee_of_path))
return 0;
or something else?
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list