1 /*************************************************************************** 2 * Copyright (C) 2009 - 2010 by Simon Qian <SimonQian@SimonQian.com> * 3 * * 4 * This program is free software; you can redistribute it and/or modify * 5 * it under the terms of the GNU General Public License as published by * 6 * the Free Software Foundation; either version 2 of the License, or * 7 * (at your option) any later version. * 8 * * 9 * This program is distributed in the hope that it will be useful, * 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 12 * GNU General Public License for more details. * 13 * * 14 * You should have received a copy of the GNU General Public License * 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 16 ***************************************************************************/ 17 18 #ifndef OPENOCD_JTAG_DRIVERS_VERSALOON_USBTOXXX_USBTOXXX_H 19 #define OPENOCD_JTAG_DRIVERS_VERSALOON_USBTOXXX_USBTOXXX_H 20 21 RESULT usbtoxxx_init(void); 22 RESULT usbtoxxx_fini(void); 23 RESULT usbtoxxx_execute_command(void); 24 25 #define USB_TO_XXX_ABILITIES_LEN 12 26 extern uint8_t usbtoxxx_abilities[USB_TO_XXX_ABILITIES_LEN]; 27 bool usbtoxxx_interface_supported(uint8_t cmd); 28 29 /* USB_TO_INFO */ 30 RESULT usbtoinfo_get_abilities(uint8_t abilities[USB_TO_XXX_ABILITIES_LEN]); 31 32 /* USB_TO_DELAY */ 33 RESULT usbtodelay_delay(uint16_t dly); 34 RESULT usbtodelay_delayms(uint16_t ms); 35 RESULT usbtodelay_delayus(uint16_t us); 36 37 /* USB_TO_USART */ 38 RESULT usbtousart_init(uint8_t interface_index); 39 RESULT usbtousart_fini(uint8_t interface_index); 40 RESULT usbtousart_config(uint8_t interface_index, uint32_t baudrate, 41 uint8_t datalength, uint8_t mode); 42 RESULT usbtousart_send(uint8_t interface_index, uint8_t *buf, uint16_t len); 43 RESULT usbtousart_receive(uint8_t interface_index, uint8_t *buf, uint16_t len); 44 RESULT usbtousart_status(uint8_t interface_index, 45 struct usart_status_t *status); 46 47 /* USB_TO_SPI */ 48 RESULT usbtospi_init(uint8_t interface_index); 49 RESULT usbtospi_fini(uint8_t interface_index); 50 RESULT usbtospi_config(uint8_t interface_index, uint32_t kHz, uint8_t mode); 51 RESULT usbtospi_io(uint8_t interface_index, uint8_t *out, uint8_t *in, 52 uint16_t bytelen); 53 54 /* USB_TO_GPIO */ 55 RESULT usbtogpio_init(uint8_t interface_index); 56 RESULT usbtogpio_fini(uint8_t interface_index); 57 RESULT usbtogpio_config(uint8_t interface_index, uint32_t mask, 58 uint32_t dir_mask, uint32_t pull_en_mask, 59 uint32_t input_pull_mask); 60 RESULT usbtogpio_in(uint8_t interface_index, uint32_t mask, uint32_t *value); 61 RESULT usbtogpio_out(uint8_t interface_index, uint32_t mask, uint32_t value); 62 63 /* USB_TO_ISSP */ 64 RESULT usbtoissp_init(uint8_t interface_index); 65 RESULT usbtoissp_fini(uint8_t interface_index); 66 RESULT usbtoissp_enter_program_mode(uint8_t interface_index, uint8_t mode); 67 RESULT usbtoissp_leave_program_mode(uint8_t interface_index, uint8_t mode); 68 RESULT usbtoissp_wait_and_poll(uint8_t interface_index); 69 RESULT usbtoissp_vector(uint8_t interface_index, uint8_t operate, uint8_t addr, 70 uint8_t data, uint8_t *buf); 71 72 /* USB_TO_LPCICP */ 73 RESULT usbtolpcicp_init(uint8_t interface_index); 74 RESULT usbtolpcicp_fini(uint8_t interface_index); 75 RESULT usbtolpcicp_config(uint8_t interface_index); 76 RESULT usbtolpcicp_enter_program_mode(uint8_t interface_index); 77 RESULT usbtolpcicp_in(uint8_t interface_index, uint8_t *buff, uint16_t len); 78 RESULT usbtolpcicp_out(uint8_t interface_index, uint8_t *buff, uint16_t len); 79 RESULT usbtolpcicp_poll_ready(uint8_t interface_index, uint8_t data, 80 uint8_t *ret, uint8_t setmask, uint8_t clearmask, uint16_t pollcnt); 81 82 /* USB_TO_JTAG_LL */ 83 RESULT usbtojtagll_init(uint8_t interface_index); 84 RESULT usbtojtagll_fini(uint8_t interface_index); 85 RESULT usbtojtagll_config(uint8_t interface_index, uint32_t kHz); 86 RESULT usbtojtagll_tms(uint8_t interface_index, uint8_t *tms, uint8_t bytelen); 87 RESULT usbtojtagll_tms_clocks(uint8_t interface_index, uint32_t bytelen, 88 uint8_t tms); 89 RESULT usbtojtagll_scan(uint8_t interface_index, uint8_t *data, 90 uint16_t bitlen, uint8_t tms_before_valid, 91 uint8_t tms_before, uint8_t tms_after0, 92 uint8_t tms_after1); 93 94 /* USB_TO_JTAG_HL */ 95 RESULT usbtojtaghl_init(uint8_t interface_index); 96 RESULT usbtojtaghl_fini(uint8_t interface_index); 97 RESULT usbtojtaghl_config(uint8_t interface_index, uint32_t kHz, uint8_t ub, 98 uint8_t ua, uint16_t bb, uint16_t ba); 99 RESULT usbtojtaghl_ir(uint8_t interface_index, uint8_t *ir, uint16_t bitlen, 100 uint8_t idle, uint8_t want_ret); 101 RESULT usbtojtaghl_dr(uint8_t interface_index, uint8_t *dr, uint16_t bitlen, 102 uint8_t idle, uint8_t want_ret); 103 RESULT usbtojtaghl_tms(uint8_t interface_index, uint8_t *tms, uint16_t bitlen); 104 RESULT usbtojtaghl_runtest(uint8_t interface_index, uint32_t cycles); 105 RESULT usbtojtaghl_register_callback(uint8_t index, jtag_callback_t send_callback, 106 jtag_callback_t receive_callback); 107 108 /* USB_TO_JTAG_RAW */ 109 RESULT usbtojtagraw_init(uint8_t interface_index); 110 RESULT usbtojtagraw_fini(uint8_t interface_index); 111 RESULT usbtojtagraw_config(uint8_t interface_index, uint32_t kHz); 112 RESULT usbtojtagraw_execute(uint8_t interface_index, uint8_t *tdi, 113 uint8_t *tms, uint8_t *tdo, uint32_t bitlen); 114 115 /* USB_TO_C2 */ 116 RESULT usbtoc2_init(uint8_t interface_index); 117 RESULT usbtoc2_fini(uint8_t interface_index); 118 RESULT usbtoc2_writeaddr(uint8_t interface_index, uint8_t addr); 119 RESULT usbtoc2_readaddr(uint8_t interface_index, uint8_t *data); 120 RESULT usbtoc2_writedata(uint8_t interface_index, uint8_t *buf, uint8_t len); 121 RESULT usbtoc2_readdata(uint8_t interface_index, uint8_t *buf, uint8_t len); 122 123 /* USB_TO_I2C */ 124 RESULT usbtoi2c_init(uint8_t interface_index); 125 RESULT usbtoi2c_fini(uint8_t interface_index); 126 RESULT usbtoi2c_config(uint8_t interface_index, uint16_t kHz, 127 uint16_t byte_interval, uint16_t max_dly); 128 RESULT usbtoi2c_read(uint8_t interface_index, uint16_t chip_addr, 129 uint8_t *data, uint16_t data_len, uint8_t stop, 130 bool nacklast); 131 RESULT usbtoi2c_write(uint8_t interface_index, uint16_t chip_addr, 132 uint8_t *data, uint16_t data_len, uint8_t stop); 133 134 /* USB_TO_MSP430_JTAG */ 135 RESULT usbtomsp430jtag_init(uint8_t interface_index); 136 RESULT usbtomsp430jtag_fini(uint8_t interface_index); 137 RESULT usbtomsp430jtag_config(uint8_t interface_index, uint8_t has_test); 138 RESULT usbtomsp430jtag_ir(uint8_t interface_index, uint8_t *ir, 139 uint8_t want_ret); 140 RESULT usbtomsp430jtag_dr(uint8_t interface_index, uint32_t *dr, 141 uint8_t bitlen, uint8_t want_ret); 142 RESULT usbtomsp430jtag_tclk(uint8_t interface_index, uint8_t value); 143 RESULT usbtomsp430jtag_tclk_strobe(uint8_t interface_index, uint16_t cnt); 144 RESULT usbtomsp430jtag_reset(uint8_t interface_index); 145 RESULT usbtomsp430jtag_poll(uint8_t interface_index, uint32_t dr, 146 uint32_t mask, uint32_t value, uint8_t len, 147 uint16_t poll_cnt, uint8_t toggle_tclk); 148 149 /* USB_TO_MSP430_SBW */ 150 RESULT usbtomsp430sbw_init(uint8_t interface_index); 151 RESULT usbtomsp430sbw_fini(uint8_t interface_index); 152 RESULT usbtomsp430sbw_config(uint8_t interface_index, uint8_t has_test); 153 RESULT usbtomsp430sbw_ir(uint8_t interface_index, uint8_t *ir, 154 uint8_t want_ret); 155 RESULT usbtomsp430sbw_dr(uint8_t interface_index, uint32_t *dr, 156 uint8_t bitlen, uint8_t want_ret); 157 RESULT usbtomsp430sbw_tclk(uint8_t interface_index, uint8_t value); 158 RESULT usbtomsp430sbw_tclk_strobe(uint8_t interface_index, uint16_t cnt); 159 RESULT usbtomsp430sbw_reset(uint8_t interface_index); 160 RESULT usbtomsp430sbw_poll(uint8_t interface_index, uint32_t dr, uint32_t mask, 161 uint32_t value, uint8_t len, uint16_t poll_cnt, 162 uint8_t toggle_tclk); 163 164 /* USB_TO_POWER */ 165 RESULT usbtopwr_init(uint8_t interface_index); 166 RESULT usbtopwr_fini(uint8_t interface_index); 167 RESULT usbtopwr_config(uint8_t interface_index); 168 RESULT usbtopwr_output(uint8_t interface_index, uint16_t mV); 169 170 /* USB_TO_POLL */ 171 RESULT usbtopoll_start(uint16_t retry_cnt, uint16_t interval_us); 172 RESULT usbtopoll_end(void); 173 RESULT usbtopoll_checkok(uint8_t equ, uint16_t offset, uint8_t size, 174 uint32_t mask, uint32_t value); 175 RESULT usbtopoll_checkfail(uint8_t equ, uint16_t offset, uint8_t size, 176 uint32_t mask, uint32_t value); 177 RESULT usbtopoll_verifybuff(uint16_t offset, uint16_t size, uint8_t *buff); 178 179 /* USB_TO_SWD */ 180 RESULT usbtoswd_init(uint8_t interface_index); 181 RESULT usbtoswd_fini(uint8_t interface_index); 182 RESULT usbtoswd_config(uint8_t interface_index, uint8_t trn, uint16_t retry, 183 uint16_t dly); 184 RESULT usbtoswd_seqout(uint8_t interface_index, const uint8_t *data, 185 uint16_t bitlen); 186 RESULT usbtoswd_seqin(uint8_t interface_index, uint8_t *data, uint16_t bitlen); 187 RESULT usbtoswd_transact(uint8_t interface_index, uint8_t request, 188 uint32_t *data, uint8_t *ack); 189 190 /* USB_TO_SWIM */ 191 RESULT usbtoswim_init(uint8_t interface_index); 192 RESULT usbtoswim_fini(uint8_t interface_index); 193 RESULT usbtoswim_config(uint8_t interface_index, uint8_t mHz, uint8_t cnt0, 194 uint8_t cnt1); 195 RESULT usbtoswim_srst(uint8_t interface_index); 196 RESULT usbtoswim_wotf(uint8_t interface_index, uint8_t *data, 197 uint16_t bytelen, uint32_t addr); 198 RESULT usbtoswim_rotf(uint8_t interface_index, uint8_t *data, 199 uint16_t bytelen, uint32_t addr); 200 RESULT usbtoswim_sync(uint8_t interface_index, uint8_t mHz); 201 RESULT usbtoswim_enable(uint8_t interface_index); 202 203 /* USB_TO_BDM */ 204 RESULT usbtobdm_init(uint8_t interface_index); 205 RESULT usbtobdm_fini(uint8_t interface_index); 206 RESULT usbtobdm_sync(uint8_t interface_index, uint16_t *khz); 207 RESULT usbtobdm_transact(uint8_t interface_index, uint8_t *out, 208 uint8_t outlen, uint8_t *in, uint8_t inlen, uint8_t delay, uint8_t ack); 209 210 /* USB_TO_DUSI */ 211 RESULT usbtodusi_init(uint8_t interface_index); 212 RESULT usbtodusi_fini(uint8_t interface_index); 213 RESULT usbtodusi_config(uint8_t interface_index, uint32_t kHz, uint8_t mode); 214 RESULT usbtodusi_io(uint8_t interface_index, uint8_t *mo, uint8_t *mi, 215 uint8_t *so, uint8_t *si, uint32_t bitlen); 216 217 /* USB_TO_MICROWIRE */ 218 RESULT usbtomicrowire_init(uint8_t interface_index); 219 RESULT usbtomicrowire_fini(uint8_t interface_index); 220 RESULT usbtomicrowire_config(uint8_t interface_index, uint16_t kHz, 221 uint8_t sel_polarity); 222 RESULT usbtomicrowire_transport(uint8_t interface_index, 223 uint32_t opcode, uint8_t opcode_bitlen, 224 uint32_t addr, uint8_t addr_bitlen, 225 uint32_t data, uint8_t data_bitlen, 226 uint8_t *reply, uint8_t reply_bitlen); 227 RESULT usbtomicrowire_poll(uint8_t interface_index, uint16_t interval_us, 228 uint16_t retry_cnt); 229 230 /* USB_TO_PWM */ 231 RESULT usbtopwm_init(uint8_t interface_index); 232 RESULT usbtopwm_fini(uint8_t interface_index); 233 RESULT usbtopwm_config(uint8_t interface_index, uint16_t kHz, uint8_t mode); 234 RESULT usbtopwm_out(uint8_t interface_index, uint16_t count, uint16_t *rate); 235 RESULT usbtopwm_in(uint8_t interface_index, uint16_t count, uint16_t *rate); 236 237 #endif /* OPENOCD_JTAG_DRIVERS_VERSALOON_USBTOXXX_USBTOXXX_H */ 238