1 /*
2  * Copyright (c) 2023 Texas Instruments Incorporated
3  * Copyright (c) 2023 L Lakshmanan
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
8 #ifndef ZEPHYR_INCLUDE_RAT_H_
9 #define ZEPHYR_INCLUDE_RAT_H_
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include <stdint.h>
16 
17 /**
18  * @brief Enum's to represent different possible region size for the address translate module
19  */
20 enum address_trans_region_size {
21 	address_trans_region_size_1 = 0x0,
22 	address_trans_region_size_2,
23 	address_trans_region_size_4,
24 	address_trans_region_size_8,
25 	address_trans_region_size_16,
26 	address_trans_region_size_32,
27 	address_trans_region_size_64,
28 	address_trans_region_size_128,
29 	address_trans_region_size_256,
30 	address_trans_region_size_512,
31 	address_trans_region_size_1K,
32 	address_trans_region_size_2K,
33 	address_trans_region_size_4K,
34 	address_trans_region_size_8K,
35 	address_trans_region_size_16K,
36 	address_trans_region_size_32K,
37 	address_trans_region_size_64K,
38 	address_trans_region_size_128K,
39 	address_trans_region_size_256K,
40 	address_trans_region_size_512K,
41 	address_trans_region_size_1M,
42 	address_trans_region_size_2M,
43 	address_trans_region_size_4M,
44 	address_trans_region_size_8M,
45 	address_trans_region_size_16M,
46 	address_trans_region_size_32M,
47 	address_trans_region_size_64M,
48 	address_trans_region_size_128M,
49 	address_trans_region_size_256M,
50 	address_trans_region_size_512M,
51 	address_trans_region_size_1G,
52 	address_trans_region_size_2G,
53 	address_trans_region_size_4G
54 };
55 
56 /**
57  * @brief Region config structure
58  */
59 struct address_trans_region_config {
60 	uint64_t system_addr;
61 	uint32_t local_addr;
62 	uint32_t size;
63 };
64 
65 void sys_mm_drv_ti_rat_init(struct address_trans_region_config *region_config,
66 			    uint64_t rat_base_addr, uint8_t translate_regions);
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 
72 #endif /* ZEPHYR_INCLUDE_RAT_H_ */
73