diff options
author | Robert Jarzmik <robert.jarzmik@free.fr> | 2013-04-14 22:23:18 +0200 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2013-06-04 20:00:42 +0000 |
commit | 8890ce34696d2e6a18eeda4a410724d24ad57360 (patch) | |
tree | 596b86658ddae9b6ac5af3c18d9a202e8fdfc010 /src/jtag/drivers/usb_blaster/ublast_access.h | |
parent | 452df0371e90705f9dce01fe0ebd4139a7dcba21 (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.h | 52 |
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); |