ST-LINK USB initial release
[openocd.git] / src / jtag / interfaces.c
blob7e8748a0da65493d696a73fac41515900daa8ef0
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, write to the *
27 * Free Software Foundation, Inc., *
28 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
29 ***************************************************************************/
30 #ifdef HAVE_CONFIG_H
31 #include "config.h"
32 #endif
34 #include "interfaces.h"
36 /** @file
37 * This file includes declarations for all built-in jtag interfaces,
38 * which are then listed in the jtag_interfaces array.
40 * Dynamic loading can be implemented be searching for shared libraries
41 * that contain a jtag_interface structure that can added to this list.
44 #if BUILD_ZY1000 == 1
45 extern struct jtag_interface zy1000_interface;
46 #elif defined(BUILD_MINIDRIVER_DUMMY)
47 extern struct jtag_interface minidummy_interface;
48 #else // standard drivers
49 #if BUILD_PARPORT == 1
50 extern struct jtag_interface parport_interface;
51 #endif
52 #if BUILD_DUMMY == 1
53 extern struct jtag_interface dummy_interface;
54 #endif
55 #if BUILD_FT2232_FTD2XX == 1
56 extern struct jtag_interface ft2232_interface;
57 #endif
58 #if BUILD_FT2232_LIBFTDI == 1
59 extern struct jtag_interface ft2232_interface;
60 #endif
61 #if BUILD_USB_BLASTER_LIBFTDI == 1 || BUILD_USB_BLASTER_FTD2XX == 1
62 extern struct jtag_interface usb_blaster_interface;
63 #endif
64 #if BUILD_AMTJTAGACCEL == 1
65 extern struct jtag_interface amt_jtagaccel_interface;
66 #endif
67 #if BUILD_EP93XX == 1
68 extern struct jtag_interface ep93xx_interface;
69 #endif
70 #if BUILD_AT91RM9200 == 1
71 extern struct jtag_interface at91rm9200_interface;
72 #endif
73 #if BUILD_GW16012 == 1
74 extern struct jtag_interface gw16012_interface;
75 #endif
76 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
77 extern struct jtag_interface presto_interface;
78 #endif
79 #if BUILD_USBPROG == 1
80 extern struct jtag_interface usbprog_interface;
81 #endif
82 #if BUILD_JLINK == 1
83 extern struct jtag_interface jlink_interface;
84 #endif
85 #if BUILD_VSLLINK == 1
86 extern struct jtag_interface vsllink_interface;
87 #endif
88 #if BUILD_RLINK == 1
89 extern struct jtag_interface rlink_interface;
90 #endif
91 #if BUILD_ULINK == 1
92 extern struct jtag_interface ulink_interface;
93 #endif
94 #if BUILD_ARMJTAGEW == 1
95 extern struct jtag_interface armjtagew_interface;
96 #endif
97 #if BUILD_BUSPIRATE == 1
98 extern struct jtag_interface buspirate_interface;
99 #endif
100 #if BUILD_REMOTE_BITBANG == 1
101 extern struct jtag_interface remote_bitbang_interface;
102 #endif
103 #if BUILD_STLINK == 1
104 extern struct jtag_interface stlink_interface;
105 #endif
106 #endif // standard drivers
109 * The list of built-in JTAG interfaces, containing entries for those
110 * drivers that were enabled by the @c configure script.
112 * The list should be defined to contain either one minidriver interface
113 * or some number of standard driver interfaces, never both.
115 struct jtag_interface *jtag_interfaces[] = {
116 #if BUILD_ZY1000 == 1
117 &zy1000_interface,
118 #elif defined(BUILD_MINIDRIVER_DUMMY)
119 &minidummy_interface,
120 #else // standard drivers
121 #if BUILD_PARPORT == 1
122 &parport_interface,
123 #endif
124 #if BUILD_DUMMY == 1
125 &dummy_interface,
126 #endif
127 #if BUILD_FT2232_FTD2XX == 1
128 &ft2232_interface,
129 #endif
130 #if BUILD_FT2232_LIBFTDI == 1
131 &ft2232_interface,
132 #endif
133 #if BUILD_USB_BLASTER_LIBFTDI == 1 || BUILD_USB_BLASTER_FTD2XX == 1
134 &usb_blaster_interface,
135 #endif
136 #if BUILD_AMTJTAGACCEL == 1
137 &amt_jtagaccel_interface,
138 #endif
139 #if BUILD_EP93XX == 1
140 &ep93xx_interface,
141 #endif
142 #if BUILD_AT91RM9200 == 1
143 &at91rm9200_interface,
144 #endif
145 #if BUILD_GW16012 == 1
146 &gw16012_interface,
147 #endif
148 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
149 &presto_interface,
150 #endif
151 #if BUILD_USBPROG == 1
152 &usbprog_interface,
153 #endif
154 #if BUILD_JLINK == 1
155 &jlink_interface,
156 #endif
157 #if BUILD_VSLLINK == 1
158 &vsllink_interface,
159 #endif
160 #if BUILD_RLINK == 1
161 &rlink_interface,
162 #endif
163 #if BUILD_ULINK == 1
164 &ulink_interface,
165 #endif
166 #if BUILD_ARMJTAGEW == 1
167 &armjtagew_interface,
168 #endif
169 #if BUILD_BUSPIRATE == 1
170 &buspirate_interface,
171 #endif
172 #if BUILD_REMOTE_BITBANG == 1
173 &remote_bitbang_interface,
174 #endif
175 #if BUILD_STLINK == 1
176 &stlink_interface,
177 #endif
178 #endif // standard drivers
179 NULL,
182 void jtag_interface_modules_load(const char *path)
184 // @todo: implement dynamic module loading for JTAG interface drivers