Commit Graph

35 Commits

Author SHA1 Message Date
Joerg Wunsch eb7ccaf92b Turn off FT245R_BITBANG_VARIABLE_PULSE_WIDTH_WORKAROUND by default
Seems it's not really needed for modern FT245, and it has the
potential to break bulk readout.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1505 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-12-01 22:17:50 +00:00
Joerg Wunsch b376b6acdc In ft245r.c, move forward function declaratons up-front.
git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1504 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-30 06:32:27 +00:00
Joerg Wunsch 49e5f2451c patch #9328: ft245r.c: add TPI support (patches 5-7)
Submitted by David Mosberger-Tang:
* ft245r.c (ft245r_set_bitclock): add workaround for
FT245 hardware bugs in bitclock setting

Correct baud rate calculation (multiplying with factor of 2 was wrong)
and add compile-time workaround for FTDI chips suffering for the
variable pulse-width errata.  The workaround entails always running
the chip at 3MHz and stuffing the channel with repeated bytes to
achieve the desired baudrate.

This has no effect on programming speed.  Note, however, that now a
baudrate option -b750000 has to be used to achieve maximum speed.

(Option enabled by default now.)



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1488 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-25 09:17:11 +00:00
Joerg Wunsch 2015a874e0 patch #9328: ft245r.c: add TPI support (patches 5-7)
Submitted by David Mosberger-Tang:
* ft245r.c: Remove the reader thread (also removes
patch #9079)

Eliminate separate reader thread by tracking how many bytes are queued
in the FTDI chip's RX FIFO and reading those bytes when it fills up
(since in synchronous bitbang mode, the chip won't send any more bytes
until it has space in the RX FIFO).  This reduces TPI programming time
by another 33%.

Since write data is now queued as much as possible, we need flush this
queued data (a) before reading and (b) before sleeping.  For the
latter case, a new helper function ft245r_usleep() is introduced.




git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1487 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-25 09:10:30 +00:00
Joerg Wunsch 5bf24e4e96 patch #9327: ft245r.c: add TPI support (patches 1-4)
Submitted by David Mosberger-Tang:

ft245r.c (set_pin, ft245r_open): use
ft245r_send_and_discard() so ft245r_in can go away




git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1486 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-24 22:27:59 +00:00
Joerg Wunsch 105cebb389 patch #9327: ft245r.c: add TPI support (patches 1-4)
Submitted by David Mosberger-Tang:

Optimize TPI programming speed by reducing number of USB reads.
Specifically, when writing to the FTDI chip (without needing the data
it accumulates), simply increment a count of how many bytes the next
read should ignore.  Thus, if there is one or more write followed by a
read, we only need to read from the device once.

Improves TPI programming speed by another factor of 2.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1485 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-24 22:06:31 +00:00
Joerg Wunsch 7ff5652edc patch #9327: ft245r.c: add TPI support (patches 1-4)
Submitted by David Mosberger-Tang

With newer versions of the Linux kernel (e.g., Ubuntu's
linux-image-4.4.0-75-generic), the default for the latency timer is
set to a high value.  Since this driver needs quick turnaround times,
set it explicitly to the minium.  This improves TPI programming speed
by almost a factor of 10.




git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1484 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-24 22:00:45 +00:00
Joerg Wunsch 6de6c0ffce patch #9327: ft245r.c: add TPI support (patches 1-4)
Submitted by David Mosberger-Tang:
* ft245r.c: add TPI support
* avrdude.conf.in (tc2030): New programmer




git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1483 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-24 21:25:45 +00:00
Joerg Wunsch d947e5893f * ft245r.c (ft245r_open): allow for picking a default
device if none has been provided by -P



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1482 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-24 21:09:33 +00:00
Joerg Wunsch f821bfc03d patch #9123: ftdi_syncbb: use FT245R_CYCLES in ft245r_set_bitclock()
Submitted by Ivan Frederiks:

Replace magic numbers by #defined constant



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1475 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-14 15:47:29 +00:00
Joerg Wunsch e8c5ed0fcd patch #9122: Fixed MISO sampling in ftdi_syncbb
Submitted by Ivan Frederiks

Fix MISO sampling on falling edge of SCK.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1474 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-14 15:44:54 +00:00
Joerg Wunsch ebea9b5237 Submitted by Ivan Frederiks:
patch #9079: Fix ftdi_syncbb teardown

Fix teardown sequence between reader thread and libusb.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1473 81a1dc3b-b13d-400b-aceb-764788c761c2
2021-11-14 13:34:20 +00:00
Joerg Wunsch c34fb88844 Submitted by: kautism
patch #9893: [PATCH] Reader reads ftdi handle after main thread close it
* ft245r.c: Wait until reader thread has been stopped before closing FTDI



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1434 81a1dc3b-b13d-400b-aceb-764788c761c2
2020-03-11 12:39:57 +00:00
Joerg Wunsch 7140312c17 Submitted by Dennis Reimers:
patch #8580: FT245r support to select device by serial number
* ft245r.c (ft245r_open): Add serial number parsing.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1415 81a1dc3b-b13d-400b-aceb-764788c761c2
2018-01-15 22:44:22 +00:00
Rene Liebscher 17bb2a10cd patch #8511 Fix reset on FT245R
* ft245r.c: applied patch



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1331 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-08-18 21:08:05 +00:00
Rene Liebscher eab60712a0 patch #8419 fix ftdi_syncbb hang with libftdi 1
* ft245r.c: set pthread cancel type to asynchronous, reorder ftdi_usb_close/deinit


git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1324 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-06-21 21:29:18 +00:00
Axel Wachtler c6788bd795 added verbose level in avrdude_message()
git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1321 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-06-13 20:07:40 +00:00
Joerg Wunsch d09bc2e1fb Join the former "public" header files (avr.h avrpart.h pindefs.h
serial.h fileio.h safemode.h update.h pgm_type.h config.h confwin.h
lists.h) into a single header that can be included by anyone wanting
to link against the library.

Adapt everything to cope with this situation.


git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1311 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-05-19 10:01:59 +00:00
Axel Wachtler eb5fcb581f Exchange of fprintf(stderr, ...) with avrdude_message(...).
This change was made for the shared library, since library functions
should not write to std-streams directly. Instead avrdude_message()
has to be implemented by the library user. For the avrdude application
this function is implemented in main.c.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1305 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-05-18 08:41:46 +00:00
Joerg Wunsch 57903bdeb8 Replace all occurences of exit() in potential library code
by appropriate return values.


git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1301 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-05-16 15:52:25 +00:00
Joerg Wunsch 343330fddd Turn the usbpid parameter of the programmer into a list of PIDs. Make
the JTAGICE3 programmer handle a list of PIDs, by trying each of them
in sequence.  Use a single, central jtag3_open_common() function to
handle the common code of all jtag3_open_* functions.  Centralize all
USB VID/PID definitions in usbdevs.h.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1283 81a1dc3b-b13d-400b-aceb-764788c761c2
2014-02-27 13:06:03 +00:00
Joerg Wunsch db1cce8bf4 bug #39794: warnings when building avrdude 6.0rc1 under CentOS 6.4
* buspirate.c: Turn the "cmd" argument of the various methods into
a "const unsigned char *"; while doing this, declare all arrays being
passed as arguments to be pointers rather than arrays, as the latter
obfuscates the way arrays are being passed to a callee in C.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1196 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-09-02 20:22:53 +00:00
Rene Liebscher da3961e155 use bitbanging on ftdi mpsse when wrong pins are used
* avrftdi.c, avrftdi_private.h: added additional pin check and bitbanging fallback
	* pindefs.[ch]: added a flag to enable/disable output
	* ft245r.c: changes because of added flag above

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1184 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-06-19 17:40:32 +00:00
Rene Liebscher 22477da39e * configure.ac: reactivate check for TYPE_232H, which does not exist in libftdi < 0.20
* avrftdi*.*: changed include check for libftdi/libusb, deactivate 232H if not available
* ft245r.c: changed include check for libftdi/libusb

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1180 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-05-16 17:11:35 +00:00
Rene Liebscher 0fc17a60a6 removed some debug code from file ft245r.c
git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1176 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-05-15 19:03:58 +00:00
Rene Liebscher 7ff877e067 * configure.ac: if both found libftdi and libftdi1 use only libftdi1
* avrdude.conf.in: fixed buff pins of avrftdi programmers (low active buffer need now inverted numbers)
	* avrftdi*.*: accept also old libftdi (0.20 still works with it), added powerup to initialize
	* ft245r.c: accept libftdi1, code cleanup and make it more similar to avrfdti (os they might be merged someday)

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1175 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-05-15 18:55:19 +00:00
Rene Liebscher 4fc72c7d58 * pindefs.h: use unsigned int if stdint.h is not available and UINT_MAX is 0xffffffff
otherwise use unsinged long
* ft245r.c: added support for more pin functions led, vcc, buff

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1169 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-05-06 19:21:38 +00:00
Rene Liebscher a816d19d02 * main.c: revert to rev 1159 (doing pgm_display after pgm_open)
* avrpart.[ch]: moved avr_pin_name to pindefs.[ch]
* pgm.c: moved pins_to_str to pindefs.[ch], added initialization of 
          new pin definitions in pgm_new()
* pindefs.[ch]: added moved functions from other files, added a lot of 
          documentation, reformatted files using astyle to have consistent spacing,
          added a new generic check function for pins
* ft245r.c: used new generic pin check function

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1161 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-05-05 13:35:35 +00:00
Rene Liebscher 2d8c584c8c Create new pin definition data structures to support 0-based pin numbers, and mixed inverse/non-inverse pin lists.
* avrftdi.c,buspirate.c,linuxgpio.c,par.c,serbb_*.c: added function call 
          to fill old pinno entries from new pin definitions.
	* pindefs.[hc]: added data struct and helper functions for new pin definitions
	* avrdude.conf.in: pins in entries using ftdi_syncbb are now 0-based
	* config_gram.y: allow combinations of inverted and non-inverted pins in pin lists
	* ft245r.c: reworked to work directly with the new pin definitions,
          pins are now 0-based, inverse pins are supported, buff is supported
	* pgm.[ch]: added new pin definitions field to programmer structure, 
          adapted pin display functions

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1160 81a1dc3b-b13d-400b-aceb-764788c761c2
2013-05-03 22:35:00 +00:00
Joerg Wunsch 147137a218 Replace outdated FSF postal address by a reference to
the GPL info on their website.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1107 81a1dc3b-b13d-400b-aceb-764788c761c2
2012-11-20 14:03:50 +00:00
Rene Liebscher 926269f39f bug #30559 Ft232 bit-bang support, see comment #30
* ft245r.c: added semaphore workaround for MacOS X,
	            added pthread_testcancel in reader thread

* configure.ac: added check for TYPE_232H in libftdi (not in libftdi < 0.20)
* avrftdi.c: do not use TYPE_232H if not declared

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1101 81a1dc3b-b13d-400b-aceb-764788c761c2
2012-08-15 17:31:11 +00:00
Joerg Wunsch d486a0a1cd Submitted by Rene Liebscher:
* configure.ac: Check for presence of <pthread.h>
* ft245r.c: Depend on HAVE_PTHREAD_H
* Makefile.am: Add -lpthread if needed.



git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1092 81a1dc3b-b13d-400b-aceb-764788c761c2
2012-06-13 20:45:22 +00:00
Rene Liebscher f92e91d08e bug #30559 Ft232 bit-bang support
* ft245r.c: cancel reader thread before exiting program


git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1066 81a1dc3b-b13d-400b-aceb-764788c761c2
2012-02-05 19:58:59 +00:00
Rene Liebscher 583ce458f9 patch #7714 Missing stdint.h include in ft245r.c
git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1064 81a1dc3b-b13d-400b-aceb-764788c761c2
2012-02-03 21:49:45 +00:00
Rene Liebscher 7240bbec2f bug #30559 Ft232 bit-bang support
* ft245r.[ch]: new programmer type implementation
* configure.ac: add pthread as link library
* avrdude.conf.in: added some new programmers
* Makefile.am: added new source files to compile
* pindefs.h: change PIN_MASK, PIN_INVERSE to highest bit of unsigned int
* pgm.[ch]: added generic function to print pin assignments (taken from par.c)
* par.c: moved pin assigment print function to pgm.c

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1055 81a1dc3b-b13d-400b-aceb-764788c761c2
2012-02-01 22:26:58 +00:00