1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Copyright (C) 2009 - 2010 by Simon Qian <SimonQian@SimonQian.com> *
5 ***************************************************************************/
7 #ifndef OPENOCD_JTAG_DRIVERS_VERSALOON_USBTOXXX_USBTOXXX_H
8 #define OPENOCD_JTAG_DRIVERS_VERSALOON_USBTOXXX_USBTOXXX_H
10 RESULT
usbtoxxx_init(void);
11 RESULT
usbtoxxx_fini(void);
12 RESULT
usbtoxxx_execute_command(void);
14 #define USB_TO_XXX_ABILITIES_LEN 12
15 extern uint8_t usbtoxxx_abilities
[USB_TO_XXX_ABILITIES_LEN
];
16 bool usbtoxxx_interface_supported(uint8_t cmd
);
19 RESULT
usbtoinfo_get_abilities(uint8_t abilities
[USB_TO_XXX_ABILITIES_LEN
]);
22 RESULT
usbtodelay_delay(uint16_t dly
);
23 RESULT
usbtodelay_delayms(uint16_t ms
);
24 RESULT
usbtodelay_delayus(uint16_t us
);
27 RESULT
usbtousart_init(uint8_t interface_index
);
28 RESULT
usbtousart_fini(uint8_t interface_index
);
29 RESULT
usbtousart_config(uint8_t interface_index
, uint32_t baudrate
,
30 uint8_t datalength
, uint8_t mode
);
31 RESULT
usbtousart_send(uint8_t interface_index
, uint8_t *buf
, uint16_t len
);
32 RESULT
usbtousart_receive(uint8_t interface_index
, uint8_t *buf
, uint16_t len
);
33 RESULT
usbtousart_status(uint8_t interface_index
,
34 struct usart_status_t
*status
);
37 RESULT
usbtospi_init(uint8_t interface_index
);
38 RESULT
usbtospi_fini(uint8_t interface_index
);
39 RESULT
usbtospi_config(uint8_t interface_index
, uint32_t khz
, uint8_t mode
);
40 RESULT
usbtospi_io(uint8_t interface_index
, uint8_t *out
, uint8_t *in
,
44 RESULT
usbtogpio_init(uint8_t interface_index
);
45 RESULT
usbtogpio_fini(uint8_t interface_index
);
46 RESULT
usbtogpio_config(uint8_t interface_index
, uint32_t mask
,
47 uint32_t dir_mask
, uint32_t pull_en_mask
,
48 uint32_t input_pull_mask
);
49 RESULT
usbtogpio_in(uint8_t interface_index
, uint32_t mask
, uint32_t *value
);
50 RESULT
usbtogpio_out(uint8_t interface_index
, uint32_t mask
, uint32_t value
);
53 RESULT
usbtoissp_init(uint8_t interface_index
);
54 RESULT
usbtoissp_fini(uint8_t interface_index
);
55 RESULT
usbtoissp_enter_program_mode(uint8_t interface_index
, uint8_t mode
);
56 RESULT
usbtoissp_leave_program_mode(uint8_t interface_index
, uint8_t mode
);
57 RESULT
usbtoissp_wait_and_poll(uint8_t interface_index
);
58 RESULT
usbtoissp_vector(uint8_t interface_index
, uint8_t operate
, uint8_t addr
,
59 uint8_t data
, uint8_t *buf
);
62 RESULT
usbtolpcicp_init(uint8_t interface_index
);
63 RESULT
usbtolpcicp_fini(uint8_t interface_index
);
64 RESULT
usbtolpcicp_config(uint8_t interface_index
);
65 RESULT
usbtolpcicp_enter_program_mode(uint8_t interface_index
);
66 RESULT
usbtolpcicp_in(uint8_t interface_index
, uint8_t *buff
, uint16_t len
);
67 RESULT
usbtolpcicp_out(uint8_t interface_index
, uint8_t *buff
, uint16_t len
);
68 RESULT
usbtolpcicp_poll_ready(uint8_t interface_index
, uint8_t data
,
69 uint8_t *ret
, uint8_t setmask
, uint8_t clearmask
, uint16_t pollcnt
);
72 RESULT
usbtojtagll_init(uint8_t interface_index
);
73 RESULT
usbtojtagll_fini(uint8_t interface_index
);
74 RESULT
usbtojtagll_config(uint8_t interface_index
, uint32_t khz
);
75 RESULT
usbtojtagll_tms(uint8_t interface_index
, uint8_t *tms
, uint8_t bytelen
);
76 RESULT
usbtojtagll_tms_clocks(uint8_t interface_index
, uint32_t bytelen
,
78 RESULT
usbtojtagll_scan(uint8_t interface_index
, uint8_t *data
,
79 uint16_t bitlen
, uint8_t tms_before_valid
,
80 uint8_t tms_before
, uint8_t tms_after0
,
84 RESULT
usbtojtaghl_init(uint8_t interface_index
);
85 RESULT
usbtojtaghl_fini(uint8_t interface_index
);
86 RESULT
usbtojtaghl_config(uint8_t interface_index
, uint32_t khz
, uint8_t ub
,
87 uint8_t ua
, uint16_t bb
, uint16_t ba
);
88 RESULT
usbtojtaghl_ir(uint8_t interface_index
, uint8_t *ir
, uint16_t bitlen
,
89 uint8_t idle
, uint8_t want_ret
);
90 RESULT
usbtojtaghl_dr(uint8_t interface_index
, uint8_t *dr
, uint16_t bitlen
,
91 uint8_t idle
, uint8_t want_ret
);
92 RESULT
usbtojtaghl_tms(uint8_t interface_index
, uint8_t *tms
, uint16_t bitlen
);
93 RESULT
usbtojtaghl_runtest(uint8_t interface_index
, uint32_t cycles
);
94 RESULT
usbtojtaghl_register_callback(uint8_t index
, jtag_callback_t send_callback
,
95 jtag_callback_t receive_callback
);
98 RESULT
usbtojtagraw_init(uint8_t interface_index
);
99 RESULT
usbtojtagraw_fini(uint8_t interface_index
);
100 RESULT
usbtojtagraw_config(uint8_t interface_index
, uint32_t khz
);
101 RESULT
usbtojtagraw_execute(uint8_t interface_index
, uint8_t *tdi
,
102 uint8_t *tms
, uint8_t *tdo
, uint32_t bitlen
);
105 RESULT
usbtoc2_init(uint8_t interface_index
);
106 RESULT
usbtoc2_fini(uint8_t interface_index
);
107 RESULT
usbtoc2_writeaddr(uint8_t interface_index
, uint8_t addr
);
108 RESULT
usbtoc2_readaddr(uint8_t interface_index
, uint8_t *data
);
109 RESULT
usbtoc2_writedata(uint8_t interface_index
, uint8_t *buf
, uint8_t len
);
110 RESULT
usbtoc2_readdata(uint8_t interface_index
, uint8_t *buf
, uint8_t len
);
113 RESULT
usbtoi2c_init(uint8_t interface_index
);
114 RESULT
usbtoi2c_fini(uint8_t interface_index
);
115 RESULT
usbtoi2c_config(uint8_t interface_index
, uint16_t khz
,
116 uint16_t byte_interval
, uint16_t max_dly
);
117 RESULT
usbtoi2c_read(uint8_t interface_index
, uint16_t chip_addr
,
118 uint8_t *data
, uint16_t data_len
, uint8_t stop
,
120 RESULT
usbtoi2c_write(uint8_t interface_index
, uint16_t chip_addr
,
121 uint8_t *data
, uint16_t data_len
, uint8_t stop
);
123 /* USB_TO_MSP430_JTAG */
124 RESULT
usbtomsp430jtag_init(uint8_t interface_index
);
125 RESULT
usbtomsp430jtag_fini(uint8_t interface_index
);
126 RESULT
usbtomsp430jtag_config(uint8_t interface_index
, uint8_t has_test
);
127 RESULT
usbtomsp430jtag_ir(uint8_t interface_index
, uint8_t *ir
,
129 RESULT
usbtomsp430jtag_dr(uint8_t interface_index
, uint32_t *dr
,
130 uint8_t bitlen
, uint8_t want_ret
);
131 RESULT
usbtomsp430jtag_tclk(uint8_t interface_index
, uint8_t value
);
132 RESULT
usbtomsp430jtag_tclk_strobe(uint8_t interface_index
, uint16_t cnt
);
133 RESULT
usbtomsp430jtag_reset(uint8_t interface_index
);
134 RESULT
usbtomsp430jtag_poll(uint8_t interface_index
, uint32_t dr
,
135 uint32_t mask
, uint32_t value
, uint8_t len
,
136 uint16_t poll_cnt
, uint8_t toggle_tclk
);
138 /* USB_TO_MSP430_SBW */
139 RESULT
usbtomsp430sbw_init(uint8_t interface_index
);
140 RESULT
usbtomsp430sbw_fini(uint8_t interface_index
);
141 RESULT
usbtomsp430sbw_config(uint8_t interface_index
, uint8_t has_test
);
142 RESULT
usbtomsp430sbw_ir(uint8_t interface_index
, uint8_t *ir
,
144 RESULT
usbtomsp430sbw_dr(uint8_t interface_index
, uint32_t *dr
,
145 uint8_t bitlen
, uint8_t want_ret
);
146 RESULT
usbtomsp430sbw_tclk(uint8_t interface_index
, uint8_t value
);
147 RESULT
usbtomsp430sbw_tclk_strobe(uint8_t interface_index
, uint16_t cnt
);
148 RESULT
usbtomsp430sbw_reset(uint8_t interface_index
);
149 RESULT
usbtomsp430sbw_poll(uint8_t interface_index
, uint32_t dr
, uint32_t mask
,
150 uint32_t value
, uint8_t len
, uint16_t poll_cnt
,
151 uint8_t toggle_tclk
);
154 RESULT
usbtopwr_init(uint8_t interface_index
);
155 RESULT
usbtopwr_fini(uint8_t interface_index
);
156 RESULT
usbtopwr_config(uint8_t interface_index
);
157 RESULT
usbtopwr_output(uint8_t interface_index
, uint16_t millivolt
);
160 RESULT
usbtopoll_start(uint16_t retry_cnt
, uint16_t interval_us
);
161 RESULT
usbtopoll_end(void);
162 RESULT
usbtopoll_checkok(uint8_t equ
, uint16_t offset
, uint8_t size
,
163 uint32_t mask
, uint32_t value
);
164 RESULT
usbtopoll_checkfail(uint8_t equ
, uint16_t offset
, uint8_t size
,
165 uint32_t mask
, uint32_t value
);
166 RESULT
usbtopoll_verifybuff(uint16_t offset
, uint16_t size
, uint8_t *buff
);
169 RESULT
usbtoswd_init(uint8_t interface_index
);
170 RESULT
usbtoswd_fini(uint8_t interface_index
);
171 RESULT
usbtoswd_config(uint8_t interface_index
, uint8_t trn
, uint16_t retry
,
173 RESULT
usbtoswd_seqout(uint8_t interface_index
, const uint8_t *data
,
175 RESULT
usbtoswd_seqin(uint8_t interface_index
, uint8_t *data
, uint16_t bitlen
);
176 RESULT
usbtoswd_transact(uint8_t interface_index
, uint8_t request
,
177 uint32_t *data
, uint8_t *ack
);
180 RESULT
usbtoswim_init(uint8_t interface_index
);
181 RESULT
usbtoswim_fini(uint8_t interface_index
);
182 RESULT
usbtoswim_config(uint8_t interface_index
, uint8_t mhz
, uint8_t cnt0
,
184 RESULT
usbtoswim_srst(uint8_t interface_index
);
185 RESULT
usbtoswim_wotf(uint8_t interface_index
, uint8_t *data
,
186 uint16_t bytelen
, uint32_t addr
);
187 RESULT
usbtoswim_rotf(uint8_t interface_index
, uint8_t *data
,
188 uint16_t bytelen
, uint32_t addr
);
189 RESULT
usbtoswim_sync(uint8_t interface_index
, uint8_t mhz
);
190 RESULT
usbtoswim_enable(uint8_t interface_index
);
193 RESULT
usbtobdm_init(uint8_t interface_index
);
194 RESULT
usbtobdm_fini(uint8_t interface_index
);
195 RESULT
usbtobdm_sync(uint8_t interface_index
, uint16_t *khz
);
196 RESULT
usbtobdm_transact(uint8_t interface_index
, uint8_t *out
,
197 uint8_t outlen
, uint8_t *in
, uint8_t inlen
, uint8_t delay
, uint8_t ack
);
200 RESULT
usbtodusi_init(uint8_t interface_index
);
201 RESULT
usbtodusi_fini(uint8_t interface_index
);
202 RESULT
usbtodusi_config(uint8_t interface_index
, uint32_t khz
, uint8_t mode
);
203 RESULT
usbtodusi_io(uint8_t interface_index
, uint8_t *mo
, uint8_t *mi
,
204 uint8_t *so
, uint8_t *si
, uint32_t bitlen
);
206 /* USB_TO_MICROWIRE */
207 RESULT
usbtomicrowire_init(uint8_t interface_index
);
208 RESULT
usbtomicrowire_fini(uint8_t interface_index
);
209 RESULT
usbtomicrowire_config(uint8_t interface_index
, uint16_t khz
,
210 uint8_t sel_polarity
);
211 RESULT
usbtomicrowire_transport(uint8_t interface_index
,
212 uint32_t opcode
, uint8_t opcode_bitlen
,
213 uint32_t addr
, uint8_t addr_bitlen
,
214 uint32_t data
, uint8_t data_bitlen
,
215 uint8_t *reply
, uint8_t reply_bitlen
);
216 RESULT
usbtomicrowire_poll(uint8_t interface_index
, uint16_t interval_us
,
220 RESULT
usbtopwm_init(uint8_t interface_index
);
221 RESULT
usbtopwm_fini(uint8_t interface_index
);
222 RESULT
usbtopwm_config(uint8_t interface_index
, uint16_t khz
, uint8_t mode
);
223 RESULT
usbtopwm_out(uint8_t interface_index
, uint16_t count
, uint16_t *rate
);
224 RESULT
usbtopwm_in(uint8_t interface_index
, uint16_t count
, uint16_t *rate
);
226 #endif /* OPENOCD_JTAG_DRIVERS_VERSALOON_USBTOXXX_USBTOXXX_H */