1 /* 2 * Copyright (c) 2019-2024 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.h 19 * \brief The structure definitions in this file are exported based on the 20 * peripheral 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 #ifndef __DEVICE_DEFINITION_H__ 27 #define __DEVICE_DEFINITION_H__ 28 29 #include "device_cfg.h" 30 #include "host_device_definition.h" 31 #ifdef RSE_HAS_EXPANSION_PERIPHERALS 32 #include "rse_expansion_device_definition.h" 33 #endif /* RSE_HAS_EXPANSION_PERIPHERALS */ 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 /* ======= Defines peripheral configuration structures ======= */ 40 /* ATU driver structures */ 41 #ifdef ATU_S 42 #include "atu_rse_drv.h" 43 extern struct atu_dev_t ATU_DEV_S; 44 #endif 45 46 /* SIC driver structures */ 47 #ifdef SIC_S 48 #include "sic_drv.h" 49 extern struct sic_dev_t SIC_DEV_S; 50 #endif 51 52 /* TRAM driver structures */ 53 #ifdef TRAM_S 54 #include "tram_drv.h" 55 extern struct tram_dev_t TRAM_DEV_S; 56 #endif 57 58 /* UART CMSDK driver structures */ 59 #ifdef UART0_CMSDK_S 60 #include "uart_cmsdk_drv.h" 61 extern struct uart_cmsdk_dev_t UART0_CMSDK_DEV_S; 62 #endif 63 #ifdef UART0_CMSDK_NS 64 #include "uart_cmsdk_drv.h" 65 extern struct uart_cmsdk_dev_t UART0_CMSDK_DEV_NS; 66 #endif 67 68 /* ARM PPC driver structures */ 69 #ifdef PPC_RSE_MAIN0_S 70 #include "ppc_rse_drv.h" 71 extern struct ppc_rse_dev_t PPC_RSE_MAIN0_DEV_S; 72 #endif 73 74 #ifdef PPC_RSE_MAIN_EXP0_S 75 #include "ppc_rse_drv.h" 76 extern struct ppc_rse_dev_t PPC_RSE_MAIN_EXP0_DEV_S; 77 #endif 78 79 #ifdef PPC_RSE_MAIN_EXP1_S 80 #include "ppc_rse_drv.h" 81 extern struct ppc_rse_dev_t PPC_RSE_MAIN_EXP1_DEV_S; 82 #endif 83 84 #ifdef PPC_RSE_MAIN_EXP2_S 85 #include "ppc_rse_drv.h" 86 extern struct ppc_rse_dev_t PPC_RSE_MAIN_EXP2_DEV_S; 87 #endif 88 89 #ifdef PPC_RSE_MAIN_EXP3_S 90 #include "ppc_rse_drv.h" 91 extern struct ppc_rse_dev_t PPC_RSE_MAIN_EXP3_DEV_S; 92 #endif 93 94 #ifdef PPC_RSE_PERIPH0_S 95 #include "ppc_rse_drv.h" 96 extern struct ppc_rse_dev_t PPC_RSE_PERIPH0_DEV_S; 97 #endif 98 99 #ifdef PPC_RSE_PERIPH1_S 100 #include "ppc_rse_drv.h" 101 extern struct ppc_rse_dev_t PPC_RSE_PERIPH1_DEV_S; 102 #endif 103 104 #ifdef PPC_RSE_PERIPH_EXP0_S 105 #include "ppc_rse_drv.h" 106 extern struct ppc_rse_dev_t PPC_RSE_PERIPH_EXP0_DEV_S; 107 #endif 108 109 #ifdef PPC_RSE_PERIPH_EXP1_S 110 #include "ppc_rse_drv.h" 111 extern struct ppc_rse_dev_t PPC_RSE_PERIPH_EXP1_DEV_S; 112 #endif 113 114 #ifdef PPC_RSE_PERIPH_EXP2_S 115 #include "ppc_rse_drv.h" 116 extern struct ppc_rse_dev_t PPC_RSE_PERIPH_EXP2_DEV_S; 117 #endif 118 119 #ifdef PPC_RSE_PERIPH_EXP3_S 120 #include "ppc_rse_drv.h" 121 extern struct ppc_rse_dev_t PPC_RSE_PERIPH_EXP3_DEV_S; 122 #endif 123 124 /* System counters */ 125 #ifdef SYSCOUNTER_CNTRL_ARMV8_M_S 126 #include "syscounter_armv8-m_cntrl_drv.h" 127 extern struct syscounter_armv8_m_cntrl_dev_t SYSCOUNTER_CNTRL_ARMV8_M_DEV_S; 128 #endif 129 130 #ifdef SYSCOUNTER_READ_ARMV8_M_S 131 #include "syscounter_armv8-m_read_drv.h" 132 extern struct syscounter_armv8_m_read_dev_t SYSCOUNTER_READ_ARMV8_M_DEV_S; 133 #endif 134 135 /* System timers */ 136 #ifdef SYSTIMER0_ARMV8_M_S 137 #include "systimer_armv8-m_drv.h" 138 extern struct systimer_armv8_m_dev_t SYSTIMER0_ARMV8_M_DEV_S; 139 #endif 140 #ifdef SYSTIMER0_ARMV8_M_NS 141 #include "systimer_armv8-m_drv.h" 142 extern struct systimer_armv8_m_dev_t SYSTIMER0_ARMV8_M_DEV_NS; 143 #endif 144 145 #ifdef SYSTIMER1_ARMV8_M_S 146 #include "systimer_armv8-m_drv.h" 147 extern struct systimer_armv8_m_dev_t SYSTIMER1_ARMV8_M_DEV_S; 148 #endif 149 #ifdef SYSTIMER1_ARMV8_M_NS 150 #include "systimer_armv8-m_drv.h" 151 extern struct systimer_armv8_m_dev_t SYSTIMER1_ARMV8_M_DEV_NS; 152 #endif 153 154 #ifdef SYSTIMER2_ARMV8_M_S 155 #include "systimer_armv8-m_drv.h" 156 extern struct systimer_armv8_m_dev_t SYSTIMER2_ARMV8_M_DEV_S; 157 #endif 158 #ifdef SYSTIMER2_ARMV8_M_NS 159 #include "systimer_armv8-m_drv.h" 160 extern struct systimer_armv8_m_dev_t SYSTIMER2_ARMV8_M_DEV_NS; 161 #endif 162 163 #ifdef SYSTIMER3_ARMV8_M_S 164 #include "systimer_armv8-m_drv.h" 165 extern struct systimer_armv8_m_dev_t SYSTIMER3_ARMV8_M_DEV_S; 166 #endif 167 #ifdef SYSTIMER3_ARMV8_M_NS 168 #include "systimer_armv8-m_drv.h" 169 extern struct systimer_armv8_m_dev_t SYSTIMER3_ARMV8_M_DEV_NS; 170 #endif 171 172 /* System Watchdogs */ 173 #ifdef SYSWDOG_ARMV8_M_S 174 #include "syswdog_armv8-m_drv.h" 175 extern struct syswdog_armv8_m_dev_t SYSWDOG_ARMV8_M_DEV_S; 176 #endif 177 #ifdef SYSWDOG_ARMV8_M_NS 178 #include "syswdog_armv8-m_drv.h" 179 extern struct syswdog_armv8_m_dev_t SYSWDOG_ARMV8_M_DEV_NS; 180 #endif 181 182 /* ARM MPC SIE 300 driver structures */ 183 #ifdef MPC_VM0_S 184 #include "mpc_sie_drv.h" 185 extern struct mpc_sie_dev_t MPC_VM0_DEV_S; 186 #endif 187 188 #ifdef MPC_VM1_S 189 #include "mpc_sie_drv.h" 190 extern struct mpc_sie_dev_t MPC_VM1_DEV_S; 191 #endif 192 193 #ifdef MPC_SIC_S 194 #include "mpc_sie_drv.h" 195 extern struct mpc_sie_dev_t MPC_SIC_DEV_S; 196 #endif 197 198 #ifdef KMU_S 199 #include "kmu_drv.h" 200 extern struct kmu_dev_t KMU_DEV_S; 201 #endif 202 203 #ifdef SAM_S 204 #include "sam_drv.h" 205 extern struct sam_dev_t SAM_DEV_S; 206 #endif 207 208 #ifdef LCM_S 209 #include "lcm_drv.h" 210 extern struct lcm_dev_t LCM_DEV_S; 211 #endif 212 213 #ifdef INTEGRITY_CHECKER_S 214 #include "integrity_checker_drv.h" 215 extern struct integrity_checker_dev_t INTEGRITY_CHECKER_DEV_S; 216 #endif 217 218 #ifdef DMA350_DMA0_S 219 #include "dma350_drv.h" 220 #include "dma350_ch_drv.h" 221 extern struct dma350_dev_t DMA350_DMA0_DEV_S; 222 #endif 223 224 #ifdef DMA350_DMA0_CH0_S 225 extern struct dma350_ch_dev_t DMA350_DMA0_CH0_DEV_S; 226 #endif 227 228 #ifdef DMA350_DMA0_CH1_S 229 extern struct dma350_ch_dev_t DMA350_DMA0_CH1_DEV_S; 230 #endif 231 232 #ifdef DMA350_DMA0_CH2_S 233 extern struct dma350_ch_dev_t DMA350_DMA0_CH2_DEV_S; 234 #endif 235 236 #ifdef DMA350_DMA0_CH3_S 237 extern struct dma350_ch_dev_t DMA350_DMA0_CH3_DEV_S; 238 #endif 239 240 #ifdef GPIO0_S 241 #include "gpio_pl061_drv.h" 242 extern pl061_regblk_t *const GPIO0_DEV_S; 243 #endif 244 245 #ifdef GPIO1_S 246 #include "gpio_pl061_drv.h" 247 extern pl061_regblk_t *const GPIO1_DEV_S; 248 #endif 249 250 #ifdef GPIO0_NS 251 #include "gpio_pl061_drv.h" 252 extern pl061_regblk_t *const GPIO0_DEV_NS; 253 #endif 254 255 #ifdef GPIO1_NS 256 #include "gpio_pl061_drv.h" 257 extern pl061_regblk_t *const GPIO1_DEV_NS; 258 #endif 259 260 #ifdef __cplusplus 261 } 262 #endif 263 264 #endif /* __DEVICE_DEFINITION_H__ */ 265