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.
 
 
 
 
 
 

162 lines
5.7 KiB

  1. /***************************************************************************
  2. * Copyright (C) 2013 Andes technology. *
  3. * Hsiangkai Wang <hkwang@andestech.com> *
  4. * *
  5. * This program is free software; you can redistribute it and/or modify *
  6. * it under the terms of the GNU General Public License as published by *
  7. * the Free Software Foundation; either version 2 of the License, or *
  8. * (at your option) any later version. *
  9. * *
  10. * This program is distributed in the hope that it will be useful, *
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  13. * GNU General Public License for more details. *
  14. * *
  15. * You should have received a copy of the GNU General Public License *
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>. *
  17. ***************************************************************************/
  18. #ifndef OPENOCD_TARGET_NDS32_AICE_H
  19. #define OPENOCD_TARGET_NDS32_AICE_H
  20. #include <jtag/aice/aice_port.h>
  21. int aice_read_reg_64(struct aice_port_s *aice, uint32_t num, uint64_t *val);
  22. int aice_write_reg_64(struct aice_port_s *aice, uint32_t num, uint64_t val);
  23. int aice_read_tlb(struct aice_port_s *aice, target_addr_t virtual_address,
  24. target_addr_t *physical_address);
  25. int aice_cache_ctl(struct aice_port_s *aice, uint32_t subtype, uint32_t address);
  26. int aice_set_retry_times(struct aice_port_s *aice, uint32_t a_retry_times);
  27. int aice_program_edm(struct aice_port_s *aice, char *command_sequence);
  28. int aice_set_command_mode(struct aice_port_s *aice,
  29. enum aice_command_mode command_mode);
  30. int aice_execute(struct aice_port_s *aice, uint32_t *instructions,
  31. uint32_t instruction_num);
  32. int aice_set_custom_srst_script(struct aice_port_s *aice, const char *script);
  33. int aice_set_custom_trst_script(struct aice_port_s *aice, const char *script);
  34. int aice_set_custom_restart_script(struct aice_port_s *aice, const char *script);
  35. int aice_set_count_to_check_dbger(struct aice_port_s *aice, uint32_t count_to_check);
  36. int aice_profiling(struct aice_port_s *aice, uint32_t interval, uint32_t iteration,
  37. uint32_t reg_no, uint32_t *samples, uint32_t *num_samples);
  38. static inline int aice_open(struct aice_port_s *aice, struct aice_port_param_s *param)
  39. {
  40. return aice->port->api->open(param);
  41. }
  42. static inline int aice_close(struct aice_port_s *aice)
  43. {
  44. return aice->port->api->close();
  45. }
  46. static inline int aice_reset(struct aice_port_s *aice)
  47. {
  48. return aice->port->api->reset();
  49. }
  50. static inline int aice_assert_srst(struct aice_port_s *aice,
  51. enum aice_srst_type_s srst)
  52. {
  53. return aice->port->api->assert_srst(aice->coreid, srst);
  54. }
  55. static inline int aice_run(struct aice_port_s *aice)
  56. {
  57. return aice->port->api->run(aice->coreid);
  58. }
  59. static inline int aice_halt(struct aice_port_s *aice)
  60. {
  61. return aice->port->api->halt(aice->coreid);
  62. }
  63. static inline int aice_step(struct aice_port_s *aice)
  64. {
  65. return aice->port->api->step(aice->coreid);
  66. }
  67. static inline int aice_read_register(struct aice_port_s *aice, uint32_t num,
  68. uint32_t *val)
  69. {
  70. return aice->port->api->read_reg(aice->coreid, num, val);
  71. }
  72. static inline int aice_write_register(struct aice_port_s *aice, uint32_t num,
  73. uint32_t val)
  74. {
  75. return aice->port->api->write_reg(aice->coreid, num, val);
  76. }
  77. static inline int aice_read_debug_reg(struct aice_port_s *aice, uint32_t addr,
  78. uint32_t *val)
  79. {
  80. return aice->port->api->read_debug_reg(aice->coreid, addr, val);
  81. }
  82. static inline int aice_write_debug_reg(struct aice_port_s *aice, uint32_t addr,
  83. const uint32_t val)
  84. {
  85. return aice->port->api->write_debug_reg(aice->coreid, addr, val);
  86. }
  87. static inline int aice_read_mem_unit(struct aice_port_s *aice, uint32_t addr,
  88. uint32_t size, uint32_t count, uint8_t *buffer)
  89. {
  90. return aice->port->api->read_mem_unit(aice->coreid, addr, size, count, buffer);
  91. }
  92. static inline int aice_write_mem_unit(struct aice_port_s *aice, uint32_t addr,
  93. uint32_t size, uint32_t count, const uint8_t *buffer)
  94. {
  95. return aice->port->api->write_mem_unit(aice->coreid, addr, size, count, buffer);
  96. }
  97. static inline int aice_read_mem_bulk(struct aice_port_s *aice, uint32_t addr,
  98. uint32_t length, uint8_t *buffer)
  99. {
  100. return aice->port->api->read_mem_bulk(aice->coreid, addr, length, buffer);
  101. }
  102. static inline int aice_write_mem_bulk(struct aice_port_s *aice, uint32_t addr,
  103. uint32_t length, const uint8_t *buffer)
  104. {
  105. return aice->port->api->write_mem_bulk(aice->coreid, addr, length, buffer);
  106. }
  107. static inline int aice_idcode(struct aice_port_s *aice, uint32_t *idcode,
  108. uint8_t *num_of_idcode)
  109. {
  110. return aice->port->api->idcode(idcode, num_of_idcode);
  111. }
  112. static inline int aice_state(struct aice_port_s *aice,
  113. enum aice_target_state_s *state)
  114. {
  115. return aice->port->api->state(aice->coreid, state);
  116. }
  117. static inline int aice_set_jtag_clock(struct aice_port_s *aice, uint32_t a_clock)
  118. {
  119. return aice->port->api->set_jtag_clock(a_clock);
  120. }
  121. static inline int aice_memory_access(struct aice_port_s *aice,
  122. enum nds_memory_access a_access)
  123. {
  124. return aice->port->api->memory_access(aice->coreid, a_access);
  125. }
  126. static inline int aice_memory_mode(struct aice_port_s *aice,
  127. enum nds_memory_select mem_select)
  128. {
  129. return aice->port->api->memory_mode(aice->coreid, mem_select);
  130. }
  131. static inline int aice_set_data_endian(struct aice_port_s *aice,
  132. enum aice_target_endian target_data_endian)
  133. {
  134. return aice->port->api->set_data_endian(aice->coreid, target_data_endian);
  135. }
  136. #endif /* OPENOCD_TARGET_NDS32_AICE_H */