diff --git a/include/devicetree/memory.h b/include/devicetree/memory.h deleted file mode 100644 index a6c173e652e..00000000000 --- a/include/devicetree/memory.h +++ /dev/null @@ -1,139 +0,0 @@ -/** - * @file - * @brief reserved-memory Devicetree macro public API header file. - */ - -/* - * Copyright (c) 2021 Carlo Caione - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#ifndef ZEPHYR_INCLUDE_DEVICETREE_MEMORY_H_ -#define ZEPHYR_INCLUDE_DEVICETREE_MEMORY_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup devicetree-reserved Devicetree reserved-memory API - * @ingroup devicetree - * @{ - */ - -/** - * @brief Get the pointer to the reserved-memory region - * - * Example devicetree fragment: - * - * reserved: reserved-memory { - * compatible = "reserved-memory"; - * ... - * n: node { - * reg = <0x42000000 0x1000>; - * }; - * }; - * - * Example usage: - * - * DT_RESERVED_MEM_GET_PTR(DT_NODELABEL(n)) // (uint8_t *) 0x42000000 - * - * @param node_id node identifier - * @return pointer to the beginning of the reserved-memory region - */ -#define DT_RESERVED_MEM_GET_PTR(node_id) _DT_RESERVED_START(node_id) - -/** - * @brief Get the size of the reserved-memory region - * - * Example devicetree fragment: - * - * reserved: reserved-memory { - * compatible = "reserved-memory"; - * ... - * n: node { - * reg = <0x42000000 0x1000>; - * }; - * }; - * - * Example usage: - * - * DT_RESERVED_MEM_GET_SIZE(DT_NODELABEL(n)) // 0x1000 - * - * @param node_id node identifier - * @return the size of the reserved-memory region - */ -#define DT_RESERVED_MEM_GET_SIZE(node_id) DT_REG_SIZE(node_id) - -/** - * @brief Get the pointer to the reserved-memory region from a memory-reserved - * phandle - * - * Example devicetree fragment: - * - * reserved: reserved-memory { - * compatible = "reserved-memory"; - * ... - * res0: res { - * reg = <0x42000000 0x1000>; - * label = "res0"; - * }; - * }; - * - * n: node { - * memory-region = <&res0>; - * }; - * - * Example usage: - * - * DT_RESERVED_MEM_GET_PTR_BY_PHANDLE(DT_NODELABEL(n), memory_region) // (uint8_t *) 0x42000000 - * - * @param node_id node identifier - * @param ph phandle to reserved-memory region - * - * @return pointer to the beginning of the reserved-memory region - */ -#define DT_RESERVED_MEM_GET_PTR_BY_PHANDLE(node_id, ph) \ - DT_RESERVED_MEM_GET_PTR(DT_PHANDLE(node_id, ph)) - -/** - * @brief Get the size of the reserved-memory region from a memory-reserved - * phandle - * - * Example devicetree fragment: - * - * reserved: reserved-memory { - * compatible = "reserved-memory"; - * ... - * res0: res { - * reg = <0x42000000 0x1000>; - * label = "res0"; - * }; - * }; - * - * n: node { - * memory-region = <&res0>; - * }; - * - * Example usage: - * - * DT_RESERVED_MEM_GET_SIZE_BY_PHANDLE(DT_NODELABEL(n), memory_region) // (uint8_t *) 0x42000000 - * - * @param node_id node identifier - * @param ph phandle to reserved-memory region - * - * @return size of the reserved-memory region - */ -#define DT_RESERVED_MEM_GET_SIZE_BY_PHANDLE(node_id, ph) \ - DT_RESERVED_MEM_GET_SIZE(DT_PHANDLE(node_id, ph)) - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* ZEPHYR_INCLUDE_DEVICETREE_MEMORY_H_ */ diff --git a/include/linker/devicetree_reserved.h b/include/linker/devicetree_reserved.h index 92797602be2..391eba5909a 100644 --- a/include/linker/devicetree_reserved.h +++ b/include/linker/devicetree_reserved.h @@ -46,14 +46,122 @@ /** * @brief Generate region definitions for all the reserved memory regions */ -#define DT_RESERVED_MEM_REGIONS() _RESERVED_REGION_APPLY(_RESERVED_REGION_DECLARE) +#define LINKER_DT_RESERVED_MEM_REGIONS() _RESERVED_REGION_APPLY(_RESERVED_REGION_DECLARE) /** * @brief Generate section definitions for all the reserved memory regions */ -#define DT_RESERVED_MEM_SECTIONS() _RESERVED_REGION_APPLY(_RESERVED_SECTION_DECLARE) +#define LINKER_DT_RESERVED_MEM_SECTIONS() _RESERVED_REGION_APPLY(_RESERVED_SECTION_DECLARE) /** * @brief Generate linker script symbols for all the reserved memory regions */ -#define DT_RESERVED_MEM_SYMBOLS() _RESERVED_REGION_APPLY(_RESERVED_SYMBOL_DECLARE) +#define LINKER_DT_RESERVED_MEM_SYMBOLS() _RESERVED_REGION_APPLY(_RESERVED_SYMBOL_DECLARE) + +/** + * @brief Get the pointer to the reserved-memory region + * + * Example devicetree fragment: + * + * reserved: reserved-memory { + * compatible = "reserved-memory"; + * ... + * n: node { + * reg = <0x42000000 0x1000>; + * }; + * }; + * + * Example usage: + * + * LINKER_DT_RESERVED_MEM_GET_PTR(DT_NODELABEL(n)) // (uint8_t *) 0x42000000 + * + * @param node_id node identifier + * @return pointer to the beginning of the reserved-memory region + */ +#define LINKER_DT_RESERVED_MEM_GET_PTR(node_id) _DT_RESERVED_START(node_id) + +/** + * @brief Get the size of the reserved-memory region + * + * Example devicetree fragment: + * + * reserved: reserved-memory { + * compatible = "reserved-memory"; + * ... + * n: node { + * reg = <0x42000000 0x1000>; + * }; + * }; + * + * Example usage: + * + * LINKER_DT_RESERVED_MEM_GET_SIZE(DT_NODELABEL(n)) // 0x1000 + * + * @param node_id node identifier + * @return the size of the reserved-memory region + */ +#define LINKER_DT_RESERVED_MEM_GET_SIZE(node_id) DT_REG_SIZE(node_id) + +/** + * @brief Get the pointer to the reserved-memory region from a memory-reserved + * phandle + * + * Example devicetree fragment: + * + * reserved: reserved-memory { + * compatible = "reserved-memory"; + * ... + * res0: res { + * reg = <0x42000000 0x1000>; + * label = "res0"; + * }; + * }; + * + * n: node { + * memory-region = <&res0>; + * }; + * + * Example usage: + * + * LINKER_DT_RESERVED_MEM_GET_PTR_BY_PHANDLE(DT_NODELABEL(n), \ + * memory_region) // (uint8_t *) 0x42000000 + * + * @param node_id node identifier + * @param ph phandle to reserved-memory region + * + * @return pointer to the beginning of the reserved-memory region + */ +#define LINKER_DT_RESERVED_MEM_GET_PTR_BY_PHANDLE(node_id, ph) \ + LINKER_DT_RESERVED_MEM_GET_PTR(DT_PHANDLE(node_id, ph)) + +/** + * @brief Get the size of the reserved-memory region from a memory-reserved + * phandle + * + * Example devicetree fragment: + * + * reserved: reserved-memory { + * compatible = "reserved-memory"; + * ... + * res0: res { + * reg = <0x42000000 0x1000>; + * label = "res0"; + * }; + * }; + * + * n: node { + * memory-region = <&res0>; + * }; + * + * Example usage: + * + * LINKER_DT_RESERVED_MEM_GET_SIZE_BY_PHANDLE(DT_NODELABEL(n), \ + * memory_region) // (uint8_t *) 0x42000000 + * + * @param node_id node identifier + * @param ph phandle to reserved-memory region + * + * @return size of the reserved-memory region + */ +#define LINKER_DT_RESERVED_MEM_GET_SIZE_BY_PHANDLE(node_id, ph) \ + LINKER_DT_RESERVED_MEM_GET_SIZE(DT_PHANDLE(node_id, ph)) diff --git a/include/linker/linker-defs.h b/include/linker/linker-defs.h index 715fb4e0dc6..b005e99428b 100644 --- a/include/linker/linker-defs.h +++ b/include/linker/linker-defs.h @@ -259,7 +259,7 @@ extern char _vector_start[]; extern char _vector_end[]; #if DT_NODE_HAS_STATUS(_NODE_RESERVED, okay) -DT_RESERVED_MEM_SYMBOLS() +LINKER_DT_RESERVED_MEM_SYMBOLS() #endif #ifdef CONFIG_SW_VECTOR_RELAY diff --git a/samples/boards/qemu_cortex_a53/reserved_memory/linker_arm64_reserved.ld b/samples/boards/qemu_cortex_a53/reserved_memory/linker_arm64_reserved.ld index 89929d7c0e1..0906faadfad 100644 --- a/samples/boards/qemu_cortex_a53/reserved_memory/linker_arm64_reserved.ld +++ b/samples/boards/qemu_cortex_a53/reserved_memory/linker_arm64_reserved.ld @@ -13,12 +13,12 @@ MEMORY { - DT_RESERVED_MEM_REGIONS() + LINKER_DT_RESERVED_MEM_REGIONS() } SECTIONS { - DT_RESERVED_MEM_SECTIONS() + LINKER_DT_RESERVED_MEM_SECTIONS() } #include diff --git a/samples/boards/qemu_cortex_a53/reserved_memory/src/main.c b/samples/boards/qemu_cortex_a53/reserved_memory/src/main.c index 5370b3964a5..306bd866cf8 100644 --- a/samples/boards/qemu_cortex_a53/reserved_memory/src/main.c +++ b/samples/boards/qemu_cortex_a53/reserved_memory/src/main.c @@ -5,7 +5,6 @@ */ #include -#include #include /* Variables placed in reserved sections */ @@ -18,17 +17,17 @@ void main(void) uint32_t res_size_outer, res_size_inner; res_ptr_outer = - DT_RESERVED_MEM_GET_PTR_BY_PHANDLE(DT_NODELABEL(sample_driver_outer), - memory_region); + LINKER_DT_RESERVED_MEM_GET_PTR_BY_PHANDLE(DT_NODELABEL(sample_driver_outer), + memory_region); res_size_outer = - DT_RESERVED_MEM_GET_SIZE_BY_PHANDLE(DT_NODELABEL(sample_driver_outer), - memory_region); + LINKER_DT_RESERVED_MEM_GET_SIZE_BY_PHANDLE(DT_NODELABEL(sample_driver_outer), + memory_region); printk("Reserved memory address for the outer driver: %p\n", res_ptr_outer); printk("Reserved memory size for the outer driver: %d\n", res_size_outer); - res_ptr_inner = DT_RESERVED_MEM_GET_PTR(DT_NODELABEL(res1)); - res_size_inner = DT_RESERVED_MEM_GET_SIZE(DT_NODELABEL(res1)); + res_ptr_inner = LINKER_DT_RESERVED_MEM_GET_PTR(DT_NODELABEL(res1)); + res_size_inner = LINKER_DT_RESERVED_MEM_GET_SIZE(DT_NODELABEL(res1)); printk("Reserved memory address for the inner driver: %p\n", res_ptr_inner); printk("Reserved memory size for the inner driver: %d\n", res_size_inner); diff --git a/tests/drivers/syscon/linker_arm64_reserved.ld b/tests/drivers/syscon/linker_arm64_reserved.ld index c58b95f9f45..c75b3c52f96 100644 --- a/tests/drivers/syscon/linker_arm64_reserved.ld +++ b/tests/drivers/syscon/linker_arm64_reserved.ld @@ -12,12 +12,12 @@ MEMORY { - DT_RESERVED_MEM_REGIONS() + LINKER_DT_RESERVED_MEM_REGIONS() } SECTIONS { - DT_RESERVED_MEM_SECTIONS() + LINKER_DT_RESERVED_MEM_SECTIONS() } #include