1 /*
2  * Copyright 1997-2016 Freescale Semiconductor, Inc.
3  * Copyright 2016-2022 NXP
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 /*!
9  * @file S32K118_MCM.h
10  * @version 1.1
11  * @date 2022-01-24
12  * @brief Peripheral Access Layer for S32K118_MCM
13  *
14  * This file contains register definitions and macros for easy access to their
15  * bit fields.
16  *
17  * This file assumes LITTLE endian system.
18  */
19 
20 /**
21 * @page misra_violations MISRA-C:2012 violations
22 *
23 * @section [global]
24 * Violates MISRA 2012 Advisory Rule 2.3, local typedef not referenced
25 * The SoC header defines typedef for all modules.
26 *
27 * @section [global]
28 * Violates MISRA 2012 Advisory Rule 2.5, local macro not referenced
29 * The SoC header defines macros for all modules and registers.
30 *
31 * @section [global]
32 * Violates MISRA 2012 Advisory Directive 4.9, Function-like macro
33 * These are generated macros used for accessing the bit-fields from registers.
34 *
35 * @section [global]
36 * Violates MISRA 2012 Required Rule 5.1, identifier clash
37 * The supported compilers use more than 31 significant characters for identifiers.
38 *
39 * @section [global]
40 * Violates MISRA 2012 Required Rule 5.2, identifier clash
41 * The supported compilers use more than 31 significant characters for identifiers.
42 *
43 * @section [global]
44 * Violates MISRA 2012 Required Rule 5.4, identifier clash
45 * The supported compilers use more than 31 significant characters for identifiers.
46 *
47 * @section [global]
48 * Violates MISRA 2012 Required Rule 5.5, identifier clash
49 * The supported compilers use more than 31 significant characters for identifiers.
50 *
51 * @section [global]
52 * Violates MISRA 2012 Required Rule 21.1, defined macro '__I' is reserved to the compiler
53 * This type qualifier is needed to ensure correct I/O access and addressing.
54 */
55 
56 /* Prevention from multiple including the same memory map */
57 #if !defined(S32K118_MCM_H_)  /* Check if memory map has not been already included */
58 #define S32K118_MCM_H_
59 
60 #include "S32K118_COMMON.h"
61 
62 /* ----------------------------------------------------------------------------
63    -- MCM Peripheral Access Layer
64    ---------------------------------------------------------------------------- */
65 
66 /*!
67  * @addtogroup MCM_Peripheral_Access_Layer MCM Peripheral Access Layer
68  * @{
69  */
70 
71 /** MCM - Size of Registers Arrays */
72 #define MCM_LMDR_COUNT                            2u
73 
74 /** MCM - Register Layout Typedef */
75 typedef struct {
76   uint8_t RESERVED_0[8];
77   __I  uint16_t PLASC;                             /**< Crossbar Switch (AXBS) Slave Configuration, offset: 0x8 */
78   __I  uint16_t PLAMC;                             /**< Crossbar Switch (AXBS) Master Configuration, offset: 0xA */
79   __IO uint32_t CPCR;                              /**< Core Platform Control Register, offset: 0xC */
80   uint8_t RESERVED_1[32];
81   __IO uint32_t PID;                               /**< Process ID Register, offset: 0x30 */
82   uint8_t RESERVED_2[12];
83   __IO uint32_t CPO;                               /**< Compute Operation Control Register, offset: 0x40 */
84   uint8_t RESERVED_3[956];
85   __IO uint32_t LMDR[MCM_LMDR_COUNT];              /**< Local Memory Descriptor Register, array offset: 0x400, array step: 0x4 */
86   uint8_t RESERVED_4[120];
87        uint32_t LMPECR;                            /**< LMEM Parity and ECC Control Register, offset: 0x480 */
88   uint8_t RESERVED_5[4];
89   __IO uint32_t LMPEIR;                            /**< LMEM Parity and ECC Interrupt Register, offset: 0x488 */
90   uint8_t RESERVED_6[4];
91   __I  uint32_t LMFAR;                             /**< LMEM Fault Address Register, offset: 0x490 */
92   __I  uint32_t LMFATR;                            /**< LMEM Fault Attribute Register, offset: 0x494 */
93   uint8_t RESERVED_7[8];
94   __I  uint32_t LMFDHR;                            /**< LMEM Fault Data High Register, offset: 0x4A0 */
95   __I  uint32_t LMFDLR;                            /**< LMEM Fault Data Low Register, offset: 0x4A4 */
96 } MCM_Type, *MCM_MemMapPtr;
97 
98 /** Number of instances of the MCM module. */
99 #define MCM_INSTANCE_COUNT                       (1u)
100 
101 /* MCM - Peripheral instance base addresses */
102 /** Peripheral MCM base address */
103 #define IP_MCM_BASE                              (0xF0003000u)
104 /** Peripheral MCM base pointer */
105 #define IP_MCM                                   ((MCM_Type *)IP_MCM_BASE)
106 /** Array initializer of MCM peripheral base addresses */
107 #define IP_MCM_BASE_ADDRS                        { IP_MCM_BASE }
108 /** Array initializer of MCM peripheral base pointers */
109 #define IP_MCM_BASE_PTRS                         { IP_MCM }
110 
111 /* ----------------------------------------------------------------------------
112    -- MCM Register Masks
113    ---------------------------------------------------------------------------- */
114 
115 /*!
116  * @addtogroup MCM_Register_Masks MCM Register Masks
117  * @{
118  */
119 
120 /*! @name PLASC - Crossbar Switch (AXBS) Slave Configuration */
121 /*! @{ */
122 
123 #define MCM_PLASC_ASC_MASK                       (0xFFU)
124 #define MCM_PLASC_ASC_SHIFT                      (0U)
125 #define MCM_PLASC_ASC_WIDTH                      (8U)
126 #define MCM_PLASC_ASC(x)                         (((uint16_t)(((uint16_t)(x)) << MCM_PLASC_ASC_SHIFT)) & MCM_PLASC_ASC_MASK)
127 /*! @} */
128 
129 /*! @name PLAMC - Crossbar Switch (AXBS) Master Configuration */
130 /*! @{ */
131 
132 #define MCM_PLAMC_AMC_MASK                       (0xFFU)
133 #define MCM_PLAMC_AMC_SHIFT                      (0U)
134 #define MCM_PLAMC_AMC_WIDTH                      (8U)
135 #define MCM_PLAMC_AMC(x)                         (((uint16_t)(((uint16_t)(x)) << MCM_PLAMC_AMC_SHIFT)) & MCM_PLAMC_AMC_MASK)
136 /*! @} */
137 
138 /*! @name CPCR - Core Platform Control Register */
139 /*! @{ */
140 
141 #define MCM_CPCR_HLT_FSM_ST_MASK                 (0x3U)
142 #define MCM_CPCR_HLT_FSM_ST_SHIFT                (0U)
143 #define MCM_CPCR_HLT_FSM_ST_WIDTH                (2U)
144 #define MCM_CPCR_HLT_FSM_ST(x)                   (((uint32_t)(((uint32_t)(x)) << MCM_CPCR_HLT_FSM_ST_SHIFT)) & MCM_CPCR_HLT_FSM_ST_MASK)
145 
146 #define MCM_CPCR_AXBS_HLT_REQ_MASK               (0x4U)
147 #define MCM_CPCR_AXBS_HLT_REQ_SHIFT              (2U)
148 #define MCM_CPCR_AXBS_HLT_REQ_WIDTH              (1U)
149 #define MCM_CPCR_AXBS_HLT_REQ(x)                 (((uint32_t)(((uint32_t)(x)) << MCM_CPCR_AXBS_HLT_REQ_SHIFT)) & MCM_CPCR_AXBS_HLT_REQ_MASK)
150 
151 #define MCM_CPCR_AXBS_HLTD_MASK                  (0x8U)
152 #define MCM_CPCR_AXBS_HLTD_SHIFT                 (3U)
153 #define MCM_CPCR_AXBS_HLTD_WIDTH                 (1U)
154 #define MCM_CPCR_AXBS_HLTD(x)                    (((uint32_t)(((uint32_t)(x)) << MCM_CPCR_AXBS_HLTD_SHIFT)) & MCM_CPCR_AXBS_HLTD_MASK)
155 
156 #define MCM_CPCR_FMC_PF_IDLE_MASK                (0x10U)
157 #define MCM_CPCR_FMC_PF_IDLE_SHIFT               (4U)
158 #define MCM_CPCR_FMC_PF_IDLE_WIDTH               (1U)
159 #define MCM_CPCR_FMC_PF_IDLE(x)                  (((uint32_t)(((uint32_t)(x)) << MCM_CPCR_FMC_PF_IDLE_SHIFT)) & MCM_CPCR_FMC_PF_IDLE_MASK)
160 
161 #define MCM_CPCR_PBRIDGE_IDLE_MASK               (0x40U)
162 #define MCM_CPCR_PBRIDGE_IDLE_SHIFT              (6U)
163 #define MCM_CPCR_PBRIDGE_IDLE_WIDTH              (1U)
164 #define MCM_CPCR_PBRIDGE_IDLE(x)                 (((uint32_t)(((uint32_t)(x)) << MCM_CPCR_PBRIDGE_IDLE_SHIFT)) & MCM_CPCR_PBRIDGE_IDLE_MASK)
165 
166 #define MCM_CPCR_CBRR_MASK                       (0x200U)
167 #define MCM_CPCR_CBRR_SHIFT                      (9U)
168 #define MCM_CPCR_CBRR_WIDTH                      (1U)
169 #define MCM_CPCR_CBRR(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_CPCR_CBRR_SHIFT)) & MCM_CPCR_CBRR_MASK)
170 /*! @} */
171 
172 /*! @name PID - Process ID Register */
173 /*! @{ */
174 
175 #define MCM_PID_PID_MASK                         (0xFFU)
176 #define MCM_PID_PID_SHIFT                        (0U)
177 #define MCM_PID_PID_WIDTH                        (8U)
178 #define MCM_PID_PID(x)                           (((uint32_t)(((uint32_t)(x)) << MCM_PID_PID_SHIFT)) & MCM_PID_PID_MASK)
179 /*! @} */
180 
181 /*! @name CPO - Compute Operation Control Register */
182 /*! @{ */
183 
184 #define MCM_CPO_CPOREQ_MASK                      (0x1U)
185 #define MCM_CPO_CPOREQ_SHIFT                     (0U)
186 #define MCM_CPO_CPOREQ_WIDTH                     (1U)
187 #define MCM_CPO_CPOREQ(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CPO_CPOREQ_SHIFT)) & MCM_CPO_CPOREQ_MASK)
188 
189 #define MCM_CPO_CPOACK_MASK                      (0x2U)
190 #define MCM_CPO_CPOACK_SHIFT                     (1U)
191 #define MCM_CPO_CPOACK_WIDTH                     (1U)
192 #define MCM_CPO_CPOACK(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CPO_CPOACK_SHIFT)) & MCM_CPO_CPOACK_MASK)
193 
194 #define MCM_CPO_CPOWOI_MASK                      (0x4U)
195 #define MCM_CPO_CPOWOI_SHIFT                     (2U)
196 #define MCM_CPO_CPOWOI_WIDTH                     (1U)
197 #define MCM_CPO_CPOWOI(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CPO_CPOWOI_SHIFT)) & MCM_CPO_CPOWOI_MASK)
198 /*! @} */
199 
200 /*! @name LMDR - Local Memory Descriptor Register */
201 /*! @{ */
202 
203 #define MCM_LMDR_CF0_MASK                        (0xFU)
204 #define MCM_LMDR_CF0_SHIFT                       (0U)
205 #define MCM_LMDR_CF0_WIDTH                       (4U)
206 #define MCM_LMDR_CF0(x)                          (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_CF0_SHIFT)) & MCM_LMDR_CF0_MASK)
207 
208 #define MCM_LMDR_MT_MASK                         (0xE000U)
209 #define MCM_LMDR_MT_SHIFT                        (13U)
210 #define MCM_LMDR_MT_WIDTH                        (3U)
211 #define MCM_LMDR_MT(x)                           (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_MT_SHIFT)) & MCM_LMDR_MT_MASK)
212 
213 #define MCM_LMDR_DPW_MASK                        (0xE0000U)
214 #define MCM_LMDR_DPW_SHIFT                       (17U)
215 #define MCM_LMDR_DPW_WIDTH                       (3U)
216 #define MCM_LMDR_DPW(x)                          (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_DPW_SHIFT)) & MCM_LMDR_DPW_MASK)
217 
218 #define MCM_LMDR_WY_MASK                         (0xF00000U)
219 #define MCM_LMDR_WY_SHIFT                        (20U)
220 #define MCM_LMDR_WY_WIDTH                        (4U)
221 #define MCM_LMDR_WY(x)                           (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_WY_SHIFT)) & MCM_LMDR_WY_MASK)
222 
223 #define MCM_LMDR_LMSZ_MASK                       (0xF000000U)
224 #define MCM_LMDR_LMSZ_SHIFT                      (24U)
225 #define MCM_LMDR_LMSZ_WIDTH                      (4U)
226 #define MCM_LMDR_LMSZ(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_LMSZ_SHIFT)) & MCM_LMDR_LMSZ_MASK)
227 
228 #define MCM_LMDR_LMSZH_MASK                      (0x10000000U)
229 #define MCM_LMDR_LMSZH_SHIFT                     (28U)
230 #define MCM_LMDR_LMSZH_WIDTH                     (1U)
231 #define MCM_LMDR_LMSZH(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_LMSZH_SHIFT)) & MCM_LMDR_LMSZH_MASK)
232 
233 #define MCM_LMDR_V_MASK                          (0x80000000U)
234 #define MCM_LMDR_V_SHIFT                         (31U)
235 #define MCM_LMDR_V_WIDTH                         (1U)
236 #define MCM_LMDR_V(x)                            (((uint32_t)(((uint32_t)(x)) << MCM_LMDR_V_SHIFT)) & MCM_LMDR_V_MASK)
237 /*! @} */
238 
239 /*! @name LMPEIR - LMEM Parity and ECC Interrupt Register */
240 /*! @{ */
241 
242 #define MCM_LMPEIR_ENC_MASK                      (0xFFU)
243 #define MCM_LMPEIR_ENC_SHIFT                     (0U)
244 #define MCM_LMPEIR_ENC_WIDTH                     (8U)
245 #define MCM_LMPEIR_ENC(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_LMPEIR_ENC_SHIFT)) & MCM_LMPEIR_ENC_MASK)
246 
247 #define MCM_LMPEIR_E1B_MASK                      (0xFF00U)
248 #define MCM_LMPEIR_E1B_SHIFT                     (8U)
249 #define MCM_LMPEIR_E1B_WIDTH                     (8U)
250 #define MCM_LMPEIR_E1B(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_LMPEIR_E1B_SHIFT)) & MCM_LMPEIR_E1B_MASK)
251 
252 #define MCM_LMPEIR_PEELOC_MASK                   (0x1F000000U)
253 #define MCM_LMPEIR_PEELOC_SHIFT                  (24U)
254 #define MCM_LMPEIR_PEELOC_WIDTH                  (5U)
255 #define MCM_LMPEIR_PEELOC(x)                     (((uint32_t)(((uint32_t)(x)) << MCM_LMPEIR_PEELOC_SHIFT)) & MCM_LMPEIR_PEELOC_MASK)
256 
257 #define MCM_LMPEIR_V_MASK                        (0x80000000U)
258 #define MCM_LMPEIR_V_SHIFT                       (31U)
259 #define MCM_LMPEIR_V_WIDTH                       (1U)
260 #define MCM_LMPEIR_V(x)                          (((uint32_t)(((uint32_t)(x)) << MCM_LMPEIR_V_SHIFT)) & MCM_LMPEIR_V_MASK)
261 /*! @} */
262 
263 /*! @name LMFAR - LMEM Fault Address Register */
264 /*! @{ */
265 
266 #define MCM_LMFAR_EFADD_MASK                     (0xFFFFFFFFU)
267 #define MCM_LMFAR_EFADD_SHIFT                    (0U)
268 #define MCM_LMFAR_EFADD_WIDTH                    (32U)
269 #define MCM_LMFAR_EFADD(x)                       (((uint32_t)(((uint32_t)(x)) << MCM_LMFAR_EFADD_SHIFT)) & MCM_LMFAR_EFADD_MASK)
270 /*! @} */
271 
272 /*! @name LMFATR - LMEM Fault Attribute Register */
273 /*! @{ */
274 
275 #define MCM_LMFATR_PEFPRT_MASK                   (0xFU)
276 #define MCM_LMFATR_PEFPRT_SHIFT                  (0U)
277 #define MCM_LMFATR_PEFPRT_WIDTH                  (4U)
278 #define MCM_LMFATR_PEFPRT(x)                     (((uint32_t)(((uint32_t)(x)) << MCM_LMFATR_PEFPRT_SHIFT)) & MCM_LMFATR_PEFPRT_MASK)
279 
280 #define MCM_LMFATR_PEFSIZE_MASK                  (0x70U)
281 #define MCM_LMFATR_PEFSIZE_SHIFT                 (4U)
282 #define MCM_LMFATR_PEFSIZE_WIDTH                 (3U)
283 #define MCM_LMFATR_PEFSIZE(x)                    (((uint32_t)(((uint32_t)(x)) << MCM_LMFATR_PEFSIZE_SHIFT)) & MCM_LMFATR_PEFSIZE_MASK)
284 
285 #define MCM_LMFATR_PEFW_MASK                     (0x80U)
286 #define MCM_LMFATR_PEFW_SHIFT                    (7U)
287 #define MCM_LMFATR_PEFW_WIDTH                    (1U)
288 #define MCM_LMFATR_PEFW(x)                       (((uint32_t)(((uint32_t)(x)) << MCM_LMFATR_PEFW_SHIFT)) & MCM_LMFATR_PEFW_MASK)
289 
290 #define MCM_LMFATR_PEFMST_MASK                   (0xFF00U)
291 #define MCM_LMFATR_PEFMST_SHIFT                  (8U)
292 #define MCM_LMFATR_PEFMST_WIDTH                  (8U)
293 #define MCM_LMFATR_PEFMST(x)                     (((uint32_t)(((uint32_t)(x)) << MCM_LMFATR_PEFMST_SHIFT)) & MCM_LMFATR_PEFMST_MASK)
294 
295 #define MCM_LMFATR_OVR_MASK                      (0x80000000U)
296 #define MCM_LMFATR_OVR_SHIFT                     (31U)
297 #define MCM_LMFATR_OVR_WIDTH                     (1U)
298 #define MCM_LMFATR_OVR(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_LMFATR_OVR_SHIFT)) & MCM_LMFATR_OVR_MASK)
299 /*! @} */
300 
301 /*! @name LMFDHR - LMEM Fault Data High Register */
302 /*! @{ */
303 
304 #define MCM_LMFDHR_PEFDH_MASK                    (0xFFFFFFFFU)
305 #define MCM_LMFDHR_PEFDH_SHIFT                   (0U)
306 #define MCM_LMFDHR_PEFDH_WIDTH                   (32U)
307 #define MCM_LMFDHR_PEFDH(x)                      (((uint32_t)(((uint32_t)(x)) << MCM_LMFDHR_PEFDH_SHIFT)) & MCM_LMFDHR_PEFDH_MASK)
308 /*! @} */
309 
310 /*! @name LMFDLR - LMEM Fault Data Low Register */
311 /*! @{ */
312 
313 #define MCM_LMFDLR_PEFDL_MASK                    (0xFFFFFFFFU)
314 #define MCM_LMFDLR_PEFDL_SHIFT                   (0U)
315 #define MCM_LMFDLR_PEFDL_WIDTH                   (32U)
316 #define MCM_LMFDLR_PEFDL(x)                      (((uint32_t)(((uint32_t)(x)) << MCM_LMFDLR_PEFDL_SHIFT)) & MCM_LMFDLR_PEFDL_MASK)
317 /*! @} */
318 
319 /*!
320  * @}
321  */ /* end of group MCM_Register_Masks */
322 
323 /*!
324  * @}
325  */ /* end of group MCM_Peripheral_Access_Layer */
326 
327 #endif  /* #if !defined(S32K118_MCM_H_) */
328