092368ebaedc1281644ffada45371b8b45c85e1d
[fw/openocd] / src / jtag / drivers / versaloon / usbtoxxx / usbtoxxx.h
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, write to the                         *
16  *   Free Software Foundation, Inc.,                                       *
17  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
18  ***************************************************************************/
19 #ifndef __USBTOXXX_H_INCLUDED__
20 #define __USBTOXXX_H_INCLUDED__
21
22 RESULT usbtoxxx_init(void);
23 RESULT usbtoxxx_fini(void);
24 RESULT usbtoxxx_execute_command(void);
25
26 #define USB_TO_XXX_ABILITIES_LEN                        12
27 extern uint8_t usbtoxxx_abilities[USB_TO_XXX_ABILITIES_LEN];
28 bool usbtoxxx_interface_supported(uint8_t cmd);
29
30 // USB_TO_INFO
31 RESULT usbtoinfo_get_abilities(uint8_t abilities[USB_TO_XXX_ABILITIES_LEN]);
32
33 // USB_TO_DELAY
34 RESULT usbtodelay_delay(uint16_t dly);
35 RESULT usbtodelay_delayms(uint16_t ms);
36 RESULT usbtodelay_delayus(uint16_t us);
37
38
39
40 // USB_TO_USART
41 RESULT usbtousart_init(uint8_t interface_index);
42 RESULT usbtousart_fini(uint8_t interface_index);
43 RESULT usbtousart_config(uint8_t interface_index, uint32_t baudrate,
44                                                         uint8_t datalength, uint8_t mode);
45 RESULT usbtousart_send(uint8_t interface_index, uint8_t *buf, uint16_t len);
46 RESULT usbtousart_receive(uint8_t interface_index, uint8_t *buf, uint16_t len);
47 RESULT usbtousart_status(uint8_t interface_index,
48                                                         struct usart_status_t *status);
49
50 // USB_TO_SPI
51 RESULT usbtospi_init(uint8_t interface_index);
52 RESULT usbtospi_fini(uint8_t interface_index);
53 RESULT usbtospi_config(uint8_t interface_index, uint32_t kHz, uint8_t mode);
54 RESULT usbtospi_io(uint8_t interface_index, uint8_t *out, uint8_t *in,
55                                         uint16_t bytelen);
56
57
58
59 // USB_TO_GPIO
60 RESULT usbtogpio_init(uint8_t interface_index);
61 RESULT usbtogpio_fini(uint8_t interface_index);
62 RESULT usbtogpio_config(uint8_t interface_index, uint32_t mask,
63                                                 uint32_t dir_mask, uint32_t pull_en_mask,
64                                                 uint32_t input_pull_mask);
65 RESULT usbtogpio_in(uint8_t interface_index, uint32_t mask, uint32_t *value);
66 RESULT usbtogpio_out(uint8_t interface_index, uint32_t mask, uint32_t value);
67
68
69
70 // USB_TO_ISSP
71 RESULT usbtoissp_init(uint8_t interface_index);
72 RESULT usbtoissp_fini(uint8_t interface_index);
73 RESULT usbtoissp_enter_program_mode(uint8_t interface_index, uint8_t mode);
74 RESULT usbtoissp_leave_program_mode(uint8_t interface_index, uint8_t mode);
75 RESULT usbtoissp_wait_and_poll(uint8_t interface_index);
76 RESULT usbtoissp_vector(uint8_t interface_index, uint8_t operate, uint8_t addr,
77                                                 uint8_t data, uint8_t *buf);
78
79
80
81 // USB_TO_LPCICP
82 RESULT usbtolpcicp_init(uint8_t interface_index);
83 RESULT usbtolpcicp_fini(uint8_t interface_index);
84 RESULT usbtolpcicp_config(uint8_t interface_index);
85 RESULT usbtolpcicp_enter_program_mode(uint8_t interface_index);
86 RESULT usbtolpcicp_in(uint8_t interface_index, uint8_t *buff, uint16_t len);
87 RESULT usbtolpcicp_out(uint8_t interface_index, uint8_t *buff, uint16_t len);
88 RESULT usbtolpcicp_poll_ready(uint8_t interface_index, uint8_t data,
89                 uint8_t *ret, uint8_t setmask, uint8_t clearmask, uint16_t pollcnt);
90
91
92
93 // USB_TO_JTAG_LL
94 RESULT usbtojtagll_init(uint8_t interface_index);
95 RESULT usbtojtagll_fini(uint8_t interface_index);
96 RESULT usbtojtagll_config(uint8_t interface_index, uint32_t kHz);
97 RESULT usbtojtagll_tms(uint8_t interface_index, uint8_t *tms, uint8_t bytelen);
98 RESULT usbtojtagll_tms_clocks(uint8_t interface_index, uint32_t bytelen,
99                                                                 uint8_t tms);
100 RESULT usbtojtagll_scan(uint8_t interface_index, uint8_t* data,
101                                                 uint16_t bitlen, uint8_t tms_before_valid,
102                                                 uint8_t tms_before, uint8_t tms_after0,
103                                                 uint8_t tms_after1);
104
105
106
107 // USB_TO_JTAG_HL
108 RESULT usbtojtaghl_init(uint8_t interface_index);
109 RESULT usbtojtaghl_fini(uint8_t interface_index);
110 RESULT usbtojtaghl_config(uint8_t interface_index, uint32_t kHz, uint8_t ub,
111                                                   uint8_t ua, uint16_t bb, uint16_t ba);
112 RESULT usbtojtaghl_ir(uint8_t interface_index, uint8_t *ir, uint16_t bitlen,
113                                           uint8_t idle, uint8_t want_ret);
114 RESULT usbtojtaghl_dr(uint8_t interface_index, uint8_t *dr, uint16_t bitlen,
115                                           uint8_t idle, uint8_t want_ret);
116 RESULT usbtojtaghl_tms(uint8_t interface_index, uint8_t *tms, uint16_t bitlen);
117 RESULT usbtojtaghl_runtest(uint8_t interface_index, uint32_t cycles);
118 RESULT usbtojtaghl_register_callback(uint8_t index, jtag_callback_t send_callback,
119                                                                          jtag_callback_t receive_callback);
120
121
122
123 // USB_TO_JTAG_RAW
124 RESULT usbtojtagraw_init(uint8_t interface_index);
125 RESULT usbtojtagraw_fini(uint8_t interface_index);
126 RESULT usbtojtagraw_config(uint8_t interface_index, uint32_t kHz);
127 RESULT usbtojtagraw_execute(uint8_t interface_index, uint8_t *tdi,
128                                                         uint8_t *tms, uint8_t *tdo, uint32_t bitlen);
129
130
131
132
133 // USB_TO_C2
134 RESULT usbtoc2_init(uint8_t interface_index);
135 RESULT usbtoc2_fini(uint8_t interface_index);
136 RESULT usbtoc2_writeaddr(uint8_t interface_index, uint8_t addr);
137 RESULT usbtoc2_readaddr(uint8_t interface_index, uint8_t *data);
138 RESULT usbtoc2_writedata(uint8_t interface_index, uint8_t *buf, uint8_t len);
139 RESULT usbtoc2_readdata(uint8_t interface_index, uint8_t *buf, uint8_t len);
140
141
142
143 // USB_TO_I2C
144 RESULT usbtoi2c_init(uint8_t interface_index);
145 RESULT usbtoi2c_fini(uint8_t interface_index);
146 RESULT usbtoi2c_config(uint8_t interface_index, uint16_t kHz,
147                                                 uint16_t byte_interval, uint16_t max_dly);
148 RESULT usbtoi2c_read(uint8_t interface_index, uint16_t chip_addr,
149                                                 uint8_t *data, uint16_t data_len, uint8_t stop,
150                                                 bool nacklast);
151 RESULT usbtoi2c_write(uint8_t interface_index, uint16_t chip_addr,
152                                                 uint8_t *data, uint16_t data_len, uint8_t stop);
153
154
155
156 // USB_TO_MSP430_JTAG
157 RESULT usbtomsp430jtag_init(uint8_t interface_index);
158 RESULT usbtomsp430jtag_fini(uint8_t interface_index);
159 RESULT usbtomsp430jtag_config(uint8_t interface_index, uint8_t has_test);
160 RESULT usbtomsp430jtag_ir(uint8_t interface_index, uint8_t *ir,
161                                                         uint8_t want_ret);
162 RESULT usbtomsp430jtag_dr(uint8_t interface_index, uint32_t *dr,
163                                                         uint8_t bitlen, uint8_t want_ret);
164 RESULT usbtomsp430jtag_tclk(uint8_t interface_index, uint8_t value);
165 RESULT usbtomsp430jtag_tclk_strobe(uint8_t interface_index, uint16_t cnt);
166 RESULT usbtomsp430jtag_reset(uint8_t interface_index);
167 RESULT usbtomsp430jtag_poll(uint8_t interface_index, uint32_t dr,
168                                                         uint32_t mask, uint32_t value, uint8_t len,
169                                                         uint16_t poll_cnt, uint8_t toggle_tclk);
170
171
172
173 // USB_TO_MSP430_SBW
174 RESULT usbtomsp430sbw_init(uint8_t interface_index);
175 RESULT usbtomsp430sbw_fini(uint8_t interface_index);
176 RESULT usbtomsp430sbw_config(uint8_t interface_index, uint8_t has_test);
177 RESULT usbtomsp430sbw_ir(uint8_t interface_index, uint8_t *ir,
178                                                         uint8_t want_ret);
179 RESULT usbtomsp430sbw_dr(uint8_t interface_index, uint32_t *dr,
180                                                         uint8_t bitlen, uint8_t want_ret);
181 RESULT usbtomsp430sbw_tclk(uint8_t interface_index, uint8_t value);
182 RESULT usbtomsp430sbw_tclk_strobe(uint8_t interface_index, uint16_t cnt);
183 RESULT usbtomsp430sbw_reset(uint8_t interface_index);
184 RESULT usbtomsp430sbw_poll(uint8_t interface_index, uint32_t dr, uint32_t mask,
185                                                    uint32_t value, uint8_t len, uint16_t poll_cnt,
186                                                    uint8_t toggle_tclk);
187
188
189
190 // USB_TO_POWER
191 RESULT usbtopwr_init(uint8_t interface_index);
192 RESULT usbtopwr_fini(uint8_t interface_index);
193 RESULT usbtopwr_config(uint8_t interface_index);
194 RESULT usbtopwr_output(uint8_t interface_index, uint16_t mV);
195
196
197
198 // USB_TO_POLL
199 RESULT usbtopoll_start(uint16_t retry_cnt, uint16_t interval_us);
200 RESULT usbtopoll_end(void);
201 RESULT usbtopoll_checkok(uint8_t equ, uint16_t offset, uint8_t size,
202                                                         uint32_t mask, uint32_t value);
203 RESULT usbtopoll_checkfail(uint8_t equ, uint16_t offset, uint8_t size,
204                                                         uint32_t mask, uint32_t value);
205 RESULT usbtopoll_verifybuff(uint16_t offset, uint16_t size, uint8_t *buff);
206
207
208
209 // USB_TO_SWD
210 RESULT usbtoswd_init(uint8_t interface_index);
211 RESULT usbtoswd_fini(uint8_t interface_index);
212 RESULT usbtoswd_config(uint8_t interface_index, uint8_t trn, uint16_t retry,
213                                            uint16_t dly);
214 RESULT usbtoswd_seqout(uint8_t interface_index, uint8_t *data, uint16_t bitlen);
215 RESULT usbtoswd_seqin(uint8_t interface_index, uint8_t *data, uint16_t bitlen);
216 RESULT usbtoswd_transact(uint8_t interface_index, uint8_t request,
217                                                         uint32_t *data, uint8_t *ack);
218
219
220
221 // USB_TO_SWIM
222 RESULT usbtoswim_init(uint8_t interface_index);
223 RESULT usbtoswim_fini(uint8_t interface_index);
224 RESULT usbtoswim_config(uint8_t interface_index, uint8_t mHz, uint8_t cnt0,
225                                                 uint8_t cnt1);
226 RESULT usbtoswim_srst(uint8_t interface_index);
227 RESULT usbtoswim_wotf(uint8_t interface_index, uint8_t *data,
228                                                 uint16_t bytelen, uint32_t addr);
229 RESULT usbtoswim_rotf(uint8_t interface_index, uint8_t *data,
230                                                 uint16_t bytelen, uint32_t addr);
231 RESULT usbtoswim_sync(uint8_t interface_index, uint8_t mHz);
232 RESULT usbtoswim_enable(uint8_t interface_index);
233
234
235
236
237 // USB_TO_BDM
238 RESULT usbtobdm_init(uint8_t interface_index);
239 RESULT usbtobdm_fini(uint8_t interface_index);
240 RESULT usbtobdm_sync(uint8_t interface_index, uint16_t *khz);
241 RESULT usbtobdm_transact(uint8_t interface_index, uint8_t *out,
242         uint8_t outlen, uint8_t *in, uint8_t inlen, uint8_t delay, uint8_t ack);
243
244
245
246 // USB_TO_DUSI
247 RESULT usbtodusi_init(uint8_t interface_index);
248 RESULT usbtodusi_fini(uint8_t interface_index);
249 RESULT usbtodusi_config(uint8_t interface_index, uint32_t kHz, uint8_t mode);
250 RESULT usbtodusi_io(uint8_t interface_index, uint8_t *mo, uint8_t *mi,
251                                         uint8_t *so, uint8_t *si, uint32_t bitlen);
252
253
254
255 // USB_TO_MICROWIRE
256 RESULT usbtomicrowire_init(uint8_t interface_index);
257 RESULT usbtomicrowire_fini(uint8_t interface_index);
258 RESULT usbtomicrowire_config(uint8_t interface_index, uint16_t kHz,
259                                                                 uint8_t sel_polarity);
260 RESULT usbtomicrowire_transport(uint8_t interface_index,
261                                                                 uint32_t opcode, uint8_t opcode_bitlen,
262                                                                 uint32_t addr, uint8_t addr_bitlen,
263                                                                 uint32_t data, uint8_t data_bitlen,
264                                                                 uint8_t *reply, uint8_t reply_bitlen);
265 RESULT usbtomicrowire_poll(uint8_t interface_index, uint16_t interval_us,
266                                                         uint16_t retry_cnt);
267
268
269
270 // USB_TO_PWM
271 RESULT usbtopwm_init(uint8_t interface_index);
272 RESULT usbtopwm_fini(uint8_t interface_index);
273 RESULT usbtopwm_config(uint8_t interface_index, uint16_t kHz, uint8_t mode);
274 RESULT usbtopwm_out(uint8_t interface_index, uint16_t count, uint16_t *rate);
275 RESULT usbtopwm_in(uint8_t interface_index, uint16_t count, uint16_t *rate);
276
277 #endif /* __USBTOXXX_H_INCLUDED__ */
278