From 879a04cc6bc2bdf62b19b974524e1f15f2c9da8e Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Wed, 2 Dec 2009 17:30:33 -0800 Subject: [PATCH] remove #if HAVE_JTAG_INTERFACE_H from minidriver.h Adds two "minidriver_imp.h" files, so the right one is allowed to be "#included" by the Makefile logic. --- src/jtag/Makefile.am | 7 ++++ src/jtag/drivers/Makefile.am | 1 + src/jtag/drivers/minidriver_imp.h | 47 +++++++++++++++++++++++ src/jtag/minidriver.h | 56 +++------------------------- src/jtag/minidriver/minidriver_imp.h | 44 ++++++++++++++++++++++ 5 files changed, 105 insertions(+), 50 deletions(-) create mode 100644 src/jtag/drivers/minidriver_imp.h create mode 100644 src/jtag/minidriver/minidriver_imp.h diff --git a/src/jtag/Makefile.am b/src/jtag/Makefile.am index c735897e..421987c4 100644 --- a/src/jtag/Makefile.am +++ b/src/jtag/Makefile.am @@ -11,6 +11,9 @@ libjtag_la_LIBADD = if MINIDRIVER +# for minidriver_imp.h +AM_CPPFLAGS += -I$(srcdir)/minidriver + if ZY1000 DRIVERFILES += zy1000/zy1000.c AM_CPPFLAGS += -I$(srcdir)/zy1000 @@ -27,6 +30,9 @@ DRIVERFILES += commands.c SUBDIRS += drivers libjtag_la_LIBADD += $(top_builddir)/src/jtag/drivers/libocdjtagdrivers.la +# for minidriver_imp.h +AM_CPPFLAGS += -I$(srcdir)/drivers + endif # endif // MINIDRIVER @@ -43,6 +49,7 @@ noinst_HEADERS = \ interfaces.h \ minidriver.h \ jtag.h \ + minidriver/minidriver_imp.h \ minidummy/jtag_minidriver.h EXTRA_DIST = startup.tcl diff --git a/src/jtag/drivers/Makefile.am b/src/jtag/drivers/Makefile.am index 0a007b4c..15fbae39 100644 --- a/src/jtag/drivers/Makefile.am +++ b/src/jtag/drivers/Makefile.am @@ -65,6 +65,7 @@ endif noinst_HEADERS = \ bitbang.h \ bitq.h \ + minidriver_imp.h \ rlink.h \ rlink_dtc_cmd.h \ rlink_ep1_cmd.h \ diff --git a/src/jtag/drivers/minidriver_imp.h b/src/jtag/drivers/minidriver_imp.h new file mode 100644 index 00000000..f60580c4 --- /dev/null +++ b/src/jtag/drivers/minidriver_imp.h @@ -0,0 +1,47 @@ +/*************************************************************************** + * Copyright (C) 2005 by Dominic Rath * + * Copyright (C) 2007,2008 Øyvind Harboe * + * Copyright (C) 2009 Zachary T Welch * + * * + * 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 diff --git a/src/jtag/minidriver.h b/src/jtag/minidriver.h index 392a1906..ea780faf 100644 --- a/src/jtag/minidriver.h +++ b/src/jtag/minidriver.h @@ -26,13 +26,14 @@ #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 @@ -44,54 +45,9 @@ * - 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, diff --git a/src/jtag/minidriver/minidriver_imp.h b/src/jtag/minidriver/minidriver_imp.h new file mode 100644 index 00000000..e3715140 --- /dev/null +++ b/src/jtag/minidriver/minidriver_imp.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2005 by Dominic Rath * + * Copyright (C) 2007,2008 Øyvind Harboe * + * Copyright (C) 2009 Zachary T Welch * + * * + * 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 -- 2.39.5