1c596d835SJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
2c596d835SJens Wiklander /*
3c596d835SJens Wiklander * Copyright (c) 2024, Linaro Limited
4c596d835SJens Wiklander */
5c596d835SJens Wiklander
6c596d835SJens Wiklander #ifndef __MM_PHYS_MEM_H
7c596d835SJens Wiklander #define __MM_PHYS_MEM_H
8c596d835SJens Wiklander
9c596d835SJens Wiklander #include <mm/tee_mm.h>
10c596d835SJens Wiklander #include <types_ext.h>
11c596d835SJens Wiklander
12c596d835SJens Wiklander void nex_phys_mem_init(paddr_t core_base, paddr_size_t core_size,
13c596d835SJens Wiklander paddr_t ta_base, paddr_size_t ta_size);
14c596d835SJens Wiklander paddr_size_t nex_phys_mem_get_ta_size(void);
15c596d835SJens Wiklander paddr_t nex_phys_mem_get_ta_base(void);
16c596d835SJens Wiklander tee_mm_entry_t *nex_phys_mem_mm_find(paddr_t addr);
17c596d835SJens Wiklander tee_mm_entry_t *nex_phys_mem_core_alloc(size_t size);
18c596d835SJens Wiklander tee_mm_entry_t *nex_phys_mem_ta_alloc(size_t size);
19c596d835SJens Wiklander tee_mm_entry_t *nex_phys_mem_alloc2(paddr_t base, size_t size);
20c596d835SJens Wiklander void nex_phys_mem_partial_carve_out(paddr_t base, size_t size);
21c596d835SJens Wiklander #ifdef CFG_WITH_STATS
22c596d835SJens Wiklander void nex_phys_mem_stats(struct pta_stats_alloc *stats, bool reset);
23c596d835SJens Wiklander #endif
24c596d835SJens Wiklander
25c596d835SJens Wiklander #ifdef CFG_NS_VIRTUALIZATION
26c596d835SJens Wiklander void phys_mem_init(paddr_t core_base, paddr_size_t core_size,
27c596d835SJens Wiklander paddr_t ta_base, paddr_size_t ta_size);
28c596d835SJens Wiklander tee_mm_entry_t *phys_mem_mm_find(paddr_t addr);
29c596d835SJens Wiklander tee_mm_entry_t *phys_mem_core_alloc(size_t size);
30c596d835SJens Wiklander tee_mm_entry_t *phys_mem_ta_alloc(size_t size);
31c596d835SJens Wiklander tee_mm_entry_t *phys_mem_alloc2(paddr_t base, size_t size);
32c596d835SJens Wiklander #ifdef CFG_WITH_STATS
33c596d835SJens Wiklander void phys_mem_stats(struct pta_stats_alloc *stats, bool reset);
34c596d835SJens Wiklander #endif
35c596d835SJens Wiklander #else
phys_mem_init(paddr_t core_base,paddr_size_t core_size,paddr_t ta_base,paddr_size_t ta_size)36c596d835SJens Wiklander static inline void phys_mem_init(paddr_t core_base, paddr_size_t core_size,
37c596d835SJens Wiklander paddr_t ta_base, paddr_size_t ta_size)
38c596d835SJens Wiklander {
39c596d835SJens Wiklander nex_phys_mem_init(core_base, core_size, ta_base, ta_size);
40c596d835SJens Wiklander }
41c596d835SJens Wiklander
phys_mem_mm_find(paddr_t addr)42c596d835SJens Wiklander static inline tee_mm_entry_t *phys_mem_mm_find(paddr_t addr)
43c596d835SJens Wiklander {
44c596d835SJens Wiklander return nex_phys_mem_mm_find(addr);
45c596d835SJens Wiklander }
46c596d835SJens Wiklander
phys_mem_core_alloc(size_t size)47c596d835SJens Wiklander static inline tee_mm_entry_t *phys_mem_core_alloc(size_t size)
48c596d835SJens Wiklander {
49c596d835SJens Wiklander return nex_phys_mem_core_alloc(size);
50c596d835SJens Wiklander }
51c596d835SJens Wiklander
phys_mem_ta_alloc(size_t size)52c596d835SJens Wiklander static inline tee_mm_entry_t *phys_mem_ta_alloc(size_t size)
53c596d835SJens Wiklander {
54c596d835SJens Wiklander return nex_phys_mem_ta_alloc(size);
55c596d835SJens Wiklander }
56c596d835SJens Wiklander
phys_mem_alloc2(paddr_t base,size_t size)57c596d835SJens Wiklander static inline tee_mm_entry_t *phys_mem_alloc2(paddr_t base, size_t size)
58c596d835SJens Wiklander {
59c596d835SJens Wiklander return nex_phys_mem_alloc2(base, size);
60c596d835SJens Wiklander }
61c596d835SJens Wiklander
62c596d835SJens Wiklander #ifdef CFG_WITH_STATS
phys_mem_stats(struct pta_stats_alloc * stats,bool reset)63c596d835SJens Wiklander static inline void phys_mem_stats(struct pta_stats_alloc *stats, bool reset)
64c596d835SJens Wiklander {
65c596d835SJens Wiklander return nex_phys_mem_stats(stats, reset);
66c596d835SJens Wiklander }
67c596d835SJens Wiklander #endif
68c596d835SJens Wiklander #endif
69c596d835SJens Wiklander
70*1baf19deSJens Wiklander /*
71*1baf19deSJens Wiklander * MAF_NEX selects nexus physical memory
72*1baf19deSJens Wiklander * MAF_CORE_MEM selects core physical memory
73*1baf19deSJens Wiklander * flags are passed on underlying implementation, tee_mm_alloc_flags().
74*1baf19deSJens Wiklander */
75*1baf19deSJens Wiklander tee_mm_entry_t *phys_mem_alloc_flags(size_t size, uint32_t flags);
76*1baf19deSJens Wiklander
77c596d835SJens Wiklander #endif /*__MM_PHYS_MEM_H*/
78