From 024ecdd67274e8a88fb633c203495f176a1c5db1 Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Wed, 28 Jul 2021 20:51:47 +1000 Subject: [PATCH] devicetree: `LINKER_DT_NODE_REGION_NAME` added Adds a macro to convert a devicetree node to the name of a linker memory region. Signed-off-by: Jordan Yates --- include/linker/devicetree_regions.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/include/linker/devicetree_regions.h b/include/linker/devicetree_regions.h index 8fec70cc533..5810487cdba 100644 --- a/include/linker/devicetree_regions.h +++ b/include/linker/devicetree_regions.h @@ -7,6 +7,34 @@ * Generate memory regions from devicetree nodes. */ +/** + * @brief Get the linker memory-region name + * + * This attempts to use the zephyr,memory-region property, falling back + * to the node path if it doesn't exist. + * + * Example devicetree fragment: + * + * / { + * soc { + * sram1: memory@2000000 { + * zephyr,memory-region = "MY_NAME"; + * }; + * sram2: memory@2001000 { ... }; + * }; + * }; + * + * Example usage: + * + * LINKER_DT_NODE_REGION_NAME(DT_NODELABEL(sram1)) // "MY_NAME" + * LINKER_DT_NODE_REGION_NAME(DT_NODELABEL(sram2)) // "/soc/memory@2001000" + * + * @param node_id node identifier + * @return the name of the memory memory region the node will generate + */ +#define LINKER_DT_NODE_REGION_NAME(node_id) \ + DT_PROP_OR(node_id, zephyr_memory_region, DT_NODE_PATH(node_id)) + /* Declare a memory region */ #define _REGION_DECLARE(name, attr, node) name(attr) : \ ORIGIN = DT_REG_ADDR(node), \