mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
board: stm32mp1: fix handling of DT OP-TEE reserved memory nodes
Fix the sequence in stm32mp1 fdt.c that disables OP-TEE resources
defined in FDT when U-boot detects OP-TEE firmware is not present.
Before this change, helper function stm32_fdt_disable_optee()
set property status to "disabled" for the OP-TEE reserved memory
nodes but this has no impact since Linux kernel does not consider
the status property for reserved-memory subnodes. This change
make U-Boot to attempt to delete the node instead.
Fixes: 4a1b975dac
("board: stm32mp1: reserve memory for OP-TEE in device tree")
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
This commit is contained in:
parent
287be3294a
commit
164873a0c0
1 changed files with 9 additions and 5 deletions
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||
/*
|
||||
* Copyright (C) 2019, STMicroelectronics - All Rights Reserved
|
||||
* Copyright (C) 2019-2020, STMicroelectronics - All Rights Reserved
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
|
@ -224,19 +224,23 @@ static void stm32_fdt_disable_optee(void *blob)
|
|||
{
|
||||
int off, node;
|
||||
|
||||
/* Delete "optee" firmware node */
|
||||
off = fdt_node_offset_by_compatible(blob, -1, "linaro,optee-tz");
|
||||
if (off >= 0 && fdtdec_get_is_enabled(blob, off))
|
||||
fdt_status_disabled(blob, off);
|
||||
fdt_del_node(blob, off);
|
||||
|
||||
/* Disabled "optee@..." reserved-memory node */
|
||||
/* Delete "optee@..." reserved-memory node */
|
||||
off = fdt_path_offset(blob, "/reserved-memory/");
|
||||
if (off < 0)
|
||||
return;
|
||||
for (node = fdt_first_subnode(blob, off);
|
||||
node >= 0;
|
||||
node = fdt_next_subnode(blob, node)) {
|
||||
if (!strncmp(fdt_get_name(blob, node, NULL), "optee@", 6))
|
||||
fdt_status_disabled(blob, node);
|
||||
if (strncmp(fdt_get_name(blob, node, NULL), "optee@", 6))
|
||||
continue;
|
||||
|
||||
if (fdt_del_node(blob, node))
|
||||
printf("Failed to remove optee reserved-memory node\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue