aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/drivers/usb_blaster/ublast_access.h
diff options
context:
space:
mode:
authorRobert Jarzmik <robert.jarzmik@free.fr>2013-04-14 22:23:18 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2013-06-04 20:00:42 +0000
commit8890ce34696d2e6a18eeda4a410724d24ad57360 (patch)
tree596b86658ddae9b6ac5af3c18d9a202e8fdfc010 /src/jtag/drivers/usb_blaster/ublast_access.h
parent452df0371e90705f9dce01fe0ebd4139a7dcba21 (diff)
drivers/jtag: rewrite usb_blaster driver
Rewrite the Altera USB Blaster dongle driver : - make extensive use of byte-shift mode, to improve JTAG speed. This is the main reason of the rewrite. It improves the memory dumps with a factor 3 at least, and upload 100 times, from 1 kBytes/sec to 100 kBytes/sec with a USB-Blaster connected to an Altera Virtual JTAG TAP + OpenRISC CPU. - split the low level API part (between FTDI and FTD2xx) from core driver, so that in the future, if both libftdi and ftd2xx can coexist, the driver will be able to switch dynamically from one access to the other. Change-Id: I2ee9cedf4a5eb27501f337993ee0cdee52517e7c Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Marek Czerski <ma.czerski@gmail.com> Tested-by: Franck Jullien <franck.jullien@gmail.com> Reviewed-on: http://openocd.zylin.com/467 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-by: Alexandre Becoulet <alexandre.becoulet@free.fr> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/jtag/drivers/usb_blaster/ublast_access.h')
-rw-r--r--src/jtag/drivers/usb_blaster/ublast_access.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/jtag/drivers/usb_blaster/ublast_access.h b/src/jtag/drivers/usb_blaster/ublast_access.h
new file mode 100644
index 00000000..e0eb059e
--- /dev/null
+++ b/src/jtag/drivers/usb_blaster/ublast_access.h
@@ -0,0 +1,52 @@
+/*
+ * Driver for USB-JTAG, Altera USB-Blaster and compatibles
+ *
+ * Inspired from original code from Kolja Waschk's USB-JTAG project
+ * (http://www.ixo.de/info/usb_jtag/), and from openocd project.
+ *
+ * Copyright (C) 2012 Robert Jarzmik robert.jarzmik@free.fr
+ * Copyright (C) 2011 Ali Lown ali@lown.me.uk
+ * Copyright (C) 2009 Catalin Patulea cat@vv.carleton.ca
+ * Copyright (C) 2006 Kolja Waschk usbjtag@ixo.de
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+struct ublast_lowlevel {
+ uint16_t ublast_vid;
+ uint16_t ublast_pid;
+ char *ublast_device_desc;
+
+ int (*write)(struct ublast_lowlevel *low, uint8_t *buf, int size,
+ uint32_t *bytes_written);
+ int (*read)(struct ublast_lowlevel *low, uint8_t *buf, unsigned size,
+ uint32_t *bytes_read);
+ int (*open)(struct ublast_lowlevel *low);
+ int (*close)(struct ublast_lowlevel *low);
+ int (*speed)(struct ublast_lowlevel *low, int speed);
+
+ void *priv;
+};
+
+/**
+ * ublast_register_ftdi - get a lowlevel USB Blaster driver
+ * ublast_register_ftd2xx - get a lowlevel USB Blaster driver
+ *
+ * Get a lowlevel USB-Blaster driver. In the current implementation, there are 2
+ * possible lowlevel drivers :
+ * - one based on libftdi from ftdichip.com
+ * - one based on libftdxx, the free alternative
+ *
+ * Returns the lowlevel driver structure.
+ */
+extern struct ublast_lowlevel *ublast_register_ftdi(void);
+extern struct ublast_lowlevel *ublast_register_ftd2xx(void);