/* * Copyright (c) 2023 Carlo Caione * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MEM_ATTR_H_ #define ZEPHYR_INCLUDE_DT_BINDINGS_MEM_ATTR_H_ #include /* * Generic memory attributes. * * Generic memory attributes that should be common to all architectures. */ #define DT_MEM_ATTR_MASK GENMASK(15, 0) #define DT_MEM_ATTR_GET(x) ((x) & DT_MEM_ATTR_MASK) #define DT_MEM_ATTR_SHIFT (0) #define DT_MEM_CACHEABLE BIT(0) /* cacheable */ #define DT_MEM_NON_VOLATILE BIT(1) /* non-volatile */ #define DT_MEM_OOO BIT(2) /* out-of-order */ #define DT_MEM_DMA BIT(3) /* DMA-able */ #define DT_MEM_UNKNOWN BIT(15) /* must be last */ /* to be continued */ /* * Software specific memory attributes. * * Software can define their own memory attributes if needed using the * provided mask. */ #define DT_MEM_SW_ATTR_MASK GENMASK(19, 16) #define DT_MEM_SW_ATTR_GET(x) ((x) & DT_MEM_SW_ATTR_MASK) #define DT_MEM_SW_ATTR_SHIFT (16) #define DT_MEM_SW_ATTR_UNKNOWN BIT(19) /* * Architecture specific memory attributes. * * Architectures can define their own memory attributes if needed using the * provided mask. * * See for example `include/zephyr/dt-bindings/memory-attr/memory-attr-arm.h` */ #define DT_MEM_ARCH_ATTR_MASK GENMASK(31, 20) #define DT_MEM_ARCH_ATTR_GET(x) ((x) & DT_MEM_ARCH_ATTR_MASK) #define DT_MEM_ARCH_ATTR_SHIFT (20) #define DT_MEM_ARCH_ATTR_UNKNOWN BIT(31) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MEM_ATTR_H_ */