summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2021-09-03 16:16:25 +0300
committerTom Warren <twarren@nvidia.com>2021-10-14 00:18:30 +0300
commita0ba216ed420a8953f57f777256f310370b95338 (patch)
tree54cbc59e705d50687eafcf35c3f3ce1559e099d7 /arch
parent77409c7f83622a71060bf78142149d39540ba405 (diff)
downloadu-boot-a0ba216ed420a8953f57f777256f310370b95338.tar.xz
ARM: tegra: Copy memory-region-names property
If multiple entries are present in the memory-region property, this new memory-region-names property can be used to specify names for each of them so that they can be more easily distinguished. Signed-off-by: Thierry Reding <treding@nvidia.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Warren <twarren@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/dt-setup.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/dt-setup.c b/arch/arm/mach-tegra/dt-setup.c
index 894a6358a2..c11494722b 100644
--- a/arch/arm/mach-tegra/dt-setup.c
+++ b/arch/arm/mach-tegra/dt-setup.c
@@ -78,9 +78,11 @@ void ft_mac_address_setup(void *fdt)
static int ft_copy_carveout(void *dst, const void *src, const char *node)
{
+ const char *names = "memory-region-names";
struct fdt_memory carveout;
unsigned int index = 0;
- int err;
+ int err, offset, len;
+ const void *prop;
while (true) {
const char **compatibles = NULL;
@@ -96,6 +98,8 @@ static int ft_copy_carveout(void *dst, const void *src, const char *node)
if (err != -FDT_ERR_NOTFOUND)
printf("failed to get carveout for %s: %d\n",
node, err);
+ else
+ break;
return err;
}
@@ -126,6 +130,31 @@ static int ft_copy_carveout(void *dst, const void *src, const char *node)
index++;
}
+ offset = fdt_path_offset(src, node);
+ if (offset < 0) {
+ debug("failed to find source offset for %s: %s\n", node,
+ fdt_strerror(err));
+ return err;
+ }
+
+ prop = fdt_getprop(src, offset, names, &len);
+ if (prop) {
+ offset = fdt_path_offset(dst, node);
+ if (offset < 0) {
+ debug("failed to find destination offset for %s: %s\n",
+ node, fdt_strerror(err));
+ return err;
+ }
+
+ err = fdt_setprop(dst, offset, "memory-region-names", prop,
+ len);
+ if (err < 0) {
+ debug("failed to copy \"%s\" property: %s\n", names,
+ fdt_strerror(err));
+ return err;
+ }
+ }
+
return 0;
}