X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fminidriver.h;h=e85d9fbdee02a52ec464f541d963b0e93e1f4c5a;hp=392a1906eec8272ee347f0ec824ed4a49c8b0273;hb=08d4411b59dd8bd0e7d8009003b71d23acbf6eee;hpb=0535a9245632e2cf12d8eaae8c4a9b1cc0bc66c6 diff --git a/src/jtag/minidriver.h b/src/jtag/minidriver.h index 392a1906ee..e85d9fbdee 100644 --- a/src/jtag/minidriver.h +++ b/src/jtag/minidriver.h @@ -21,18 +21,20 @@ * 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. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ***************************************************************************/ + #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,73 +46,31 @@ * - 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" +/* this header will be provided by the minidriver implementation, */ +/* and it may provide additional declarations that must be defined. */ +#include -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 - -int interface_jtag_add_ir_scan( - int num_fields, const struct scan_field* fields, +int interface_jtag_add_ir_scan(struct jtag_tap *active, + const struct scan_field *fields, tap_state_t endstate); int interface_jtag_add_plain_ir_scan( - int num_fields, const struct scan_field* fields, + int num_bits, const uint8_t *out_bits, uint8_t *in_bits, tap_state_t endstate); -int interface_jtag_add_dr_scan( - int num_fields, const struct scan_field* fields, +int interface_jtag_add_dr_scan(struct jtag_tap *active, + int num_fields, const struct scan_field *fields, tap_state_t endstate); int interface_jtag_add_plain_dr_scan( - int num_fields, const struct scan_field* fields, + int num_bits, const uint8_t *out_bits, uint8_t *in_bits, tap_state_t endstate); int interface_jtag_add_tlr(void); -int interface_jtag_add_pathmove(int num_states, const tap_state_t* path); +int interface_jtag_add_pathmove(int num_states, const tap_state_t *path); int interface_jtag_add_runtest(int num_cycles, tap_state_t endstate); +int interface_add_tms_seq(unsigned num_bits, + const uint8_t *bits, enum tap_state state); + /** * This drives the actual srst and trst pins. srst will always be 0 * if jtag_reset_config & RESET_SRST_PULLS_TRST != 0 and ditto for @@ -130,4 +90,4 @@ int interface_jtag_execute_queue(void); */ int default_interface_jtag_execute_queue(void); -#endif // MINIDRIVER_H +#endif /* MINIDRIVER_H */