ARM|Driver: Add DPI Driver for emulation
[fw/openocd] / src / jtag / interfaces.c
1 /***************************************************************************
2  *   Copyright (C) 2005 by Dominic Rath                                    *
3  *   Dominic.Rath@gmx.de                                                   *
4  *                                                                         *
5  *   Copyright (C) 2007,2008 Ã˜yvind Harboe                                 *
6  *   oyvind.harboe@zylin.com                                               *
7  *                                                                         *
8  *   Copyright (C) 2009 SoftPLC Corporation                                *
9  *       http://softplc.com                                                *
10  *   dick@softplc.com                                                      *
11  *                                                                         *
12  *   Copyright (C) 2009 Zachary T Welch                                    *
13  *   zw@superlucidity.net                                                  *
14  *                                                                         *
15  *   Copyright (C) 2020, Ampere Computing LLC                              *
16  *                                                                         *
17  *   This program is free software; you can redistribute it and/or modify  *
18  *   it under the terms of the GNU General Public License as published by  *
19  *   the Free Software Foundation; either version 2 of the License, or     *
20  *   (at your option) any later version.                                   *
21  *                                                                         *
22  *   This program is distributed in the hope that it will be useful,       *
23  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
24  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
25  *   GNU General Public License for more details.                          *
26  *                                                                         *
27  *   You should have received a copy of the GNU General Public License     *
28  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
29  ***************************************************************************/
30
31 #ifdef HAVE_CONFIG_H
32 #include "config.h"
33 #endif
34
35 #include "interfaces.h"
36
37 /** @file
38  * This file includes declarations for all built-in jtag interfaces,
39  * which are then listed in the adapter_drivers array.
40  *
41  * Dynamic loading can be implemented be searching for shared libraries
42  * that contain an adapter_driver structure that can added to this list.
43  */
44
45 #if BUILD_ZY1000 == 1
46 extern struct adapter_driver zy1000_adapter_driver;
47 #elif defined(BUILD_MINIDRIVER_DUMMY)
48 extern struct adapter_driver minidummy_adapter_driver;
49 #else /* standard drivers */
50 #if BUILD_PARPORT == 1
51 extern struct adapter_driver parport_adapter_driver;
52 #endif
53 #if BUILD_DUMMY == 1
54 extern struct adapter_driver dummy_adapter_driver;
55 #endif
56 #if BUILD_FTDI == 1
57 extern struct adapter_driver ftdi_adapter_driver;
58 #endif
59 #if BUILD_USB_BLASTER == 1 || BUILD_USB_BLASTER_2 == 1
60 extern struct adapter_driver usb_blaster_adapter_driver;
61 #endif
62 #if BUILD_JTAG_VPI == 1
63 extern struct adapter_driver jtag_vpi_adapter_driver;
64 #endif
65 #if BUILD_JTAG_DPI == 1
66 extern struct adapter_driver jtag_dpi_adapter_driver;
67 #endif
68 #if BUILD_FT232R == 1
69 extern struct adapter_driver ft232r_adapter_driver;
70 #endif
71 #if BUILD_AMTJTAGACCEL == 1
72 extern struct adapter_driver amt_jtagaccel_adapter_driver;
73 #endif
74 #if BUILD_EP93XX == 1
75 extern struct adapter_driver ep93xx_adapter_driver;
76 #endif
77 #if BUILD_AT91RM9200 == 1
78 extern struct adapter_driver at91rm9200_adapter_driver;
79 #endif
80 #if BUILD_GW16012 == 1
81 extern struct adapter_driver gw16012_adapter_driver;
82 #endif
83 #if BUILD_PRESTO
84 extern struct adapter_driver presto_adapter_driver;
85 #endif
86 #if BUILD_USBPROG == 1
87 extern struct adapter_driver usbprog_adapter_driver;
88 #endif
89 #if BUILD_OPENJTAG == 1
90 extern struct adapter_driver openjtag_adapter_driver;
91 #endif
92 #if BUILD_JLINK == 1
93 extern struct adapter_driver jlink_adapter_driver;
94 #endif
95 #if BUILD_VSLLINK == 1
96 extern struct adapter_driver vsllink_adapter_driver;
97 #endif
98 #if BUILD_RLINK == 1
99 extern struct adapter_driver rlink_adapter_driver;
100 #endif
101 #if BUILD_ULINK == 1
102 extern struct adapter_driver ulink_adapter_driver;
103 #endif
104 #if BUILD_ARMJTAGEW == 1
105 extern struct adapter_driver armjtagew_adapter_driver;
106 #endif
107 #if BUILD_BUSPIRATE == 1
108 extern struct adapter_driver buspirate_adapter_driver;
109 #endif
110 #if BUILD_REMOTE_BITBANG == 1
111 extern struct adapter_driver remote_bitbang_adapter_driver;
112 #endif
113 #if BUILD_HLADAPTER == 1
114 extern struct adapter_driver hl_adapter_driver;
115 #endif
116 #if BUILD_OSBDM == 1
117 extern struct adapter_driver osbdm_adapter_driver;
118 #endif
119 #if BUILD_OPENDOUS == 1
120 extern struct adapter_driver opendous_adapter_driver;
121 #endif
122 #if BUILD_SYSFSGPIO == 1
123 extern struct adapter_driver sysfsgpio_adapter_driver;
124 #endif
125 #if BUILD_LINUXGPIOD == 1
126 extern struct adapter_driver linuxgpiod_adapter_driver;
127 #endif
128 #if BUILD_XLNX_PCIE_XVC == 1
129 extern struct adapter_driver xlnx_pcie_xvc_adapter_driver;
130 #endif
131 #if BUILD_AICE == 1
132 extern struct adapter_driver aice_adapter_driver;
133 #endif
134 #if BUILD_BCM2835GPIO == 1
135 extern struct adapter_driver bcm2835gpio_adapter_driver;
136 #endif
137 #if BUILD_CMSIS_DAP == 1
138 extern struct adapter_driver cmsis_dap_adapter_driver;
139 #endif
140 #if BUILD_KITPROG == 1
141 extern struct adapter_driver kitprog_adapter_driver;
142 #endif
143 #if BUILD_IMX_GPIO == 1
144 extern struct adapter_driver imx_gpio_adapter_driver;
145 #endif
146 #if BUILD_XDS110 == 1
147 extern struct adapter_driver xds110_adapter_driver;
148 #endif
149 #if BUILD_HLADAPTER_STLINK == 1
150 extern struct adapter_driver stlink_dap_adapter_driver;
151 #endif
152 #if BUILD_RSHIM == 1
153 extern struct adapter_driver rshim_dap_adapter_driver;
154 #endif
155 #endif /* standard drivers */
156
157 /**
158  * The list of built-in JTAG interfaces, containing entries for those
159  * drivers that were enabled by the @c configure script.
160  *
161  * The list should be defined to contain either one minidriver interface
162  * or some number of standard driver interfaces, never both.
163  */
164 struct adapter_driver *adapter_drivers[] = {
165 #if BUILD_ZY1000 == 1
166                 &zy1000_adapter_driver,
167 #elif defined(BUILD_MINIDRIVER_DUMMY)
168                 &minidummy_adapter_driver,
169 #else /* standard drivers */
170 #if BUILD_PARPORT == 1
171                 &parport_adapter_driver,
172 #endif
173 #if BUILD_DUMMY == 1
174                 &dummy_adapter_driver,
175 #endif
176 #if BUILD_FTDI == 1
177                 &ftdi_adapter_driver,
178 #endif
179 #if BUILD_USB_BLASTER || BUILD_USB_BLASTER_2 == 1
180                 &usb_blaster_adapter_driver,
181 #endif
182 #if BUILD_JTAG_VPI == 1
183                 &jtag_vpi_adapter_driver,
184 #endif
185 #if BUILD_JTAG_DPI == 1
186                 &jtag_dpi_adapter_driver,
187 #endif
188 #if BUILD_FT232R == 1
189                 &ft232r_adapter_driver,
190 #endif
191 #if BUILD_AMTJTAGACCEL == 1
192                 &amt_jtagaccel_adapter_driver,
193 #endif
194 #if BUILD_EP93XX == 1
195                 &ep93xx_adapter_driver,
196 #endif
197 #if BUILD_AT91RM9200 == 1
198                 &at91rm9200_adapter_driver,
199 #endif
200 #if BUILD_GW16012 == 1
201                 &gw16012_adapter_driver,
202 #endif
203 #if BUILD_PRESTO
204                 &presto_adapter_driver,
205 #endif
206 #if BUILD_USBPROG == 1
207                 &usbprog_adapter_driver,
208 #endif
209 #if BUILD_OPENJTAG == 1
210                 &openjtag_adapter_driver,
211 #endif
212 #if BUILD_JLINK == 1
213                 &jlink_adapter_driver,
214 #endif
215 #if BUILD_VSLLINK == 1
216                 &vsllink_adapter_driver,
217 #endif
218 #if BUILD_RLINK == 1
219                 &rlink_adapter_driver,
220 #endif
221 #if BUILD_ULINK == 1
222                 &ulink_adapter_driver,
223 #endif
224 #if BUILD_ARMJTAGEW == 1
225                 &armjtagew_adapter_driver,
226 #endif
227 #if BUILD_BUSPIRATE == 1
228                 &buspirate_adapter_driver,
229 #endif
230 #if BUILD_REMOTE_BITBANG == 1
231                 &remote_bitbang_adapter_driver,
232 #endif
233 #if BUILD_HLADAPTER == 1
234                 &hl_adapter_driver,
235 #endif
236 #if BUILD_OSBDM == 1
237                 &osbdm_adapter_driver,
238 #endif
239 #if BUILD_OPENDOUS == 1
240                 &opendous_adapter_driver,
241 #endif
242 #if BUILD_SYSFSGPIO == 1
243                 &sysfsgpio_adapter_driver,
244 #endif
245 #if BUILD_LINUXGPIOD == 1
246                 &linuxgpiod_adapter_driver,
247 #endif
248 #if BUILD_XLNX_PCIE_XVC == 1
249                 &xlnx_pcie_xvc_adapter_driver,
250 #endif
251 #if BUILD_AICE == 1
252                 &aice_adapter_driver,
253 #endif
254 #if BUILD_BCM2835GPIO == 1
255                 &bcm2835gpio_adapter_driver,
256 #endif
257 #if BUILD_CMSIS_DAP == 1
258                 &cmsis_dap_adapter_driver,
259 #endif
260 #if BUILD_KITPROG == 1
261                 &kitprog_adapter_driver,
262 #endif
263 #if BUILD_IMX_GPIO == 1
264                 &imx_gpio_adapter_driver,
265 #endif
266 #if BUILD_XDS110 == 1
267                 &xds110_adapter_driver,
268 #endif
269 #if BUILD_HLADAPTER_STLINK == 1
270                 &stlink_dap_adapter_driver,
271 #endif
272 #if BUILD_RSHIM == 1
273                 &rshim_dap_adapter_driver,
274 #endif
275 #endif /* standard drivers */
276                 NULL,
277         };