1 /*
2  * Copyright (c) 2019-2022 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 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /* ======= Defines peripheral configuration structures ======= */
36 /* ATU driver structures */
37 #ifdef ATU_S
38 #include "atu_rss_drv.h"
39 extern struct atu_dev_t ATU_DEV_S;
40 #endif
41 
42 /* UART PL011 driver structures */
43 #ifdef UART0_PL011_S
44 #include "uart_pl011_drv.h"
45 extern struct uart_pl011_dev_t UART0_PL011_DEV_S;
46 #endif
47 #ifdef UART0_PL011_NS
48 #include "uart_pl011_drv.h"
49 extern struct uart_pl011_dev_t UART0_PL011_DEV_NS;
50 #endif
51 
52 /* ARM PPC driver structures */
53 #ifdef PPC_RSS_MAIN0_S
54 #include "ppc_rss_drv.h"
55 extern struct ppc_rss_dev_t PPC_RSS_MAIN0_DEV_S;
56 #endif
57 
58 #ifdef PPC_RSS_MAIN_EXP0_S
59 #include "ppc_rss_drv.h"
60 extern struct ppc_rss_dev_t PPC_RSS_MAIN_EXP0_DEV_S;
61 #endif
62 
63 #ifdef PPC_RSS_MAIN_EXP1_S
64 #include "ppc_rss_drv.h"
65 extern struct ppc_rss_dev_t PPC_RSS_MAIN_EXP1_DEV_S;
66 #endif
67 
68 #ifdef PPC_RSS_MAIN_EXP2_S
69 #include "ppc_rss_drv.h"
70 extern struct ppc_rss_dev_t PPC_RSS_MAIN_EXP2_DEV_S;
71 #endif
72 
73 #ifdef PPC_RSS_MAIN_EXP3_S
74 #include "ppc_rss_drv.h"
75 extern struct ppc_rss_dev_t PPC_RSS_MAIN_EXP3_DEV_S;
76 #endif
77 
78 #ifdef PPC_RSS_PERIPH0_S
79 #include "ppc_rss_drv.h"
80 extern struct ppc_rss_dev_t PPC_RSS_PERIPH0_DEV_S;
81 #endif
82 
83 #ifdef PPC_RSS_PERIPH1_S
84 #include "ppc_rss_drv.h"
85 extern struct ppc_rss_dev_t PPC_RSS_PERIPH1_DEV_S;
86 #endif
87 
88 #ifdef PPC_RSS_PERIPH_EXP0_S
89 #include "ppc_rss_drv.h"
90 extern struct ppc_rss_dev_t PPC_RSS_PERIPH_EXP0_DEV_S;
91 #endif
92 
93 #ifdef PPC_RSS_PERIPH_EXP1_S
94 #include "ppc_rss_drv.h"
95 extern struct ppc_rss_dev_t PPC_RSS_PERIPH_EXP1_DEV_S;
96 #endif
97 
98 #ifdef PPC_RSS_PERIPH_EXP2_S
99 #include "ppc_rss_drv.h"
100 extern struct ppc_rss_dev_t PPC_RSS_PERIPH_EXP2_DEV_S;
101 #endif
102 
103 #ifdef PPC_RSS_PERIPH_EXP3_S
104 #include "ppc_rss_drv.h"
105 extern struct ppc_rss_dev_t PPC_RSS_PERIPH_EXP3_DEV_S;
106 #endif
107 
108 /* System counters */
109 #ifdef SYSCOUNTER_CNTRL_ARMV8_M_S
110 #include "syscounter_armv8-m_cntrl_drv.h"
111 extern struct syscounter_armv8_m_cntrl_dev_t SYSCOUNTER_CNTRL_ARMV8_M_DEV_S;
112 #endif
113 
114 #ifdef SYSCOUNTER_READ_ARMV8_M_S
115 #include "syscounter_armv8-m_read_drv.h"
116 extern struct syscounter_armv8_m_read_dev_t SYSCOUNTER_READ_ARMV8_M_DEV_S;
117 #endif
118 
119 /* System timers */
120 #ifdef SYSTIMER0_ARMV8_M_S
121 #include "systimer_armv8-m_drv.h"
122 extern struct systimer_armv8_m_dev_t SYSTIMER0_ARMV8_M_DEV_S;
123 #endif
124 #ifdef SYSTIMER0_ARMV8_M_NS
125 #include "systimer_armv8-m_drv.h"
126 extern struct systimer_armv8_m_dev_t SYSTIMER0_ARMV8_M_DEV_NS;
127 #endif
128 
129 #ifdef SYSTIMER1_ARMV8_M_S
130 #include "systimer_armv8-m_drv.h"
131 extern struct systimer_armv8_m_dev_t SYSTIMER1_ARMV8_M_DEV_S;
132 #endif
133 #ifdef SYSTIMER1_ARMV8_M_NS
134 #include "systimer_armv8-m_drv.h"
135 extern struct systimer_armv8_m_dev_t SYSTIMER1_ARMV8_M_DEV_NS;
136 #endif
137 
138 #ifdef SYSTIMER2_ARMV8_M_S
139 #include "systimer_armv8-m_drv.h"
140 extern struct systimer_armv8_m_dev_t SYSTIMER2_ARMV8_M_DEV_S;
141 #endif
142 #ifdef SYSTIMER2_ARMV8_M_NS
143 #include "systimer_armv8-m_drv.h"
144 extern struct systimer_armv8_m_dev_t SYSTIMER2_ARMV8_M_DEV_NS;
145 #endif
146 
147 #ifdef SYSTIMER3_ARMV8_M_S
148 #include "systimer_armv8-m_drv.h"
149 extern struct systimer_armv8_m_dev_t SYSTIMER3_ARMV8_M_DEV_S;
150 #endif
151 #ifdef SYSTIMER3_ARMV8_M_NS
152 #include "systimer_armv8-m_drv.h"
153 extern struct systimer_armv8_m_dev_t SYSTIMER3_ARMV8_M_DEV_NS;
154 #endif
155 
156 /* System Watchdogs */
157 #ifdef SYSWDOG_ARMV8_M_S
158 #include "syswdog_armv8-m_drv.h"
159 extern struct syswdog_armv8_m_dev_t SYSWDOG_ARMV8_M_DEV_S;
160 #endif
161 #ifdef SYSWDOG_ARMV8_M_NS
162 #include "syswdog_armv8-m_drv.h"
163 extern struct syswdog_armv8_m_dev_t SYSWDOG_ARMV8_M_DEV_NS;
164 #endif
165 
166 /* ARM MPC SIE 300 driver structures */
167 #ifdef MPC_VM0_S
168 #include "mpc_sie_drv.h"
169 extern struct mpc_sie_dev_t MPC_VM0_DEV_S;
170 #endif
171 
172 #ifdef MPC_VM1_S
173 #include "mpc_sie_drv.h"
174 extern struct mpc_sie_dev_t MPC_VM1_DEV_S;
175 #endif
176 
177 /* Message Handling Units (MHU) */
178 #ifdef MHU_AP_TO_RSS
179 #include "mhu_v2_x.h"
180 extern struct mhu_v2_x_dev_t MHU_AP_TO_RSS_DEV;
181 #endif
182 
183 #ifdef MHU_RSS_TO_AP
184 #include "mhu_v2_x.h"
185 extern struct mhu_v2_x_dev_t MHU_RSS_TO_AP_DEV;
186 #endif
187 
188 #ifdef MHU_SCP_TO_RSS
189 #include "mhu_v2_x.h"
190 extern struct mhu_v2_x_dev_t MHU_SCP_TO_RSS_DEV;
191 #endif
192 
193 #ifdef MHU_RSS_TO_SCP
194 #include "mhu_v2_x.h"
195 extern struct mhu_v2_x_dev_t MHU_RSS_TO_SCP_DEV;
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 LCM_S
204 #include "lcm_drv.h"
205 extern struct lcm_dev_t LCM_DEV_S;
206 #endif
207 
208 #ifdef DMA350_DMA0_S
209 #include "dma350_drv.h"
210 #include "dma350_ch_drv.h"
211 extern struct dma350_dev_t DMA350_DMA0_DEV_S;
212 #endif
213 
214 #ifdef DMA350_DMA0_CH0_S
215 extern struct dma350_ch_dev_t DMA350_DMA0_CH0_DEV_S;
216 #endif
217 
218 #ifdef DMA350_DMA0_CH1_S
219 extern struct dma350_ch_dev_t DMA350_DMA0_CH1_DEV_S;
220 #endif
221 
222 #ifdef DMA350_DMA0_CH2_S
223 extern struct dma350_ch_dev_t DMA350_DMA0_CH2_DEV_S;
224 #endif
225 
226 #ifdef DMA350_DMA0_CH3_S
227 extern struct dma350_ch_dev_t DMA350_DMA0_CH3_DEV_S;
228 #endif
229 
230 #ifdef __cplusplus
231 }
232 #endif
233 
234 #endif  /* __DEVICE_DEFINITION_H__ */
235