d229d8cb07b7e92e1f134b4c0176dfb6d93ef147
[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 defined(BUILD_MINIDRIVER_DUMMY)
46 extern struct adapter_driver minidummy_adapter_driver;
47 #else /* standard drivers */
48 #if BUILD_PARPORT == 1
49 extern struct adapter_driver parport_adapter_driver;
50 #endif
51 #if BUILD_DUMMY == 1
52 extern struct adapter_driver dummy_adapter_driver;
53 #endif
54 #if BUILD_FTDI == 1
55 extern struct adapter_driver ftdi_adapter_driver;
56 #endif
57 #if BUILD_USB_BLASTER == 1 || BUILD_USB_BLASTER_2 == 1
58 extern struct adapter_driver usb_blaster_adapter_driver;
59 #endif
60 #if BUILD_JTAG_VPI == 1
61 extern struct adapter_driver jtag_vpi_adapter_driver;
62 #endif
63 #if BUILD_JTAG_DPI == 1
64 extern struct adapter_driver jtag_dpi_adapter_driver;
65 #endif
66 #if BUILD_FT232R == 1
67 extern struct adapter_driver ft232r_adapter_driver;
68 #endif
69 #if BUILD_AMTJTAGACCEL == 1
70 extern struct adapter_driver amt_jtagaccel_adapter_driver;
71 #endif
72 #if BUILD_EP93XX == 1
73 extern struct adapter_driver ep93xx_adapter_driver;
74 #endif
75 #if BUILD_AT91RM9200 == 1
76 extern struct adapter_driver at91rm9200_adapter_driver;
77 #endif
78 #if BUILD_GW16012 == 1
79 extern struct adapter_driver gw16012_adapter_driver;
80 #endif
81 #if BUILD_PRESTO
82 extern struct adapter_driver presto_adapter_driver;
83 #endif
84 #if BUILD_USBPROG == 1
85 extern struct adapter_driver usbprog_adapter_driver;
86 #endif
87 #if BUILD_OPENJTAG == 1
88 extern struct adapter_driver openjtag_adapter_driver;
89 #endif
90 #if BUILD_JLINK == 1
91 extern struct adapter_driver jlink_adapter_driver;
92 #endif
93 #if BUILD_VSLLINK == 1
94 extern struct adapter_driver vsllink_adapter_driver;
95 #endif
96 #if BUILD_RLINK == 1
97 extern struct adapter_driver rlink_adapter_driver;
98 #endif
99 #if BUILD_ULINK == 1
100 extern struct adapter_driver ulink_adapter_driver;
101 #endif
102 #if BUILD_ARMJTAGEW == 1
103 extern struct adapter_driver armjtagew_adapter_driver;
104 #endif
105 #if BUILD_BUSPIRATE == 1
106 extern struct adapter_driver buspirate_adapter_driver;
107 #endif
108 #if BUILD_REMOTE_BITBANG == 1
109 extern struct adapter_driver remote_bitbang_adapter_driver;
110 #endif
111 #if BUILD_HLADAPTER == 1
112 extern struct adapter_driver hl_adapter_driver;
113 #endif
114 #if BUILD_OSBDM == 1
115 extern struct adapter_driver osbdm_adapter_driver;
116 #endif
117 #if BUILD_OPENDOUS == 1
118 extern struct adapter_driver opendous_adapter_driver;
119 #endif
120 #if BUILD_SYSFSGPIO == 1
121 extern struct adapter_driver sysfsgpio_adapter_driver;
122 #endif
123 #if BUILD_LINUXGPIOD == 1
124 extern struct adapter_driver linuxgpiod_adapter_driver;
125 #endif
126 #if BUILD_XLNX_PCIE_XVC == 1
127 extern struct adapter_driver xlnx_pcie_xvc_adapter_driver;
128 #endif
129 #if BUILD_AICE == 1
130 extern struct adapter_driver aice_adapter_driver;
131 #endif
132 #if BUILD_BCM2835GPIO == 1
133 extern struct adapter_driver bcm2835gpio_adapter_driver;
134 #endif
135 #if BUILD_CMSIS_DAP_USB == 1 || BUILD_CMSIS_DAP_HID == 1
136 extern struct adapter_driver cmsis_dap_adapter_driver;
137 #endif
138 #if BUILD_KITPROG == 1
139 extern struct adapter_driver kitprog_adapter_driver;
140 #endif
141 #if BUILD_IMX_GPIO == 1
142 extern struct adapter_driver imx_gpio_adapter_driver;
143 #endif
144 #if BUILD_XDS110 == 1
145 extern struct adapter_driver xds110_adapter_driver;
146 #endif
147 #if BUILD_HLADAPTER_STLINK == 1
148 extern struct adapter_driver stlink_dap_adapter_driver;
149 #endif
150 #if BUILD_RSHIM == 1
151 extern struct adapter_driver rshim_dap_adapter_driver;
152 #endif
153 #endif /* standard drivers */
154
155 /**
156  * The list of built-in JTAG interfaces, containing entries for those
157  * drivers that were enabled by the @c configure script.
158  *
159  * The list should be defined to contain either one minidriver interface
160  * or some number of standard driver interfaces, never both.
161  */
162 struct adapter_driver *adapter_drivers[] = {
163 #if defined(BUILD_MINIDRIVER_DUMMY)
164                 &minidummy_adapter_driver,
165 #else /* standard drivers */
166 #if BUILD_PARPORT == 1
167                 &parport_adapter_driver,
168 #endif
169 #if BUILD_DUMMY == 1
170                 &dummy_adapter_driver,
171 #endif
172 #if BUILD_FTDI == 1
173                 &ftdi_adapter_driver,
174 #endif
175 #if BUILD_USB_BLASTER || BUILD_USB_BLASTER_2 == 1
176                 &usb_blaster_adapter_driver,
177 #endif
178 #if BUILD_JTAG_VPI == 1
179                 &jtag_vpi_adapter_driver,
180 #endif
181 #if BUILD_JTAG_DPI == 1
182                 &jtag_dpi_adapter_driver,
183 #endif
184 #if BUILD_FT232R == 1
185                 &ft232r_adapter_driver,
186 #endif
187 #if BUILD_AMTJTAGACCEL == 1
188                 &amt_jtagaccel_adapter_driver,
189 #endif
190 #if BUILD_EP93XX == 1
191                 &ep93xx_adapter_driver,
192 #endif
193 #if BUILD_AT91RM9200 == 1
194                 &at91rm9200_adapter_driver,
195 #endif
196 #if BUILD_GW16012 == 1
197                 &gw16012_adapter_driver,
198 #endif
199 #if BUILD_PRESTO
200                 &presto_adapter_driver,
201 #endif
202 #if BUILD_USBPROG == 1
203                 &usbprog_adapter_driver,
204 #endif
205 #if BUILD_OPENJTAG == 1
206                 &openjtag_adapter_driver,
207 #endif
208 #if BUILD_JLINK == 1
209                 &jlink_adapter_driver,
210 #endif
211 #if BUILD_VSLLINK == 1
212                 &vsllink_adapter_driver,
213 #endif
214 #if BUILD_RLINK == 1
215                 &rlink_adapter_driver,
216 #endif
217 #if BUILD_ULINK == 1
218                 &ulink_adapter_driver,
219 #endif
220 #if BUILD_ARMJTAGEW == 1
221                 &armjtagew_adapter_driver,
222 #endif
223 #if BUILD_BUSPIRATE == 1
224                 &buspirate_adapter_driver,
225 #endif
226 #if BUILD_REMOTE_BITBANG == 1
227                 &remote_bitbang_adapter_driver,
228 #endif
229 #if BUILD_HLADAPTER == 1
230                 &hl_adapter_driver,
231 #endif
232 #if BUILD_OSBDM == 1
233                 &osbdm_adapter_driver,
234 #endif
235 #if BUILD_OPENDOUS == 1
236                 &opendous_adapter_driver,
237 #endif
238 #if BUILD_SYSFSGPIO == 1
239                 &sysfsgpio_adapter_driver,
240 #endif
241 #if BUILD_LINUXGPIOD == 1
242                 &linuxgpiod_adapter_driver,
243 #endif
244 #if BUILD_XLNX_PCIE_XVC == 1
245                 &xlnx_pcie_xvc_adapter_driver,
246 #endif
247 #if BUILD_AICE == 1
248                 &aice_adapter_driver,
249 #endif
250 #if BUILD_BCM2835GPIO == 1
251                 &bcm2835gpio_adapter_driver,
252 #endif
253 #if BUILD_CMSIS_DAP_USB == 1 || BUILD_CMSIS_DAP_HID == 1
254                 &cmsis_dap_adapter_driver,
255 #endif
256 #if BUILD_KITPROG == 1
257                 &kitprog_adapter_driver,
258 #endif
259 #if BUILD_IMX_GPIO == 1
260                 &imx_gpio_adapter_driver,
261 #endif
262 #if BUILD_XDS110 == 1
263                 &xds110_adapter_driver,
264 #endif
265 #if BUILD_HLADAPTER_STLINK == 1
266                 &stlink_dap_adapter_driver,
267 #endif
268 #if BUILD_RSHIM == 1
269                 &rshim_dap_adapter_driver,
270 #endif
271 #endif /* standard drivers */
272                 NULL,
273         };