X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fjtag%2Fdrivers%2Fopendous.c;h=d5c279b08c2465152ec8fbf23687ce59c250d692;hb=d612baacaa3fef549c446053089867d7b134ccfd;hp=b4abe8992c7fbef60ffb8f2af279a16c477a3975;hpb=94d64ccaebd3df17f5873c076fc08ca97088cb1e;p=fw%2Fopenocd
diff --git a/src/jtag/drivers/opendous.c b/src/jtag/drivers/opendous.c
index b4abe8992..d5c279b08 100644
--- a/src/jtag/drivers/opendous.c
+++ b/src/jtag/drivers/opendous.c
@@ -23,9 +23,7 @@
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
+ * along with this program. If not, see . *
***************************************************************************/
#ifdef HAVE_CONFIG_H
@@ -36,13 +34,12 @@
#include
#include "libusb_common.h"
#include
-#include
#include
#define OPENDOUS_MAX_VIDS_PIDS 4
/* define some probes with similar interface */
struct opendous_probe {
- char *name;
+ const char *name;
uint16_t VID[OPENDOUS_MAX_VIDS_PIDS];
uint16_t PID[OPENDOUS_MAX_VIDS_PIDS];
uint8_t READ_EP;
@@ -51,7 +48,7 @@ struct opendous_probe {
int BUFFERSIZE;
};
-static struct opendous_probe opendous_probes[] = {
+static const struct opendous_probe opendous_probes[] = {
{"usbprog-jtag", {0x1781, 0}, {0x0C63, 0}, 0x82, 0x02, 0x00, 510 },
{"opendous", {0x1781, 0x03EB, 0}, {0xC0C0, 0x204F, 0}, 0x81, 0x02, 0x00, 360 },
{"usbvlab", {0x16C0, 0}, {0x05DC, 0}, 0x81, 0x02, 0x01, 360 },
@@ -110,7 +107,7 @@ static struct pending_scan_result *pending_scan_results_buffer;
#define FUNC_READ_DATA 0x51
static char *opendous_type;
-static struct opendous_probe *opendous_probe;
+static const struct opendous_probe *opendous_probe;
/* External interface functions */
static int opendous_execute_queue(void);
@@ -150,9 +147,7 @@ static int opendous_usb_read(struct opendous_jtag *opendous_jtag);
int opendous_get_version_info(void);
#ifdef _DEBUG_USB_COMMS_
-char time_str[50];
static void opendous_debug_buffer(uint8_t *buffer, int length);
-char *opendous_get_time(char *);
#endif
static struct opendous_jtag *opendous_jtag_handle;
@@ -190,7 +185,7 @@ COMMAND_HANDLER(opendous_handle_opendous_hw_jtag_command)
{
switch (CMD_ARGC) {
case 0:
- command_print(CMD_CTX, "opendous hw jtag %i", opendous_hw_jtag_version);
+ command_print(CMD, "opendous hw jtag %i", opendous_hw_jtag_version);
break;
case 1: {
@@ -220,6 +215,7 @@ static const struct command_registration opendous_command_handlers[] = {
.handler = &opendous_handle_opendous_info_command,
.mode = COMMAND_EXEC,
.help = "show opendous info",
+ .usage = "",
},
{
.name = "opendous_hw_jtag",
@@ -238,12 +234,19 @@ static const struct command_registration opendous_command_handlers[] = {
COMMAND_REGISTRATION_DONE
};
-struct jtag_interface opendous_interface = {
+static struct jtag_interface opendous_interface = {
+ .execute_queue = opendous_execute_queue,
+};
+
+struct adapter_driver opendous_adapter_driver = {
.name = "opendous",
+ .transports = jtag_only,
.commands = opendous_command_handlers,
- .execute_queue = opendous_execute_queue,
+
.init = opendous_init,
.quit = opendous_quit,
+
+ .jtag_ops = &opendous_interface,
};
static int opendous_execute_queue(void)
@@ -256,7 +259,7 @@ static int opendous_execute_queue(void)
while (cmd != NULL) {
switch (cmd->type) {
case JTAG_RUNTEST:
- DEBUG_JTAG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
+ LOG_DEBUG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
cmd->cmd.runtest->end_state);
if (cmd->cmd.runtest->end_state != -1)
@@ -265,7 +268,7 @@ static int opendous_execute_queue(void)
break;
case JTAG_TLR_RESET:
- DEBUG_JTAG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
+ LOG_DEBUG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
if (cmd->cmd.statemove->end_state != -1)
opendous_end_state(cmd->cmd.statemove->end_state);
@@ -273,7 +276,7 @@ static int opendous_execute_queue(void)
break;
case JTAG_PATHMOVE:
- DEBUG_JTAG_IO("pathmove: %i states, end in %i", \
+ LOG_DEBUG_IO("pathmove: %i states, end in %i", \
cmd->cmd.pathmove->num_states, \
cmd->cmd.pathmove->path[cmd->cmd.pathmove->num_states - 1]);
@@ -281,13 +284,13 @@ static int opendous_execute_queue(void)
break;
case JTAG_SCAN:
- DEBUG_JTAG_IO("scan end in %i", cmd->cmd.scan->end_state);
+ LOG_DEBUG_IO("scan end in %i", cmd->cmd.scan->end_state);
if (cmd->cmd.scan->end_state != -1)
opendous_end_state(cmd->cmd.scan->end_state);
scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer);
- DEBUG_JTAG_IO("scan input, length = %d", scan_size);
+ LOG_DEBUG_IO("scan input, length = %d", scan_size);
#ifdef _DEBUG_USB_COMMS_
opendous_debug_buffer(buffer, (scan_size + 7) / 8);
@@ -297,7 +300,7 @@ static int opendous_execute_queue(void)
break;
case JTAG_RESET:
- DEBUG_JTAG_IO("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
+ LOG_DEBUG_IO("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
opendous_tap_execute();
@@ -307,7 +310,7 @@ static int opendous_execute_queue(void)
break;
case JTAG_SLEEP:
- DEBUG_JTAG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
+ LOG_DEBUG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
opendous_tap_execute();
jtag_sleep(cmd->cmd.sleep->us);
break;
@@ -324,7 +327,7 @@ static int opendous_execute_queue(void)
static int opendous_init(void)
{
int check_cnt;
- struct opendous_probe *cur_opendous_probe;
+ const struct opendous_probe *cur_opendous_probe;
cur_opendous_probe = opendous_probes;
@@ -532,7 +535,7 @@ void opendous_simple_command(uint8_t command, uint8_t _data)
{
int result;
- DEBUG_JTAG_IO("0x%02x 0x%02x", command, _data);
+ LOG_DEBUG_IO("0x%02x 0x%02x", command, _data);
usb_out_buffer[0] = 2;
usb_out_buffer[1] = 0;
@@ -601,7 +604,7 @@ void opendous_tap_append_step(int tms, int tdi)
void opendous_tap_append_scan(int length, uint8_t *buffer, struct scan_command *command)
{
- DEBUG_JTAG_IO("append scan, length = %d", length);
+ LOG_DEBUG_IO("append scan, length = %d", length);
struct pending_scan_result *pending_scan_result = &pending_scan_results_buffer[pending_scan_results_length];
int i;
@@ -683,7 +686,7 @@ int opendous_tap_execute(void)
/* Copy to buffer */
buf_set_buf(tdo_buffer, first, buffer, 0, length);
- DEBUG_JTAG_IO("pending scan result, length = %d", length);
+ LOG_DEBUG_IO("pending scan result, length = %d", length);
#ifdef _DEBUG_USB_COMMS_
opendous_debug_buffer(buffer, byte_length_out);
@@ -712,7 +715,7 @@ struct opendous_jtag *opendous_usb_open(void)
struct opendous_jtag *result;
struct jtag_libusb_device_handle *devh;
- if (jtag_libusb_open(opendous_probe->VID, opendous_probe->PID, &devh) != ERROR_OK)
+ if (jtag_libusb_open(opendous_probe->VID, opendous_probe->PID, NULL, &devh) != ERROR_OK)
return NULL;
jtag_libusb_set_configuration(devh, 0);
@@ -760,21 +763,21 @@ int opendous_usb_write(struct opendous_jtag *opendous_jtag, int out_length)
}
#ifdef _DEBUG_USB_COMMS_
- LOG_DEBUG("%s: USB write begin", opendous_get_time(time_str));
+ LOG_DEBUG("USB write begin");
#endif
if (opendous_probe->CONTROL_TRANSFER) {
result = jtag_libusb_control_transfer(opendous_jtag->usb_handle,
LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
FUNC_WRITE_DATA, 0, 0, (char *) usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT);
} else {
- result = jtag_libusb_bulk_write(opendous_jtag->usb_handle, OPENDOUS_WRITE_ENDPOINT, \
- (char *)usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT);
+ jtag_libusb_bulk_write(opendous_jtag->usb_handle, OPENDOUS_WRITE_ENDPOINT, \
+ (char *)usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT, &result);
}
#ifdef _DEBUG_USB_COMMS_
- LOG_DEBUG("%s: USB write end: %d bytes", opendous_get_time(time_str), result);
+ LOG_DEBUG("USB write end: %d bytes", result);
#endif
- DEBUG_JTAG_IO("opendous_usb_write, out_length = %d, result = %d", out_length, result);
+ LOG_DEBUG_IO("opendous_usb_write, out_length = %d, result = %d", out_length, result);
#ifdef _DEBUG_USB_COMMS_
opendous_debug_buffer(usb_out_buffer, out_length);
@@ -786,7 +789,7 @@ int opendous_usb_write(struct opendous_jtag *opendous_jtag, int out_length)
int opendous_usb_read(struct opendous_jtag *opendous_jtag)
{
#ifdef _DEBUG_USB_COMMS_
- LOG_DEBUG("%s: USB read begin", opendous_get_time(time_str));
+ LOG_DEBUG("USB read begin");
#endif
int result;
if (opendous_probe->CONTROL_TRANSFER) {
@@ -794,13 +797,13 @@ int opendous_usb_read(struct opendous_jtag *opendous_jtag)
LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
FUNC_READ_DATA, 0, 0, (char *) usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT);
} else {
- result = jtag_libusb_bulk_read(opendous_jtag->usb_handle, OPENDOUS_READ_ENDPOINT,
- (char *)usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT);
+ jtag_libusb_bulk_read(opendous_jtag->usb_handle, OPENDOUS_READ_ENDPOINT,
+ (char *)usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT, &result);
}
#ifdef _DEBUG_USB_COMMS_
- LOG_DEBUG("%s: USB read end: %d bytes", opendous_get_time(time_str), result);
+ LOG_DEBUG("USB read end: %d bytes", result);
#endif
- DEBUG_JTAG_IO("opendous_usb_read, result = %d", result);
+ LOG_DEBUG_IO("opendous_usb_read, result = %d", result);
#ifdef _DEBUG_USB_COMMS_
opendous_debug_buffer(usb_in_buffer, result);
@@ -827,15 +830,4 @@ void opendous_debug_buffer(uint8_t *buffer, int length)
LOG_DEBUG("%s", line);
}
}
-
-char *opendous_get_time(char *str)
-{
- struct timeb timebuffer;
- char *timeline;
-
- ftime(&timebuffer);
- timeline = ctime(&(timebuffer.time));
- snprintf(str, 49, "%.8s.%hu", &timeline[11], timebuffer.millitm);
- return str;
-}
#endif