if MINIDRIVER
+# for minidriver_imp.h
+AM_CPPFLAGS += -I$(srcdir)/minidriver
+
if ZY1000
DRIVERFILES += zy1000/zy1000.c
AM_CPPFLAGS += -I$(srcdir)/zy1000
SUBDIRS += drivers
libjtag_la_LIBADD += $(top_builddir)/src/jtag/drivers/libocdjtagdrivers.la
+# for minidriver_imp.h
+AM_CPPFLAGS += -I$(srcdir)/drivers
+
endif
# endif // MINIDRIVER
interfaces.h \
minidriver.h \
jtag.h \
+ minidriver/minidriver_imp.h \
minidummy/jtag_minidriver.h
EXTRA_DIST = startup.tcl
noinst_HEADERS = \
bitbang.h \
bitq.h \
+ minidriver_imp.h \
rlink.h \
rlink_dtc_cmd.h \
rlink_ep1_cmd.h \
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005 by Dominic Rath <Dominic.Rath@gmx.de> *
+ * Copyright (C) 2007,2008 Øyvind Harboe <oyvind.harboe@zylin.com> *
+ * Copyright (C) 2009 Zachary T Welch <zw@superlucidity.net> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef MINIDRIVER_IMP_H
+#define MINIDRIVER_IMP_H
+
+#include "commands.h"
+
+static inline void interface_jtag_alloc_in_value32(struct scan_field *field)
+{
+ field->in_value = (uint8_t *)cmd_queue_alloc(4);
+}
+
+static inline void interface_jtag_add_scan_check_alloc(struct scan_field *field)
+{
+ unsigned num_bytes = DIV_ROUND_UP(field->num_bits, 8);
+ field->in_value = (uint8_t *)cmd_queue_alloc(num_bytes);
+}
+
+void interface_jtag_add_dr_out(struct jtag_tap* tap,
+ int num_fields, const int* num_bits, const uint32_t* value,
+ tap_state_t end_state);
+
+void interface_jtag_add_callback(jtag_callback1_t f, jtag_callback_data_t data0);
+
+void interface_jtag_add_callback4(jtag_callback_t f, jtag_callback_data_t data0,
+ jtag_callback_data_t data1, jtag_callback_data_t data2,
+ jtag_callback_data_t data3);
+
+#endif // MINIDRIVER_IMP_H
#ifndef MINIDRIVER_H
#define MINIDRIVER_H
-/* @page jtagminidriver JTAG Mini-Driver
+/**
+ * @page jtagminidriver JTAG Mini-Driver
*
* The JTAG minidriver interface allows the definition of alternate
* interface functions, instead of the built-in asynchronous driver
* module that is used by the standard JTAG interface drivers.
*
- * In addtion to the functions defined in the c minidriver.h file, the
+ * In addtion to the functions defined in the @c minidriver.h file, the
* @c jtag_minidriver.h file must declare the following functions (or
* define static inline versions of them):
* - jtag_add_callback
* - default_interface_jtag_execute_queue()
*/
-#ifdef HAVE_JTAG_MINIDRIVER_H
-
-#include "jtag_minidriver.h"
-
-static inline void interface_jtag_alloc_in_value32(struct scan_field *field)
-{
- field->in_value = field->intmp;
-}
-
-static inline void interface_jtag_add_scan_check_alloc(struct scan_field *field)
-{
- /* We're executing this synchronously, so try to use local storage. */
- if (field->num_bits > 32)
- {
- unsigned num_bytes = DIV_ROUND_UP(field->num_bits, 8);
- field->in_value = (uint8_t *)malloc(num_bytes);
- field->allocated = 1;
- }
- else
- field->in_value = field->intmp;
-}
-
-#else
-
-#include "commands.h"
-
-static inline void interface_jtag_alloc_in_value32(struct scan_field *field)
-{
- field->in_value = (uint8_t *)cmd_queue_alloc(4);
-}
-
-static inline void interface_jtag_add_scan_check_alloc(struct scan_field *field)
-{
- unsigned num_bytes = DIV_ROUND_UP(field->num_bits, 8);
- field->in_value = (uint8_t *)cmd_queue_alloc(num_bytes);
-}
-
-void interface_jtag_add_dr_out(struct jtag_tap* tap,
- int num_fields, const int* num_bits, const uint32_t* value,
- tap_state_t end_state);
-
-void interface_jtag_add_callback(jtag_callback1_t f, jtag_callback_data_t data0);
-
-void interface_jtag_add_callback4(jtag_callback_t f, jtag_callback_data_t data0,
- jtag_callback_data_t data1, jtag_callback_data_t data2,
- jtag_callback_data_t data3);
-
-#endif
+// this header will be provided by the minidriver implementation,
+// and it may provide additional declarations that must be defined.
+#include "minidriver_imp.h"
int interface_jtag_add_ir_scan(
int num_fields, const struct scan_field* fields,
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005 by Dominic Rath <Dominic.Rath@gmx.de> *
+ * Copyright (C) 2007,2008 Øyvind Harboe <oyvind.harboe@zylin.com> *
+ * Copyright (C) 2009 Zachary T Welch <zw@superlucidity.net> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef MINIDRIVER_IMP_H
+#define MINIDRIVER_IMP_H
+
+#include "jtag_minidriver.h"
+
+static inline void interface_jtag_alloc_in_value32(struct scan_field *field)
+{
+ field->in_value = field->intmp;
+}
+
+static inline void interface_jtag_add_scan_check_alloc(struct scan_field *field)
+{
+ /* We're executing this synchronously, so try to use local storage. */
+ if (field->num_bits > 32)
+ {
+ unsigned num_bytes = DIV_ROUND_UP(field->num_bits, 8);
+ field->in_value = (uint8_t *)malloc(num_bytes);
+ field->allocated = 1;
+ }
+ else
+ field->in_value = field->intmp;
+}
+
+#endif // MINIDRIVER_IMP_H