1 /*
2  * Copyright (c) 2017-2021 Arm Limited. All rights reserved.
3  *
4  * Licensed under the Apache License Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing software
11  * distributed under the License is distributed on an "AS IS" BASIS
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /**
18  * \file device_definition.c
19  * \brief This file defines exports the structures based on the peripheral
20  * definitions from device_cfg.h.
21  * This file is meant to be used as a helper for baremetal
22  * applications and/or as an example of how to configure the generic
23  * driver structures.
24  */
25 
26 #include "device_cfg.h"
27 #include "device_definition.h"
28 #include "platform_base_address.h"
29 #include "tfm_plat_defs.h"
30 
31 /* ======= Peripheral configuration structure definitions ======= */
32 /* MUSCA B1 SCC driver structures */
33 #ifdef MUSCA_B1_SCC_S
34 static const struct musca_b1_scc_dev_cfg_t MUSCA_B1_SCC_DEV_CFG_S = {
35     .base = MUSCA_B1_SCC_S_BASE};
36 struct musca_b1_scc_dev_t MUSCA_B1_SCC_DEV_S = {&(MUSCA_B1_SCC_DEV_CFG_S)};
37 #endif
38 
39 /* Arm PPC SSE 200 driver structures */
40 #ifdef AHB_PPC0_S
41 static struct ppc_sse200_dev_cfg_t AHB_PPC0_DEV_CFG_S = {
42     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
43     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
44 static struct ppc_sse200_dev_data_t AHB_PPC0_DEV_DATA_S = {
45     .p_ns_ppc  = 0,
46     .p_sp_ppc  = 0,
47     .p_nsp_ppc = 0,
48     .int_bit_mask = 0,
49     .state = 0 };
50 struct ppc_sse200_dev_t AHB_PPC0_DEV_S = {
51     &AHB_PPC0_DEV_CFG_S, &AHB_PPC0_DEV_DATA_S };
52 #endif
53 
54 #ifdef AHB_PPCEXP0_S
55 static struct ppc_sse200_dev_cfg_t AHB_PPCEXP0_DEV_CFG_S = {
56     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
57     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
58 static struct ppc_sse200_dev_data_t AHB_PPCEXP0_DEV_DATA_S = {
59     .p_ns_ppc  = 0,
60     .p_sp_ppc  = 0,
61     .p_nsp_ppc = 0,
62     .int_bit_mask = 0,
63     .state = 0 };
64 struct ppc_sse200_dev_t AHB_PPCEXP0_DEV_S = {
65     &AHB_PPCEXP0_DEV_CFG_S, &AHB_PPCEXP0_DEV_DATA_S };
66 #endif
67 
68 #ifdef AHB_PPCEXP1_S
69 static struct ppc_sse200_dev_cfg_t AHB_PPCEXP1_DEV_CFG_S = {
70     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
71     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
72 static struct ppc_sse200_dev_data_t AHB_PPCEXP1_DEV_DATA_S = {
73     .p_ns_ppc  = 0,
74     .p_sp_ppc  = 0,
75     .p_nsp_ppc = 0,
76     .int_bit_mask = 0,
77     .state = 0 };
78 struct ppc_sse200_dev_t AHB_PPCEXP1_DEV_S = {
79     &AHB_PPCEXP1_DEV_CFG_S, &AHB_PPCEXP1_DEV_DATA_S };
80 #endif
81 
82 #ifdef AHB_PPCEXP2_S
83 static struct ppc_sse200_dev_cfg_t AHB_PPCEXP2_DEV_CFG_S = {
84     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
85     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
86 static struct ppc_sse200_dev_data_t AHB_PPCEXP2_DEV_DATA_S = {
87     .p_ns_ppc  = 0,
88     .p_sp_ppc  = 0,
89     .p_nsp_ppc = 0,
90     .int_bit_mask = 0,
91     .state = 0 };
92 struct ppc_sse200_dev_t AHB_PPCEXP2_DEV_S = {
93     &AHB_PPCEXP2_DEV_CFG_S, &AHB_PPCEXP2_DEV_DATA_S };
94 #endif
95 
96 #ifdef AHB_PPCEXP3_S
97 static struct ppc_sse200_dev_cfg_t AHB_PPCEXP3_DEV_CFG_S = {
98     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
99     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
100 static struct ppc_sse200_dev_data_t AHB_PPCEXP3_DEV_DATA_S = {
101     .p_ns_ppc  = 0,
102     .p_sp_ppc  = 0,
103     .p_nsp_ppc = 0,
104     .int_bit_mask = 0,
105     .state = 0 };
106 struct ppc_sse200_dev_t AHB_PPCEXP3_DEV_S = {
107     &AHB_PPCEXP3_DEV_CFG_S, &AHB_PPCEXP3_DEV_DATA_S };
108 #endif
109 
110 #ifdef APB_PPC0_S
111 static struct ppc_sse200_dev_cfg_t APB_PPC0_DEV_CFG_S = {
112     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
113     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
114 static struct ppc_sse200_dev_data_t APB_PPC0_DEV_DATA_S = {
115     .p_ns_ppc  = 0,
116     .p_sp_ppc  = 0,
117     .p_nsp_ppc = 0,
118     .int_bit_mask = 0,
119     .state = 0 };
120 struct ppc_sse200_dev_t APB_PPC0_DEV_S = {
121     &APB_PPC0_DEV_CFG_S, &APB_PPC0_DEV_DATA_S };
122 #endif
123 
124 #ifdef APB_PPC1_S
125 static struct ppc_sse200_dev_cfg_t APB_PPC1_DEV_CFG_S = {
126     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
127     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
128 static struct ppc_sse200_dev_data_t APB_PPC1_DEV_DATA_S = {
129     .p_ns_ppc  = 0,
130     .p_sp_ppc  = 0,
131     .p_nsp_ppc = 0,
132     .int_bit_mask = 0,
133     .state = 0 };
134 struct ppc_sse200_dev_t APB_PPC1_DEV_S = {
135     &APB_PPC1_DEV_CFG_S, &APB_PPC1_DEV_DATA_S};
136 #endif
137 
138 #ifdef APB_PPCEXP0_S
139 static struct ppc_sse200_dev_cfg_t APB_PPCEXP0_DEV_CFG_S = {
140     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
141     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
142 static struct ppc_sse200_dev_data_t APB_PPCEXP0_DEV_DATA_S = {
143     .p_ns_ppc  = 0,
144     .p_sp_ppc  = 0,
145     .p_nsp_ppc = 0,
146     .int_bit_mask = 0,
147     .state = 0 };
148 struct ppc_sse200_dev_t APB_PPCEXP0_DEV_S = {
149     &APB_PPCEXP0_DEV_CFG_S, &APB_PPCEXP0_DEV_DATA_S };
150 #endif
151 
152 #ifdef APB_PPCEXP1_S
153 static struct ppc_sse200_dev_cfg_t APB_PPCEXP1_DEV_CFG = {
154     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
155     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
156 static struct ppc_sse200_dev_data_t APB_PPCEXP1_DEV_DATA_S = {
157     .p_ns_ppc  = 0,
158     .p_sp_ppc  = 0,
159     .p_nsp_ppc = 0,
160     .int_bit_mask = 0,
161     .state = 0 };
162 struct ppc_sse200_dev_t APB_PPCEXP1_DEV_S = {
163     &APB_PPCEXP1_DEV_CFG, &APB_PPCEXP1_DEV_DATA_S };
164 #endif
165 
166 #ifdef APB_PPCEXP2_S
167 static struct ppc_sse200_dev_cfg_t APB_PPCEXP2_DEV_CFG = {
168     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
169     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
170 static struct ppc_sse200_dev_data_t APB_PPCEXP2_DEV_DATA_S = {
171     .p_ns_ppc  = 0,
172     .p_sp_ppc  = 0,
173     .p_nsp_ppc = 0,
174     .int_bit_mask = 0,
175     .state = 0 };
176 struct ppc_sse200_dev_t APB_PPCEXP2_DEV_S = {
177     &APB_PPCEXP2_DEV_CFG, &APB_PPCEXP2_DEV_DATA_S };
178 #endif
179 
180 #ifdef APB_PPCEXP3_S
181 static struct ppc_sse200_dev_cfg_t APB_PPCEXP3_DEV_CFG = {
182     .spctrl_base  = MUSCA_B1_SPCTRL_S_BASE,
183     .nspctrl_base = MUSCA_B1_NSPCTRL_NS_BASE };
184 static struct ppc_sse200_dev_data_t APB_PPCEXP3_DEV_DATA_S = {
185     .p_ns_ppc  = 0,
186     .p_sp_ppc  = 0,
187     .p_nsp_ppc = 0,
188     .int_bit_mask = 0,
189     .state = 0 };
190 struct ppc_sse200_dev_t APB_PPCEXP3_DEV_S = {
191     &APB_PPCEXP3_DEV_CFG, &APB_PPCEXP3_DEV_DATA_S };
192 #endif
193 
194 /* Arm MPC SIE 200 driver structures */
195 #ifdef MPC_ISRAM0_S
196 static const struct mpc_sie200_dev_cfg_t MPC_ISRAM0_DEV_CFG_S = {
197     .base = MUSCA_B1_MPC_SRAM0_S_BASE};
198 static struct mpc_sie200_dev_data_t MPC_ISRAM0_DEV_DATA_S = {
199     .range_list = 0,
200     .nbr_of_ranges = 0,
201     .state = 0,
202     .reserved = 0};
203 struct mpc_sie200_dev_t MPC_ISRAM0_DEV_S = {
204     &(MPC_ISRAM0_DEV_CFG_S),
205     &(MPC_ISRAM0_DEV_DATA_S)};
206 #endif
207 
208 #ifdef MPC_ISRAM1_S
209 static const struct mpc_sie200_dev_cfg_t MPC_ISRAM1_DEV_CFG_S = {
210     .base = MUSCA_B1_MPC_SRAM1_S_BASE};
211 static struct mpc_sie200_dev_data_t MPC_ISRAM1_DEV_DATA_S = {
212     .range_list = 0,
213     .nbr_of_ranges = 0,
214     .state = 0,
215     .reserved = 0};
216 struct mpc_sie200_dev_t MPC_ISRAM1_DEV_S = {
217     &(MPC_ISRAM1_DEV_CFG_S),
218     &(MPC_ISRAM1_DEV_DATA_S)};
219 #endif
220 
221 #ifdef MPC_ISRAM2_S
222 static const struct mpc_sie200_dev_cfg_t MPC_ISRAM2_DEV_CFG_S = {
223     .base = MUSCA_B1_MPC_SRAM2_S_BASE};
224 static struct mpc_sie200_dev_data_t MPC_ISRAM2_DEV_DATA_S = {
225     .range_list = 0,
226     .nbr_of_ranges = 0,
227     .state = 0,
228     .reserved = 0};
229 struct mpc_sie200_dev_t MPC_ISRAM2_DEV_S = {
230     &(MPC_ISRAM2_DEV_CFG_S),
231     &(MPC_ISRAM2_DEV_DATA_S)};
232 #endif
233 
234 #ifdef MPC_ISRAM3_S
235 static const struct mpc_sie200_dev_cfg_t MPC_ISRAM3_DEV_CFG_S = {
236     .base = MUSCA_B1_MPC_SRAM3_S_BASE};
237 static struct mpc_sie200_dev_data_t MPC_ISRAM3_DEV_DATA_S = {
238     .range_list = 0,
239     .nbr_of_ranges = 0,
240     .state = 0,
241     .reserved = 0};
242 struct mpc_sie200_dev_t MPC_ISRAM3_DEV_S = {
243     &(MPC_ISRAM3_DEV_CFG_S),
244     &(MPC_ISRAM3_DEV_DATA_S)};
245 #endif
246 
247 #ifdef MPC_CODE_SRAM_S
248 static const struct mpc_sie200_dev_cfg_t MPC_CODE_SRAM_DEV_CFG_S = {
249     .base = MUSCA_B1_CODE_SRAM_MPC_S_BASE};
250 static struct mpc_sie200_dev_data_t MPC_CODE_SRAM_DEV_DATA_S = {
251     .range_list = 0,
252     .nbr_of_ranges = 0,
253     .state = 0,
254     .reserved = 0};
255 struct mpc_sie200_dev_t MPC_CODE_SRAM_DEV_S = {
256     &(MPC_CODE_SRAM_DEV_CFG_S),
257     &(MPC_CODE_SRAM_DEV_DATA_S)};
258 #endif
259 
260 #ifdef MPC_QSPI_S
261 static const struct mpc_sie200_dev_cfg_t MPC_QSPI_DEV_CFG_S = {
262     .base = MUSCA_B1_QSPI_MPC_S_BASE};
263 static struct mpc_sie200_dev_data_t MPC_QSPI_DEV_DATA_S = {
264     .range_list = 0,
265     .nbr_of_ranges = 0,
266     .state = 0,
267     .reserved = 0};
268 struct mpc_sie200_dev_t MPC_QSPI_DEV_S = {
269     &(MPC_QSPI_DEV_CFG_S),
270     &(MPC_QSPI_DEV_DATA_S)};
271 #endif
272 
273 #ifdef MPC_EFLASH0_S
274 static const struct mpc_sie200_dev_cfg_t MPC_EFLASH0_DEV_CFG_S = {
275     .base = MUSCA_B1_EFLASH0_MPC_S_BASE};
276 static struct mpc_sie200_dev_data_t MPC_EFLASH0_DEV_DATA_S = {
277     .range_list = 0,
278     .nbr_of_ranges = 0,
279     .state = 0,
280     .reserved = 0};
281 struct mpc_sie200_dev_t MPC_EFLASH0_DEV_S = {
282     &(MPC_EFLASH0_DEV_CFG_S),
283     &(MPC_EFLASH0_DEV_DATA_S)};
284 #endif
285 
286 #ifdef MPC_EFLASH1_S
287 static const struct mpc_sie200_dev_cfg_t MPC_EFLASH1_DEV_CFG_S = {
288     .base = MUSCA_B1_EFLASH1_MPC_S_BASE};
289 static struct mpc_sie200_dev_data_t MPC_EFLASH1_DEV_DATA_S = {
290     .range_list = 0,
291     .nbr_of_ranges = 0,
292     .state = 0,
293     .reserved = 0};
294 struct mpc_sie200_dev_t MPC_EFLASH1_DEV_S = {
295     &(MPC_EFLASH1_DEV_CFG_S),
296     &(MPC_EFLASH1_DEV_DATA_S)};
297 #endif
298 
299 /** CMSDK GPIO driver structures */
300 #ifdef GPIO0_CMSDK_S
301 static const struct gpio_cmsdk_dev_cfg_t GPIO0_CMSDK_DEV_CFG_S = {
302     .base = MUSCA_B1_GPIO_S_BASE};
303 struct gpio_cmsdk_dev_t GPIO0_CMSDK_DEV_S = {&(GPIO0_CMSDK_DEV_CFG_S)};
304 #endif
305 
306 /** Arm UART PL011 driver structures */
307 #ifdef UART0_PL011_S
308 static const struct uart_pl011_dev_cfg_t UART0_PL011_DEV_CFG_S = {
309     .base = MUSCA_B1_UART0_S_BASE,
310     .def_baudrate = DEFAULT_UART_BAUDRATE,
311     .def_wlen = UART_PL011_WLEN_8,
312     .def_parity = UART_PL011_PARITY_DISABLED,
313     .def_stopbit = UART_PL011_STOPBIT_1};
314 static struct uart_pl011_dev_data_t UART0_PL011_DEV_DATA_S = {
315     .state = UART_PL011_UNINITIALIZED,
316     .uart_clk = 0,
317     .baudrate = 0};
318 struct uart_pl011_dev_t UART0_PL011_DEV_S = {&(UART0_PL011_DEV_CFG_S),
319                                              &(UART0_PL011_DEV_DATA_S)};
320 #endif
321 #ifdef UART0_PL011_NS
322 static const struct uart_pl011_dev_cfg_t UART0_PL011_DEV_CFG_NS = {
323     .base = MUSCA_B1_UART0_NS_BASE,
324     .def_baudrate = DEFAULT_UART_BAUDRATE,
325     .def_wlen = UART_PL011_WLEN_8,
326     .def_parity = UART_PL011_PARITY_DISABLED,
327     .def_stopbit = UART_PL011_STOPBIT_1};
328 static struct uart_pl011_dev_data_t UART0_PL011_DEV_DATA_NS = {
329     .state = UART_PL011_UNINITIALIZED,
330     .uart_clk = 0,
331     .baudrate = 0};
332 struct uart_pl011_dev_t UART0_PL011_DEV_NS = {&(UART0_PL011_DEV_CFG_NS),
333                                               &(UART0_PL011_DEV_DATA_NS)};
334 #endif
335 
336 #ifdef UART1_PL011_S
337 static const struct uart_pl011_dev_cfg_t UART1_PL011_DEV_CFG_S = {
338     .base = MUSCA_B1_UART1_S_BASE,
339     .def_baudrate = DEFAULT_UART_BAUDRATE,
340     .def_wlen = UART_PL011_WLEN_8,
341     .def_parity = UART_PL011_PARITY_DISABLED,
342     .def_stopbit = UART_PL011_STOPBIT_1};
343 static struct uart_pl011_dev_data_t UART1_PL011_DEV_DATA_S = {
344     .state = UART_PL011_UNINITIALIZED,
345     .uart_clk = 0,
346     .baudrate = 0};
347 struct uart_pl011_dev_t UART1_PL011_DEV_S = {&(UART1_PL011_DEV_CFG_S),
348                                              &(UART1_PL011_DEV_DATA_S)};
349 #endif
350 #ifdef UART1_PL011_NS
351 static const struct uart_pl011_dev_cfg_t UART1_PL011_DEV_CFG_NS = {
352     .base = MUSCA_B1_UART1_NS_BASE,
353     .def_baudrate = DEFAULT_UART_BAUDRATE,
354     .def_wlen = UART_PL011_WLEN_8,
355     .def_parity = UART_PL011_PARITY_DISABLED,
356     .def_stopbit = UART_PL011_STOPBIT_1};
357 static struct uart_pl011_dev_data_t UART1_PL011_DEV_DATA_NS = {
358     .state = UART_PL011_UNINITIALIZED,
359     .uart_clk = 0,
360     .baudrate = 0};
361 struct uart_pl011_dev_t UART1_PL011_DEV_NS = {&(UART1_PL011_DEV_CFG_NS),
362                                               &(UART1_PL011_DEV_DATA_NS)};
363 #endif
364 
365 /** CMSDK Timers driver structures */
366 #ifdef CMSDK_TIMER0_S
367 static const struct timer_cmsdk_dev_cfg_t CMSDK_TIMER0_DEV_CFG_S
368 #ifdef TEST_NS_SLIH_IRQ
369     TFM_LINK_SET_RO_IN_PARTITION_SECTION("TFM_SP_SLIH_TEST", "APP-ROT")
370 #endif
371     = {.base = MUSCA_B1_CMSDK_TIMER0_S_BASE};
372 static struct timer_cmsdk_dev_data_t CMSDK_TIMER0_DEV_DATA_S
373 #ifdef TEST_NS_SLIH_IRQ
374     TFM_LINK_SET_RW_IN_PARTITION_SECTION("TFM_SP_SLIH_TEST", "APP-ROT")
375 #endif
376     = {.is_initialized = 0};
377 struct timer_cmsdk_dev_t CMSDK_TIMER0_DEV_S
378 #ifdef TEST_NS_SLIH_IRQ
379     TFM_LINK_SET_RW_IN_PARTITION_SECTION("TFM_SP_SLIH_TEST", "APP-ROT")
380 #endif
381     = {&(CMSDK_TIMER0_DEV_CFG_S), &(CMSDK_TIMER0_DEV_DATA_S)};
382 #endif
383 #ifdef CMSDK_TIMER0_NS
384 static const struct timer_cmsdk_dev_cfg_t CMSDK_TIMER0_DEV_CFG_NS = {
385     .base = MUSCA_B1_CMSDK_TIMER0_NS_BASE};
386 static struct timer_cmsdk_dev_data_t CMSDK_TIMER0_DEV_DATA_NS = {
387     .is_initialized = 0};
388 struct timer_cmsdk_dev_t CMSDK_TIMER0_DEV_NS = {&(CMSDK_TIMER0_DEV_CFG_NS),
389                                                 &(CMSDK_TIMER0_DEV_DATA_NS)};
390 #endif
391 
392 #ifdef CMSDK_TIMER1_S
393 static const struct timer_cmsdk_dev_cfg_t CMSDK_TIMER1_DEV_CFG_S = {
394     .base = MUSCA_B1_CMSDK_TIMER1_S_BASE};
395 static struct timer_cmsdk_dev_data_t CMSDK_TIMER1_DEV_DATA_S = {
396     .is_initialized = 0};
397 struct timer_cmsdk_dev_t CMSDK_TIMER1_DEV_S = {&(CMSDK_TIMER1_DEV_CFG_S),
398                                                &(CMSDK_TIMER1_DEV_DATA_S)};
399 #endif
400 #ifdef CMSDK_TIMER1_NS
401 static const struct timer_cmsdk_dev_cfg_t CMSDK_TIMER1_DEV_CFG_NS = {
402     .base = MUSCA_B1_CMSDK_TIMER1_NS_BASE};
403 static struct timer_cmsdk_dev_data_t CMSDK_TIMER1_DEV_DATA_NS = {
404     .is_initialized = 0};
405 struct timer_cmsdk_dev_t CMSDK_TIMER1_DEV_NS = {&(CMSDK_TIMER1_DEV_CFG_NS),
406                                                 &(CMSDK_TIMER1_DEV_DATA_NS)};
407 #endif
408 
409 /** GFC-100 eflash driver structures */
410 #ifdef GFC100_EFLASH0_S
411 static const struct gfc100_eflash_dev_cfg_t GFC100_EFLASH0_CFG_S = {
412     .base = MUSCA_B1_EFLASH0_REG_MAP_S_BASE};
413 static struct gfc100_eflash_dev_data_t GFC100_EFLASH0_DATA_S = {
414     .is_initialized = false,
415     .flash_size = 0};
416 struct gfc100_eflash_dev_t GFC100_EFLASH0_DEV_S = {&(GFC100_EFLASH0_CFG_S),
417                                                    &(GFC100_EFLASH0_DATA_S)};
418 #endif
419 
420 #ifdef GFC100_EFLASH1_S
421 static const struct gfc100_eflash_dev_cfg_t GFC100_EFLASH1_CFG_S = {
422     .base = MUSCA_B1_EFLASH1_REG_MAP_S_BASE};
423 static struct gfc100_eflash_dev_data_t GFC100_EFLASH1_DATA_S = {
424     .is_initialized = false,
425     .flash_size = 0};
426 struct gfc100_eflash_dev_t GFC100_EFLASH1_DEV_S = {&(GFC100_EFLASH1_CFG_S),
427                                                    &(GFC100_EFLASH1_DATA_S)};
428 #endif
429 
430 /* QSPI IP6514E driver structures */
431 #ifdef QSPI_IP6514E_S
432 static const struct qspi_ip6514e_dev_cfg_t QSPI_DEV_CFG_S = {
433     .base = MUSCA_B1_QSPI_REG_S_BASE,
434     .addr_mask = (1U << 23) - 1, /* 8MiB minus 1 byte */
435 };
436 struct qspi_ip6514e_dev_t QSPI_DEV_S = {
437     &QSPI_DEV_CFG_S
438 };
439 #endif
440 
441 #ifdef QSPI_IP6514E_NS
442 static const struct qspi_ip6514e_dev_cfg_t QSPI_DEV_CFG_NS = {
443     .base = MUSCA_B1_QSPI_REG_NS_BASE,
444     .addr_mask = (1U << 23) - 1, /* 8MiB minus 1 byte */
445 };
446 struct qspi_ip6514e_dev_t QSPI_DEV_NS = {
447     &QSPI_DEV_CFG_NS
448 };
449 #endif
450 
451 /* SE MHU */
452 #ifdef SE_MHU_SENDER_S
453 struct mhu_v2_x_dev_t SE_MHU_SENDER_DEV_S = {
454         .base = MUSCA_B1_SE_MHU_SND_S_BASE,
455         .frame = MHU_V2_X_SENDER_FRAME
456 };
457 #endif
458 #ifdef SE_MHU_SENDER_NS
459 struct mhu_v2_x_dev_t SE_MHU_SENDER_DEV_NS = {
460         .base = MUSCA_B1_SE_MHU_SND_NS_BASE,
461         .frame = MHU_V2_X_SENDER_FRAME
462 };
463 #endif
464 
465 #ifdef SE_MHU_RECEIVER_S
466 struct mhu_v2_x_dev_t SE_MHU_RECEIVER_DEV_S = {
467         .base = MUSCA_B1_SE_MHU_RCV_S_BASE,
468         .frame = MHU_V2_X_RECEIVER_FRAME
469 };
470 #endif
471 #ifdef SE_MHU_RECEIVER_NS
472 struct mhu_v2_x_dev_t SE_MHU_RECEIVER_DEV_NS = {
473         .base = MUSCA_B1_SE_MHU_RCV_NS_BASE,
474         .frame = MHU_V2_X_RECEIVER_FRAME
475 };
476 #endif
477 
478 /* ======= External peripheral configuration structure definitions ======= */
479 
480 /* MT25QL Flash memory library structures */
481 #if (defined(MT25QL_S) && defined(QSPI_IP6514E_S))
482 struct mt25ql_dev_t MT25QL_DEV_S = {
483     .controller = &QSPI_DEV_S,
484     .direct_access_start_addr = MUSCA_B1_QSPI_FLASH_S_BASE,
485     .baud_rate_div = 4U,
486     /*
487      * 8 MiB flash memory are advertised in the Arm Musca-B1 Test Chip and Board
488      * Technical Reference Manual. The MT25QL Flash device may however contain
489      * more.
490      */
491     .size = 0x00800000U, /* 8 MiB */
492     .config_state = { 0 },
493 };
494 #endif
495 
496 #if (defined(MT25QL_NS) && defined(QSPI_IP6514E_NS))
497 struct mt25ql_dev_t MT25QL_DEV_NS = {
498     .controller = &QSPI_DEV_NS,
499     .direct_access_start_addr = MUSCA_B1_QSPI_FLASH_NS_BASE,
500     .baud_rate_div = 4U,
501     /*
502      * 8 MiB flash memory are advertised in the Arm Musca-B1 Test Chip and Board
503      * Technical Reference Manual. The MT25QL Flash device may however contain
504      * more.
505      */
506     .size = 0x00800000U, /* 8 MiB */
507     .config_state = { 0 },
508 };
509 #endif
510