Merge changes I1df23bfa,Ibc85e30c into integration

* changes:
  fix(st): support device tree DDR sizes higher than 16Gbits for aarch64
  feat(fdt-wrappers): add function to read uint64 with default value
This commit is contained in:
Manish V Badarkhe 2024-10-01 16:10:30 +02:00 committed by TrustedFirmware Code Review
commit cc3d73cc67
3 changed files with 22 additions and 3 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2023, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2018-2024, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -88,6 +88,19 @@ int fdt_read_uint64(const void *dtb, int node, const char *prop_name,
return 0;
}
uint64_t fdt_read_uint64_default(const void *dtb, int node,
const char *prop_name, uint64_t dflt_value)
{
uint64_t ret = dflt_value;
int err = fdt_read_uint64(dtb, node, prop_name, &ret);
if (err < 0) {
return dflt_value;
}
return ret;
}
/*
* Read bytes from a given property of the given node. Any number of
* bytes of the property can be read. The fdt pointer is updated.

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2023, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2018-2024, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -21,6 +21,8 @@ uint32_t fdt_read_uint32_default(const void *dtb, int node,
const char *prop_name, uint32_t dflt_value);
int fdt_read_uint64(const void *dtb, int node, const char *prop_name,
uint64_t *value);
uint64_t fdt_read_uint64_default(const void *dtb, int node,
const char *prop_name, uint64_t dflt_value);
int fdt_read_uint32_array(const void *dtb, int node, const char *prop_name,
unsigned int cells, uint32_t *value);
int fdtw_read_string(const void *dtb, int node, const char *prop,

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2023, Arm Limited and Contributors. All rights reserved.
* Copyright (c) 2017-2024, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -243,7 +243,11 @@ size_t dt_get_ddr_size(void)
return 0U;
}
#ifdef __aarch64__
size = (size_t)fdt_read_uint64_default(fdt, node, "st,mem-size", 0ULL);
#else /* __aarch64__ */
size = (size_t)fdt_read_uint32_default(fdt, node, "st,mem-size", 0U);
#endif /* __aarch64__ */
flush_dcache_range((uintptr_t)&size, sizeof(size_t));