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 TFM_PARTITION_SLIH_TEST 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 TFM_PARTITION_SLIH_TEST 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 TFM_PARTITION_SLIH_TEST 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 /* QSPI IP6514E driver structures */ 410 #ifdef QSPI_IP6514E_S 411 static const struct qspi_ip6514e_dev_cfg_t QSPI_DEV_CFG_S = { 412 .base = MUSCA_B1_QSPI_REG_S_BASE, 413 .addr_mask = (1U << 23) - 1, /* 8MiB minus 1 byte */ 414 }; 415 struct qspi_ip6514e_dev_t QSPI_DEV_S = { 416 &QSPI_DEV_CFG_S 417 }; 418 #endif 419 420 #ifdef QSPI_IP6514E_NS 421 static const struct qspi_ip6514e_dev_cfg_t QSPI_DEV_CFG_NS = { 422 .base = MUSCA_B1_QSPI_REG_NS_BASE, 423 .addr_mask = (1U << 23) - 1, /* 8MiB minus 1 byte */ 424 }; 425 struct qspi_ip6514e_dev_t QSPI_DEV_NS = { 426 &QSPI_DEV_CFG_NS 427 }; 428 #endif 429 430 /* SE MHU */ 431 #ifdef SE_MHU_SENDER_S 432 struct mhu_v2_x_dev_t SE_MHU_SENDER_DEV_S = { 433 .base = MUSCA_B1_SE_MHU_SND_S_BASE, 434 .frame = MHU_V2_X_SENDER_FRAME 435 }; 436 #endif 437 #ifdef SE_MHU_SENDER_NS 438 struct mhu_v2_x_dev_t SE_MHU_SENDER_DEV_NS = { 439 .base = MUSCA_B1_SE_MHU_SND_NS_BASE, 440 .frame = MHU_V2_X_SENDER_FRAME 441 }; 442 #endif 443 444 #ifdef SE_MHU_RECEIVER_S 445 struct mhu_v2_x_dev_t SE_MHU_RECEIVER_DEV_S = { 446 .base = MUSCA_B1_SE_MHU_RCV_S_BASE, 447 .frame = MHU_V2_X_RECEIVER_FRAME 448 }; 449 #endif 450 #ifdef SE_MHU_RECEIVER_NS 451 struct mhu_v2_x_dev_t SE_MHU_RECEIVER_DEV_NS = { 452 .base = MUSCA_B1_SE_MHU_RCV_NS_BASE, 453 .frame = MHU_V2_X_RECEIVER_FRAME 454 }; 455 #endif 456 457 /* ======= External peripheral configuration structure definitions ======= */ 458 459 /* MT25QL Flash memory library structures */ 460 #if (defined(MT25QL_S) && defined(QSPI_IP6514E_S)) 461 struct mt25ql_dev_t MT25QL_DEV_S = { 462 .controller = &QSPI_DEV_S, 463 .direct_access_start_addr = MUSCA_B1_QSPI_FLASH_S_BASE, 464 .baud_rate_div = 4U, 465 /* 466 * 8 MiB flash memory are advertised in the Arm Musca-B1 Test Chip and Board 467 * Technical Reference Manual. The MT25QL Flash device may however contain 468 * more. 469 */ 470 .size = 0x00800000U, /* 8 MiB */ 471 .config_state = { 0 }, 472 }; 473 #endif 474 475 #if (defined(MT25QL_NS) && defined(QSPI_IP6514E_NS)) 476 struct mt25ql_dev_t MT25QL_DEV_NS = { 477 .controller = &QSPI_DEV_NS, 478 .direct_access_start_addr = MUSCA_B1_QSPI_FLASH_NS_BASE, 479 .baud_rate_div = 4U, 480 /* 481 * 8 MiB flash memory are advertised in the Arm Musca-B1 Test Chip and Board 482 * Technical Reference Manual. The MT25QL Flash device may however contain 483 * more. 484 */ 485 .size = 0x00800000U, /* 8 MiB */ 486 .config_state = { 0 }, 487 }; 488 #endif 489