From: Andrew Davis <afd@ti.com>
To: Neha Malcom Francis <n-francis@ti.com>,
Vignesh Raghavendra <vigneshr@ti.com>, Nishanth Menon <nm@ti.com>,
Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>
Cc: <u-boot@lists.denx.de>, Andrew Davis <afd@ti.com>
Subject: [PATCH 4/6] arm: mach-k3: am62: Fixup TF-A/OP-TEE reserved-memory node in FDT
Date: Wed, 14 Feb 2024 10:30:07 -0600 [thread overview]
Message-ID: <20240214163009.983034-5-afd@ti.com> (raw)
In-Reply-To: <20240214163009.983034-1-afd@ti.com>
The address we load TF-A and OP-TEE to is configurable by Kconfig
CONFIG_K3_{ATF,OPTEE}_LOAD_ADDR, but the DT nodes reserving this memory
are often statically defined. As these binaries are dynamically loadable,
and in the case of OP-TEE may not even be loaded at all, hard-coding these
addresses is not a hardware description, but rather a configuration.
If the address that U-Boot loaded TF-A or OP-TEE does not match the
address in hard-coded in DT, then fix that node address. This also handles
the case when no reserved memory for these is provided by DT, which is
more correct as explained above.
Add this fixup function, and enable it for AM62.
Signed-off-by: Andrew Davis <afd@ti.com>
---
arch/arm/mach-k3/am625_fdt.c | 2 ++
arch/arm/mach-k3/common_fdt.c | 52 +++++++++++++++++++++++++++++++++++
arch/arm/mach-k3/common_fdt.h | 2 ++
3 files changed, 56 insertions(+)
diff --git a/arch/arm/mach-k3/am625_fdt.c b/arch/arm/mach-k3/am625_fdt.c
index 970dd3447de..b26186456f3 100644
--- a/arch/arm/mach-k3/am625_fdt.c
+++ b/arch/arm/mach-k3/am625_fdt.c
@@ -43,6 +43,8 @@ int ft_system_setup(void *blob, struct bd_info *bd)
fdt_fixup_cores_nodes_am625(blob, k3_get_core_nr());
fdt_fixup_gpu_nodes_am625(blob, k3_has_gpu());
fdt_fixup_pru_node_am625(blob, k3_has_pru());
+ fdt_fixup_reserved(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR, 0x80000);
+ fdt_fixup_reserved(blob, "optee", CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000);
return 0;
}
diff --git a/arch/arm/mach-k3/common_fdt.c b/arch/arm/mach-k3/common_fdt.c
index 645c4de42f7..3bdedd7b509 100644
--- a/arch/arm/mach-k3/common_fdt.c
+++ b/arch/arm/mach-k3/common_fdt.c
@@ -112,3 +112,55 @@ int fdt_del_node_path(void *blob, const char *path)
return ret;
}
+
+int fdt_fixup_reserved(void *blob, const char *name,
+ unsigned int new_address, unsigned int new_size)
+{
+ int nodeoffset, subnode;
+ int ret;
+
+ /* Find reserved-memory */
+ nodeoffset = fdt_subnode_offset(blob, 0, "reserved-memory");
+ if (nodeoffset < 0) {
+ debug("Could not find reserved-memory node\n");
+ return 0;
+ }
+
+ /* Find existing matching subnode and remove it */
+ fdt_for_each_subnode(subnode, blob, nodeoffset) {
+ const char *node_name;
+ fdt_addr_t addr;
+ fdt_size_t size;
+
+ /* Name matching */
+ node_name = fdt_get_name(blob, subnode, NULL);
+ if (!name)
+ return -EINVAL;
+ if (!strncmp(node_name, name, strlen(name))) {
+ /* Read out old size first */
+ addr = fdtdec_get_addr_size(blob, subnode, "reg", &size);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+ new_size = size;
+
+ /* Delete node */
+ ret = fdt_del_node(blob, subnode);
+ if (ret < 0)
+ return ret;
+
+ /* Only one matching node */
+ break;
+ }
+ }
+
+ struct fdt_memory carveout = {
+ .start = new_address,
+ .end = new_address + new_size - 1,
+ };
+ ret = fdtdec_add_reserved_memory(blob, name, &carveout, NULL, 0, NULL,
+ FDTDEC_RESERVED_MEMORY_NO_MAP);
+ if (ret < 0)
+ return ret;
+
+ return 0;
+}
diff --git a/arch/arm/mach-k3/common_fdt.h b/arch/arm/mach-k3/common_fdt.h
index 4d23ae638ca..52c07957483 100644
--- a/arch/arm/mach-k3/common_fdt.h
+++ b/arch/arm/mach-k3/common_fdt.h
@@ -8,5 +8,7 @@
int fdt_fixup_msmc_ram_k3(void *blob);
int fdt_del_node_path(void *blob, const char *path);
+int fdt_fixup_reserved(void *blob, const char *name,
+ unsigned int new_address, unsigned int new_size);
#endif /* _COMMON_FDT_H */
--
2.39.2
next prev parent reply other threads:[~2024-02-14 16:30 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 16:30 [PATCH 0/6] Move DRAM address of ATF Andrew Davis
2024-02-14 16:30 ` [PATCH 1/6] arm: mach-k3: Add default ATF location for AM62/AM62a Andrew Davis
2024-02-16 4:55 ` Neha Malcom Francis
2024-03-06 13:27 ` Bryan Brattlof
2024-06-19 11:49 ` Dhruva Gole
2024-06-19 18:20 ` Nishanth Menon
2024-06-19 20:02 ` Andrew Davis
2024-06-20 5:30 ` Wadim Egorov
2024-06-21 13:49 ` Bryan Brattlof
2024-02-14 16:30 ` [PATCH 2/6] arm: mach-k3: Add config option for setting OP-TEE address Andrew Davis
2024-02-16 4:59 ` Neha Malcom Francis
2024-02-28 6:21 ` Manorit Chawdhry
2024-03-06 13:49 ` Andrew Davis
2024-03-06 13:28 ` Bryan Brattlof
2024-02-14 16:30 ` [PATCH 3/6] arm: mach-k3: am62: Enable OF_SYSTEM_SETUP for all boards Andrew Davis
2024-02-14 16:30 ` Andrew Davis [this message]
2024-02-16 5:26 ` [PATCH 4/6] arm: mach-k3: am62: Fixup TF-A/OP-TEE reserved-memory node in FDT Neha Malcom Francis
2024-02-28 6:24 ` Manorit Chawdhry
2024-03-06 13:52 ` Andrew Davis
2024-03-06 13:35 ` Bryan Brattlof
2024-03-06 14:03 ` Andrew Davis
2024-03-06 15:38 ` Bryan Brattlof
2024-02-14 16:30 ` [PATCH 5/6] arm: mach-k3: am62a: " Andrew Davis
2024-03-06 13:35 ` Bryan Brattlof
2024-02-14 16:30 ` [PATCH 6/6] arm: mach-k3: Move DRAM address of ATF for AM62/AM62a Andrew Davis
2024-02-15 8:06 ` Francesco Dolcini
2024-02-15 20:44 ` Andrew Davis
2024-03-06 13:37 ` Bryan Brattlof
2024-03-06 16:53 ` [PATCH 0/6] Move DRAM address of ATF Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240214163009.983034-5-afd@ti.com \
--to=afd@ti.com \
--cc=n-francis@ti.com \
--cc=nm@ti.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox