1ee29d2dd386ef99d2043f09555a5c9948d23a77
[openocd.git] / 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 * This program is free software; you can redistribute it and/or modify *
16 * it under the terms of the GNU General Public License as published by *
17 * the Free Software Foundation; either version 2 of the License, or *
18 * (at your option) any later version. *
19 * *
20 * This program is distributed in the hope that it will be useful, *
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
23 * GNU General Public License for more details. *
24 * *
25 * You should have received a copy of the GNU General Public License *
26 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
27 ***************************************************************************/
28
29 #ifdef HAVE_CONFIG_H
30 #include "config.h"
31 #endif
32
33 #include "interfaces.h"
34
35 /** @file
36 * This file includes declarations for all built-in jtag interfaces,
37 * which are then listed in the jtag_interfaces array.
38 *
39 * Dynamic loading can be implemented be searching for shared libraries
40 * that contain a jtag_interface structure that can added to this list.
41 */
42
43 #if BUILD_ZY1000 == 1
44 extern struct jtag_interface zy1000_interface;
45 #elif defined(BUILD_MINIDRIVER_DUMMY)
46 extern struct jtag_interface minidummy_interface;
47 #else /* standard drivers */
48 #if BUILD_PARPORT == 1
49 extern struct jtag_interface parport_interface;
50 #endif
51 #if BUILD_DUMMY == 1
52 extern struct jtag_interface dummy_interface;
53 #endif
54 #if BUILD_FTDI == 1
55 extern struct jtag_interface ftdi_interface;
56 #endif
57 #if BUILD_USB_BLASTER_LIBFTDI == 1 || BUILD_USB_BLASTER_FTD2XX == 1 || BUILD_USB_BLASTER_2 == 1
58 extern struct jtag_interface usb_blaster_interface;
59 #endif
60 #if BUILD_JTAG_VPI == 1
61 extern struct jtag_interface jtag_vpi_interface;
62 #endif
63 #if BUILD_AMTJTAGACCEL == 1
64 extern struct jtag_interface amt_jtagaccel_interface;
65 #endif
66 #if BUILD_EP93XX == 1
67 extern struct jtag_interface ep93xx_interface;
68 #endif
69 #if BUILD_AT91RM9200 == 1
70 extern struct jtag_interface at91rm9200_interface;
71 #endif
72 #if BUILD_GW16012 == 1
73 extern struct jtag_interface gw16012_interface;
74 #endif
75 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
76 extern struct jtag_interface presto_interface;
77 #endif
78 #if BUILD_USBPROG == 1
79 extern struct jtag_interface usbprog_interface;
80 #endif
81 #if BUILD_OPENJTAG == 1
82 extern struct jtag_interface openjtag_interface;
83 #endif
84 #if BUILD_JLINK == 1
85 extern struct jtag_interface jlink_interface;
86 #endif
87 #if BUILD_VSLLINK == 1
88 extern struct jtag_interface vsllink_interface;
89 #endif
90 #if BUILD_RLINK == 1
91 extern struct jtag_interface rlink_interface;
92 #endif
93 #if BUILD_ULINK == 1
94 extern struct jtag_interface ulink_interface;
95 #endif
96 #if BUILD_ARMJTAGEW == 1
97 extern struct jtag_interface armjtagew_interface;
98 #endif
99 #if BUILD_BUSPIRATE == 1
100 extern struct jtag_interface buspirate_interface;
101 #endif
102 #if BUILD_REMOTE_BITBANG == 1
103 extern struct jtag_interface remote_bitbang_interface;
104 #endif
105 #if BUILD_HLADAPTER == 1
106 extern struct jtag_interface hl_interface;
107 #endif
108 #if BUILD_OSBDM == 1
109 extern struct jtag_interface osbdm_interface;
110 #endif
111 #if BUILD_OPENDOUS == 1
112 extern struct jtag_interface opendous_interface;
113 #endif
114 #if BUILD_SYSFSGPIO == 1
115 extern struct jtag_interface sysfsgpio_interface;
116 #endif
117 #if BUILD_AICE == 1
118 extern struct jtag_interface aice_interface;
119 #endif
120 #if BUILD_BCM2835GPIO == 1
121 extern struct jtag_interface bcm2835gpio_interface;
122 #endif
123 #if BUILD_CMSIS_DAP == 1
124 extern struct jtag_interface cmsis_dap_interface;
125 #endif
126 #endif /* standard drivers */
127
128 /**
129 * The list of built-in JTAG interfaces, containing entries for those
130 * drivers that were enabled by the @c configure script.
131 *
132 * The list should be defined to contain either one minidriver interface
133 * or some number of standard driver interfaces, never both.
134 */
135 struct jtag_interface *jtag_interfaces[] = {
136 #if BUILD_ZY1000 == 1
137 &zy1000_interface,
138 #elif defined(BUILD_MINIDRIVER_DUMMY)
139 &minidummy_interface,
140 #else /* standard drivers */
141 #if BUILD_PARPORT == 1
142 &parport_interface,
143 #endif
144 #if BUILD_DUMMY == 1
145 &dummy_interface,
146 #endif
147 #if BUILD_FTDI == 1
148 &ftdi_interface,
149 #endif
150 #if BUILD_USB_BLASTER_LIBFTDI == 1 || BUILD_USB_BLASTER_FTD2XX == 1 || BUILD_USB_BLASTER_2 == 1
151 &usb_blaster_interface,
152 #endif
153 #if BUILD_JTAG_VPI == 1
154 &jtag_vpi_interface,
155 #endif
156 #if BUILD_AMTJTAGACCEL == 1
157 &amt_jtagaccel_interface,
158 #endif
159 #if BUILD_EP93XX == 1
160 &ep93xx_interface,
161 #endif
162 #if BUILD_AT91RM9200 == 1
163 &at91rm9200_interface,
164 #endif
165 #if BUILD_GW16012 == 1
166 &gw16012_interface,
167 #endif
168 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
169 &presto_interface,
170 #endif
171 #if BUILD_USBPROG == 1
172 &usbprog_interface,
173 #endif
174 #if BUILD_OPENJTAG == 1
175 &openjtag_interface,
176 #endif
177 #if BUILD_JLINK == 1
178 &jlink_interface,
179 #endif
180 #if BUILD_VSLLINK == 1
181 &vsllink_interface,
182 #endif
183 #if BUILD_RLINK == 1
184 &rlink_interface,
185 #endif
186 #if BUILD_ULINK == 1
187 &ulink_interface,
188 #endif
189 #if BUILD_ARMJTAGEW == 1
190 &armjtagew_interface,
191 #endif
192 #if BUILD_BUSPIRATE == 1
193 &buspirate_interface,
194 #endif
195 #if BUILD_REMOTE_BITBANG == 1
196 &remote_bitbang_interface,
197 #endif
198 #if BUILD_HLADAPTER == 1
199 &hl_interface,
200 #endif
201 #if BUILD_OSBDM == 1
202 &osbdm_interface,
203 #endif
204 #if BUILD_OPENDOUS == 1
205 &opendous_interface,
206 #endif
207 #if BUILD_SYSFSGPIO == 1
208 &sysfsgpio_interface,
209 #endif
210 #if BUILD_AICE == 1
211 &aice_interface,
212 #endif
213 #if BUILD_BCM2835GPIO == 1
214 &bcm2835gpio_interface,
215 #endif
216 #if BUILD_CMSIS_DAP == 1
217 &cmsis_dap_interface,
218 #endif
219 #endif /* standard drivers */
220 NULL,
221 };
222
223 void jtag_interface_modules_load(const char *path)
224 {
225 /* @todo: implement dynamic module loading for JTAG interface drivers */
226 }