summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-08-26 17:34:23 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-10-11 01:21:51 +0200
commit1a8f7ecda5a3b7100950f16b7be2288fe6b5c86f (patch)
tree22485962f3727af4b20bdbd4c821925452e6ea4b /common
parent7a14fa1f2911d618f4c7b0f91355236b7b38d982 (diff)
ARM: Implement non-cached memory support
Implement an API that can be used by drivers to allocate memory from a pool that is mapped uncached. This is useful if drivers would otherwise need to do extensive cache maintenance (or explicitly maintaining the cache isn't safe). The API is protected using the new CONFIG_SYS_NONCACHED_MEMORY setting. Boards can set this to the size to be used for the non-cached area. The area will typically be right below the malloc() area, but architectures should take care of aligning the beginning and end of the area to honor any mapping restrictions. Architectures must also ensure that mappings established for this area do not overlap with the malloc() area (which should remain cached for improved performance). While the API is currently only implemented for ARM v7, it should be generic enough to allow other architectures to implement it as well. Signed-off-by: Thierry Reding <treding@nvidia.com> Conflicts: README
Diffstat (limited to 'common')
-rw-r--r--common/board_r.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/common/board_r.c b/common/board_r.c
index 231c6d6711..1fcfd8793f 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -270,6 +270,14 @@ static int initr_malloc(void)
return 0;
}
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+static int initr_noncached(void)
+{
+ noncached_init();
+ return 0;
+}
+#endif
+
#ifdef CONFIG_DM
static int initr_dm(void)
{
@@ -719,6 +727,9 @@ init_fnc_t init_sequence_r[] = {
initr_reloc_global_data,
initr_barrier,
initr_malloc,
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+ initr_noncached,
+#endif
bootstage_relocate,
#ifdef CONFIG_DM
initr_dm,