1 /*
2  * Copyright (c) 2023-2024, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef __NI_TOWER_APU_REG_H__
9 #define __NI_TOWER_APU_REG_H__
10 
11 #include "tfm_hal_device_header.h"
12 
13 #include <stdint.h>
14 
15 #define NI_TOWER_MAX_APU_REGIONS    32
16 
17 /**
18  * \brief NI-Tower APU register map
19  */
20 __PACKED_STRUCT ni_tower_apu_reg_map {
21     __PACKED_STRUCT {
22         __IOM uint32_t prbar_low;
23         __IOM uint32_t prbar_high;
24         __IOM uint32_t prlar_low;
25         __IOM uint32_t prlar_high;
26         __IOM uint32_t prid_low;
27         __IOM uint32_t prid_high;
28         const uint32_t reserved_2[2];
29     } region[NI_TOWER_MAX_APU_REGIONS];
30     const uint32_t reserved_3[766];
31     __IOM uint32_t apu_ctlr;
32     __IM  uint32_t apu_iidr;
33 };
34 
35 /*  Field definitions for prbar_low register */
36 #define NI_TOWER_APU_REGION_ENABLE_POS         (0U)
37 #define NI_TOWER_APU_REGION_ENABLE_MSK         (0x1UL << NI_TOWER_APU_REGION_ENABLE_POS)
38 #define NI_TOWER_APU_REGION_ENABLE             NI_TOWER_APU_REGION_ENABLE_MSK
39 #define NI_TOWER_APU_BR_POS                    (1U)
40 #define NI_TOWER_APU_BR_MSK                    (0x1UL << NI_TOWER_APU_BR_POS)
41 #define NI_TOWER_APU_BR                        NI_TOWER_APU_BR_MSK
42 #define NI_TOWER_APU_LOCK_POS                  (2U)
43 #define NI_TOWER_APU_LOCK_MSK                  (0x1UL << NI_TOWER_APU_LOCK_POS)
44 #define NI_TOWER_APU_LOCK                      NI_TOWER_APU_LOCK_MSK
45 
46 /*  Field definitions for prlar_low register */
47 #define NI_TOWER_APU_ID_VALID_POS              (0U)
48 #define NI_TOWER_APU_ID_VALID_MSK              (0xFUL << NI_TOWER_APU_ID_VALID_POS)
49 #define NI_TOWER_APU_ID_VALID                  NI_TOWER_APU_ID_VALID_MSK
50 
51 /*  Field definitions for prid_low register */
52 #define NI_TOWER_APU_ID_0_POS                  (0U)
53 #define NI_TOWER_APU_ID_0_MSK                  (0xFFUL << NI_TOWER_APU_ID_0_POS)
54 #define NI_TOWER_APU_ID_0                      NI_TOWER_APU_ID_0_MSK
55 #define NI_TOWER_APU_PERM_0_POS                (8U)
56 #define NI_TOWER_APU_PERM_0_MSK                (0xFFUL << NI_TOWER_APU_PERM_0_POS)
57 #define NI_TOWER_APU_PERM_0                    NI_TOWER_APU_PERM_0_MSK
58 #define NI_TOWER_APU_ID_1_POS                  (16U)
59 #define NI_TOWER_APU_ID_1_MSK                  (0xFFUL << NI_TOWER_APU_ID_1_POS)
60 #define NI_TOWER_APU_ID_1                      NI_TOWER_APU_ID_1_MSK
61 #define NI_TOWER_APU_PERM_1_POS                (24U)
62 #define NI_TOWER_APU_PERM_1_MSK                (0xFFUL << NI_TOWER_APU_PERM_1_POS)
63 #define NI_TOWER_APU_PERM_1                    NI_TOWER_APU_PERM_1_MSK
64 
65 /*  Field definitions for prid_high register */
66 #define NI_TOWER_APU_ID_2_POS                  (0U)
67 #define NI_TOWER_APU_ID_2_MSK                  (0xFFUL << NI_TOWER_APU_ID_2_POS)
68 #define NI_TOWER_APU_ID_2                      NI_TOWER_APU_ID_2_MSK
69 #define NI_TOWER_APU_PERM_2_POS                (8U)
70 #define NI_TOWER_APU_PERM_2_MSK                (0xFFUL << NI_TOWER_APU_PERM_2_POS)
71 #define NI_TOWER_APU_PERM_2                    NI_TOWER_APU_PERM_2_MSK
72 #define NI_TOWER_APU_ID_3_POS                  (16U)
73 #define NI_TOWER_APU_ID_3_MSK                  (0xFFUL << NI_TOWER_APU_ID_3_POS)
74 #define NI_TOWER_APU_ID_3                      NI_TOWER_APU_ID_3_MSK
75 #define NI_TOWER_APU_PERM_3_POS                (24U)
76 #define NI_TOWER_APU_PERM_3_MSK                (0xFFUL << NI_TOWER_APU_PERM_3_POS)
77 #define NI_TOWER_APU_PERM_3                    NI_TOWER_APU_PERM_3_MSK
78 
79 /*  Field definitions for apu_ctlr register */
80 #define NI_TOWER_APU_CTLR_APU_ENABLE_POS       (0U)
81 #define NI_TOWER_APU_CTLR_APU_ENABLE_MSK       (0x1UL << NI_TOWER_APU_CTLR_APU_ENABLE_POS)
82 #define NI_TOWER_APU_CTLR_APU_ENABLE           NI_TOWER_APU_CTLR_APU_ENABLE_MSK
83 #define NI_TOWER_APU_CTLR_FMU_ERROR_EN_POS     (1U)
84 #define NI_TOWER_APU_CTLR_FMU_ERROR_EN_MSK     (0x1UL << NI_TOWER_APU_CTLR_FMU_ERROR_EN_POS)
85 #define NI_TOWER_APU_CTLR_FMU_ERROR_EN         NI_TOWER_APU_CTLR_FMU_ERROR_EN_MSK
86 #define NI_TOWER_APU_CTLR_SYNC_ERROR_EN_POS    (2U)
87 #define NI_TOWER_APU_CTLR_SYNC_ERROR_EN_MSK    (0x1UL << NI_TOWER_APU_CTLR_SYNC_ERROR_EN_POS)
88 #define NI_TOWER_APU_CTLR_SYNC_ERROR_EN        NI_TOWER_APU_CTLR_SYNC_ERROR_EN_MSK
89 #define NI_TOWER_APU_CTLR_APU_REGION_4K_POS    (3U)
90 #define NI_TOWER_APU_CTLR_APU_REGION_4K_MSK    (0x1UL << NI_TOWER_APU_CTLR_APU_REGION_4K_POS)
91 #define NI_TOWER_APU_CTLR_APU_REGION_4K        NI_TOWER_APU_CTLR_APU_REGION_4K_MSK
92 
93 #endif /* __NI_TOWER_APU_REG_H__ */
94