ti-icdi: catch failed icdi_send_cmd
[openocd.git] / src / jtag / drivers / mpsse.h
1 /**************************************************************************
2 * Copyright (C) 2012 by Andreas Fritiofson *
3 * andreas.fritiofson@gmail.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, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
20
21 #ifndef MPSSE_H_
22 #define MPSSE_H_
23
24 #include <stdbool.h>
25 #include "helper/binarybuffer.h"
26
27 /* Mode flags */
28 #define POS_EDGE_OUT 0x00
29 #define NEG_EDGE_OUT 0x01
30 #define POS_EDGE_IN 0x00
31 #define NEG_EDGE_IN 0x04
32 #define MSB_FIRST 0x00
33 #define LSB_FIRST 0x08
34
35 enum ftdi_chip_type {
36 TYPE_FT2232C,
37 TYPE_FT2232H,
38 TYPE_FT4232H,
39 TYPE_FT232H,
40 };
41
42 struct mpsse_ctx;
43
44 /* Device handling */
45 struct mpsse_ctx *mpsse_open(const uint16_t *vid, const uint16_t *pid, const char *description,
46 const char *serial, int channel);
47 void mpsse_close(struct mpsse_ctx *ctx);
48 bool mpsse_is_high_speed(struct mpsse_ctx *ctx);
49
50 /* Command queuing. These correspond to the MPSSE commands with the same names, but no need to care
51 * about bit/byte transfer or data length limitation. Read data is guaranteed to be available only
52 * after the following mpsse_flush(). */
53 int mpsse_clock_data_out(struct mpsse_ctx *ctx, const uint8_t *out, unsigned out_offset,
54 unsigned length, uint8_t mode);
55 int mpsse_clock_data_in(struct mpsse_ctx *ctx, uint8_t *in, unsigned in_offset, unsigned length,
56 uint8_t mode);
57 int mpsse_clock_data(struct mpsse_ctx *ctx, const uint8_t *out, unsigned out_offset, uint8_t *in,
58 unsigned in_offset, unsigned length, uint8_t mode);
59 int mpsse_clock_tms_cs_out(struct mpsse_ctx *ctx, const uint8_t *out, unsigned out_offset,
60 unsigned length, bool tdi, uint8_t mode);
61 int mpsse_clock_tms_cs(struct mpsse_ctx *ctx, const uint8_t *out, unsigned out_offset, uint8_t *in,
62 unsigned in_offset, unsigned length, bool tdi, uint8_t mode);
63 int mpsse_set_data_bits_low_byte(struct mpsse_ctx *ctx, uint8_t data, uint8_t dir);
64 int mpsse_set_data_bits_high_byte(struct mpsse_ctx *ctx, uint8_t data, uint8_t dir);
65 int mpsse_read_data_bits_low_byte(struct mpsse_ctx *ctx, uint8_t *data);
66 int mpsse_read_data_bits_high_byte(struct mpsse_ctx *ctx, uint8_t *data);
67 int mpsse_loopback_config(struct mpsse_ctx *ctx, bool enable);
68 int mpsse_set_divisor(struct mpsse_ctx *ctx, uint16_t divisor);
69 int mpsse_divide_by_5_config(struct mpsse_ctx *ctx, bool enable);
70 int mpsse_rtck_config(struct mpsse_ctx *ctx, bool enable);
71
72 /* Helper to set frequency in Hertz. Returns actual realizable frequency or negative error.
73 * Frequency 0 means RTCK. */
74 int mpsse_set_frequency(struct mpsse_ctx *ctx, int frequency);
75
76 /* Queue handling */
77 int mpsse_flush(struct mpsse_ctx *ctx);
78 void mpsse_purge(struct mpsse_ctx *ctx);
79
80 #endif /* MPSSE_H_ */

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)