You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

91 lines
4.0 KiB

  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 Zachary T Welch *
  9. * zw@superlucidity.net *
  10. * *
  11. * This program is free software; you can redistribute it and/or modify *
  12. * it under the terms of the GNU General Public License as published by *
  13. * the Free Software Foundation; either version 2 of the License, or *
  14. * (at your option) any later version. *
  15. * *
  16. * This program is distributed in the hope that it will be useful, *
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  19. * GNU General Public License for more details. *
  20. * *
  21. * You should have received a copy of the GNU General Public License *
  22. * along with this program. If not, see <http://www.gnu.org/licenses/>. *
  23. ***************************************************************************/
  24. #ifndef OPENOCD_JTAG_MINIDRIVER_H
  25. #define OPENOCD_JTAG_MINIDRIVER_H
  26. /**
  27. * @page jtagminidriver JTAG Mini-Driver
  28. *
  29. * The JTAG minidriver interface allows the definition of alternate
  30. * interface functions, instead of the built-in asynchronous driver
  31. * module that is used by the standard JTAG interface drivers.
  32. *
  33. * In addtion to the functions defined in the @c minidriver.h file, the
  34. * @c jtag_minidriver.h file must declare the following functions (or
  35. * define static inline versions of them):
  36. * - jtag_add_callback
  37. * - jtag_add_callback4
  38. *
  39. * The following core functions are declared in this file for use by
  40. * the minidriver and do @b not need to be defined by an implementation:
  41. * - default_interface_jtag_execute_queue()
  42. */
  43. /* this header will be provided by the minidriver implementation, */
  44. /* and it may provide additional declarations that must be defined. */
  45. #include <jtag/drivers/minidriver_imp.h>
  46. int interface_jtag_add_ir_scan(struct jtag_tap *active,
  47. const struct scan_field *fields,
  48. tap_state_t endstate);
  49. int interface_jtag_add_plain_ir_scan(
  50. int num_bits, const uint8_t *out_bits, uint8_t *in_bits,
  51. tap_state_t endstate);
  52. int interface_jtag_add_dr_scan(struct jtag_tap *active,
  53. int num_fields, const struct scan_field *fields,
  54. tap_state_t endstate);
  55. int interface_jtag_add_plain_dr_scan(
  56. int num_bits, const uint8_t *out_bits, uint8_t *in_bits,
  57. tap_state_t endstate);
  58. int interface_jtag_add_tlr(void);
  59. int interface_jtag_add_pathmove(int num_states, const tap_state_t *path);
  60. int interface_jtag_add_runtest(int num_cycles, tap_state_t endstate);
  61. int interface_add_tms_seq(unsigned num_bits,
  62. const uint8_t *bits, enum tap_state state);
  63. /**
  64. * This drives the actual srst and trst pins. srst will always be 0
  65. * if jtag_reset_config & RESET_SRST_PULLS_TRST != 0 and ditto for
  66. * trst.
  67. *
  68. * the higher level jtag_add_reset will invoke jtag_add_tlr() if
  69. * appropriate
  70. */
  71. int interface_jtag_add_reset(int trst, int srst);
  72. int interface_jtag_add_sleep(uint32_t us);
  73. int interface_jtag_add_clocks(int num_cycles);
  74. int interface_jtag_execute_queue(void);
  75. /**
  76. * Calls the interface callback to execute the queue. This routine
  77. * is used by the JTAG driver layer and should not be called directly.
  78. */
  79. int default_interface_jtag_execute_queue(void);
  80. #endif /* OPENOCD_JTAG_MINIDRIVER_H */