Move JTAG interface list to new files.
[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  *   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
33
34 #include "interfaces.h"
35
36 /**
37  * @file This file includes declarations for all built-in jtag interfaces,
38  *  which are then listed in the jtag_interfaces array.
39  *
40  *  Dynamic loading can be implemented be searching for shared libraries
41  *  that contain a jtag_interface structure that can added to this list.
42  */
43
44 #if BUILD_ZY1000 == 1
45 extern jtag_interface_t zy1000_interface;
46 #elif defined(BUILD_MINIDRIVER_DUMMY)
47 extern jtag_interface_t minidummy_interface;
48 #else // standard drivers
49 #if BUILD_PARPORT == 1
50 extern jtag_interface_t parport_interface;
51 #endif
52 #if BUILD_DUMMY == 1
53 extern jtag_interface_t dummy_interface;
54 #endif
55 #if BUILD_FT2232_FTD2XX == 1
56 extern jtag_interface_t ft2232_interface;
57 #endif
58 #if BUILD_FT2232_LIBFTDI == 1
59 extern jtag_interface_t ft2232_interface;
60 #endif
61 #if BUILD_AMTJTAGACCEL == 1
62 extern jtag_interface_t amt_jtagaccel_interface;
63 #endif
64 #if BUILD_EP93XX == 1
65 extern jtag_interface_t ep93xx_interface;
66 #endif
67 #if BUILD_AT91RM9200 == 1
68 extern jtag_interface_t at91rm9200_interface;
69 #endif
70 #if BUILD_GW16012 == 1
71 extern jtag_interface_t gw16012_interface;
72 #endif
73 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
74 extern jtag_interface_t presto_interface;
75 #endif
76 #if BUILD_USBPROG == 1
77 extern jtag_interface_t usbprog_interface;
78 #endif
79 #if BUILD_JLINK == 1
80 extern jtag_interface_t jlink_interface;
81 #endif
82 #if BUILD_VSLLINK == 1
83 extern jtag_interface_t vsllink_interface;
84 #endif
85 #if BUILD_RLINK == 1
86 extern jtag_interface_t rlink_interface;
87 #endif
88 #if BUILD_ARMJTAGEW == 1
89 extern jtag_interface_t armjtagew_interface;
90 #endif
91 #endif // standard drivers
92
93 /**
94  * The list of built-in JTAG interfaces, containing entries for those
95  * drivers that were enabled by the @c configure script.
96  *
97  * The list should be defined to contain either one minidriver interface
98  * or some number of standard driver interfaces, never both.
99  */
100 jtag_interface_t *jtag_interfaces[] = {
101 #if BUILD_ZY1000 == 1
102                 &zy1000_interface,
103 #elif defined(BUILD_MINIDRIVER_DUMMY)
104                 &minidummy_interface,
105 #else // standard drivers
106 #if BUILD_PARPORT == 1
107                 &parport_interface,
108 #endif
109 #if BUILD_DUMMY == 1
110                 &dummy_interface,
111 #endif
112 #if BUILD_FT2232_FTD2XX == 1
113                 &ft2232_interface,
114 #endif
115 #if BUILD_FT2232_LIBFTDI == 1
116                 &ft2232_interface,
117 #endif
118 #if BUILD_AMTJTAGACCEL == 1
119                 &amt_jtagaccel_interface,
120 #endif
121 #if BUILD_EP93XX == 1
122                 &ep93xx_interface,
123 #endif
124 #if BUILD_AT91RM9200 == 1
125                 &at91rm9200_interface,
126 #endif
127 #if BUILD_GW16012 == 1
128                 &gw16012_interface,
129 #endif
130 #if BUILD_PRESTO_LIBFTDI == 1 || BUILD_PRESTO_FTD2XX == 1
131                 &presto_interface,
132 #endif
133 #if BUILD_USBPROG == 1
134                 &usbprog_interface,
135 #endif
136 #if BUILD_JLINK == 1
137                 &jlink_interface,
138 #endif
139 #if BUILD_VSLLINK == 1
140                 &vsllink_interface,
141 #endif
142 #if BUILD_RLINK == 1
143                 &rlink_interface,
144 #endif
145 #if BUILD_ARMJTAGEW == 1
146                 &armjtagew_interface,
147 #endif
148 #endif // standard drivers
149                 NULL,
150         };
151
152 void jtag_interface_modules_load(const char *path)
153 {
154         // @todo: implement dynamic module loading for JTAG interface drivers
155 }