1 /***************************************************************************
2 * Copyright (C) 2005 by Dominic Rath *
3 * Dominic.Rath@gmx.de *
5 * Copyright (C) 2007,2008 Øyvind Harboe *
6 * oyvind.harboe@zylin.com *
8 * Copyright (C) 2009 SoftPLC Corporation *
12 * Copyright (C) 2009 Zachary T Welch *
13 * zw@superlucidity.net *
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. *
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. *
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 ***************************************************************************/
33 #include "interfaces.h"
36 * This file includes declarations for all built-in jtag interfaces,
37 * which are then listed in the jtag_interfaces array.
39 * Dynamic loading can be implemented be searching for shared libraries
40 * that contain a jtag_interface structure that can added to this list.
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
;
52 extern struct jtag_interface dummy_interface
;
54 #if BUILD_FT2232_FTD2XX == 1
55 extern struct jtag_interface ft2232_interface
;
57 #if BUILD_FT2232_LIBFTDI == 1
58 extern struct jtag_interface ft2232_interface
;
61 extern struct jtag_interface ftdi_interface
;
63 #if BUILD_USB_BLASTER_LIBFTDI == 1 || BUILD_USB_BLASTER_FTD2XX == 1 || BUILD_USB_BLASTER_2 == 1
64 extern struct jtag_interface usb_blaster_interface
;
66 #if BUILD_JTAG_VPI == 1
67 extern struct jtag_interface jtag_vpi_interface
;
69 #if BUILD_AMTJTAGACCEL == 1
70 extern struct jtag_interface amt_jtagaccel_interface
;
73 extern struct jtag_interface ep93xx_interface
;
75 #if BUILD_AT91RM9200 == 1
76 extern struct jtag_interface at91rm9200_interface
;
78 #if BUILD_GW16012 == 1
79 extern struct jtag_interface gw16012_interface
;
81 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
82 extern struct jtag_interface presto_interface
;
84 #if BUILD_USBPROG == 1
85 extern struct jtag_interface usbprog_interface
;
87 #if BUILD_OPENJTAG == 1
88 extern struct jtag_interface openjtag_interface
;
91 extern struct jtag_interface jlink_interface
;
93 #if BUILD_VSLLINK == 1
94 extern struct jtag_interface vsllink_interface
;
97 extern struct jtag_interface rlink_interface
;
100 extern struct jtag_interface ulink_interface
;
102 #if BUILD_ARMJTAGEW == 1
103 extern struct jtag_interface armjtagew_interface
;
105 #if BUILD_BUSPIRATE == 1
106 extern struct jtag_interface buspirate_interface
;
108 #if BUILD_REMOTE_BITBANG == 1
109 extern struct jtag_interface remote_bitbang_interface
;
111 #if BUILD_HLADAPTER == 1
112 extern struct jtag_interface hl_interface
;
115 extern struct jtag_interface osbdm_interface
;
117 #if BUILD_OPENDOUS == 1
118 extern struct jtag_interface opendous_interface
;
120 #if BUILD_SYSFSGPIO == 1
121 extern struct jtag_interface sysfsgpio_interface
;
124 extern struct jtag_interface aice_interface
;
126 #if BUILD_BCM2835GPIO == 1
127 extern struct jtag_interface bcm2835gpio_interface
;
129 #if BUILD_CMSIS_DAP == 1
130 extern struct jtag_interface cmsis_dap_interface
;
132 #endif /* standard drivers */
135 * The list of built-in JTAG interfaces, containing entries for those
136 * drivers that were enabled by the @c configure script.
138 * The list should be defined to contain either one minidriver interface
139 * or some number of standard driver interfaces, never both.
141 struct jtag_interface
*jtag_interfaces
[] = {
142 #if BUILD_ZY1000 == 1
144 #elif defined(BUILD_MINIDRIVER_DUMMY)
145 &minidummy_interface
,
146 #else /* standard drivers */
147 #if BUILD_PARPORT == 1
153 #if BUILD_FT2232_FTD2XX == 1
156 #if BUILD_FT2232_LIBFTDI == 1
162 #if BUILD_USB_BLASTER_LIBFTDI == 1 || BUILD_USB_BLASTER_FTD2XX == 1 || BUILD_USB_BLASTER_2 == 1
163 &usb_blaster_interface
,
165 #if BUILD_JTAG_VPI == 1
168 #if BUILD_AMTJTAGACCEL == 1
169 &amt_jtagaccel_interface
,
171 #if BUILD_EP93XX == 1
174 #if BUILD_AT91RM9200 == 1
175 &at91rm9200_interface
,
177 #if BUILD_GW16012 == 1
180 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
183 #if BUILD_USBPROG == 1
186 #if BUILD_OPENJTAG == 1
192 #if BUILD_VSLLINK == 1
201 #if BUILD_ARMJTAGEW == 1
202 &armjtagew_interface
,
204 #if BUILD_BUSPIRATE == 1
205 &buspirate_interface
,
207 #if BUILD_REMOTE_BITBANG == 1
208 &remote_bitbang_interface
,
210 #if BUILD_HLADAPTER == 1
216 #if BUILD_OPENDOUS == 1
219 #if BUILD_SYSFSGPIO == 1
220 &sysfsgpio_interface
,
225 #if BUILD_BCM2835GPIO == 1
226 &bcm2835gpio_interface
,
228 #if BUILD_CMSIS_DAP == 1
229 &cmsis_dap_interface
,
231 #endif /* standard drivers */
235 void jtag_interface_modules_load(const char *path
)
237 /* @todo: implement dynamic module loading for JTAG interface drivers */