diff options
author | Daniel Black <dragonheart@gentoo.org> | 2005-03-25 23:00:17 +0000 |
---|---|---|
committer | Daniel Black <dragonheart@gentoo.org> | 2005-03-25 23:00:17 +0000 |
commit | 1fb2b05be67ccc47001455e9cc26447a030ac3ce (patch) | |
tree | ffe8a1d8f3318a9a0e7a37eb478f865b02950865 /dev-embedded/picprog/files | |
parent | Added lapck in use.mask on hppa. (diff) | |
download | gentoo-2-1fb2b05be67ccc47001455e9cc26447a030ac3ce.tar.gz gentoo-2-1fb2b05be67ccc47001455e9cc26447a030ac3ce.tar.bz2 gentoo-2-1fb2b05be67ccc47001455e9cc26447a030ac3ce.zip |
slow patch and ebuild thanks to Phil Whineray <pdw@slightly-cracked.com>. old version cleanout
(Portage version: 2.0.51.19)
Diffstat (limited to 'dev-embedded/picprog/files')
4 files changed, 126 insertions, 2 deletions
diff --git a/dev-embedded/picprog/files/digest-picprog-1.5 b/dev-embedded/picprog/files/digest-picprog-1.5 deleted file mode 100644 index 36c6865708b7..000000000000 --- a/dev-embedded/picprog/files/digest-picprog-1.5 +++ /dev/null @@ -1 +0,0 @@ -MD5 dcce871d91eaef4d4effc8cdcdb56155 picprog-1.5.tar.gz 52895 diff --git a/dev-embedded/picprog/files/digest-picprog-1.6 b/dev-embedded/picprog/files/digest-picprog-1.6 deleted file mode 100644 index f5e3492605a2..000000000000 --- a/dev-embedded/picprog/files/digest-picprog-1.6 +++ /dev/null @@ -1 +0,0 @@ -MD5 d9949a85e55f6eba6dde85295f790528 picprog-1.6.tar.gz 54875 diff --git a/dev-embedded/picprog/files/digest-picprog-1.7-r1 b/dev-embedded/picprog/files/digest-picprog-1.7-r1 new file mode 100644 index 000000000000..efe3b6c88b09 --- /dev/null +++ b/dev-embedded/picprog/files/digest-picprog-1.7-r1 @@ -0,0 +1 @@ +MD5 342f65a9cc71a0507fe8083181e2681c picprog-1.7.tar.gz 55118 diff --git a/dev-embedded/picprog/files/picprog-1.7-werner-almesberger.diff b/dev-embedded/picprog/files/picprog-1.7-werner-almesberger.diff new file mode 100644 index 000000000000..5be24442eb35 --- /dev/null +++ b/dev-embedded/picprog/files/picprog-1.7-werner-almesberger.diff @@ -0,0 +1,125 @@ +--- picprog-1.7/main.cc.orig 2004-10-18 07:33:58.995275000 -0300 ++++ picprog-1.7/main.cc 2004-10-18 08:06:50.275140000 -0300 +@@ -41,7 +41,7 @@ + + program prog; + +-char short_opts [] = "d:p:i:o:c:qh?"; ++char short_opts [] = "d:p:i:o:c:qsh?"; + + int + main (int argc, char **argv) +@@ -81,6 +81,7 @@ + {"erase", no_argument, &opt_erase, 1}, + {"burn", no_argument, &opt_burn, 1}, + {"force-calibration", no_argument, &opt_calibration, 1}, ++ {"slow", no_argument, NULL, 's'}, + {0, 0, 0, 0} + }; + +@@ -113,6 +114,12 @@ + case 'q': + opt_quiet = 1; + break; ++ case 's': ++ // Add extra delays for capacity added by very long cable ++ picport::t_edge = 10; // 10 us ++ picport::t_on = 200000; // 200 ms ++ picport::t_off = 700000; // 700 ms - I'm not kidding ! ++ break; + default: // -? -h --help unknown flag + opt_usage = 1; + } +--- picprog-1.7/picport.h.orig 2004-10-18 07:39:03.325205000 -0300 ++++ picprog-1.7/picport.h 2004-10-18 07:40:52.113394000 -0300 +@@ -59,6 +59,10 @@ + + public: + ++ static int t_on; ++ static int t_off; ++ static int t_edge; ++ + static void delay (long ns); + + enum commands { +--- picprog-1.7/picport.cc.orig 2004-10-18 07:28:46.554692000 -0300 ++++ picprog-1.7/picport.cc 2004-10-18 08:30:38.385152000 -0300 +@@ -54,6 +54,11 @@ + unsigned int picport::tsc_1000ns = 0; + int picport::use_nanosleep = -1; + ++// Extra delays for long cables, in us ++int picport::t_on = 0; ++int picport::t_off = 0; ++int picport::t_edge = 0; ++ + void + picport::set_clock_data (int rts, int dtr) + { +@@ -102,7 +107,7 @@ + // Before first call to set_clock_data, read the modem status. + ioctl (fd, TIOCMGET, &modembits); + set_clock_data (0, 0); +- usleep (50); ++ usleep (50+t_edge); + // Check the CTS. If it is up, even when we just lowered DTR, + // we probably are not talking to a JDM type programmer. + int i; +@@ -200,13 +205,13 @@ + cerr << "Unable to start break on tty " << tty << ":" << strerror (e) << endl; + exit (EX_IOERR); + } +- usleep (10); ++ usleep (10+t_off); + } + + picport::~picport () + { + ioctl (fd, TIOCCBRK, 0); +- usleep (1); ++ usleep (1+t_off); + tcsetattr (fd, TCSANOW, &saved); + close (fd); + delete [] portname; +@@ -216,15 +221,15 @@ + { + set_clock_data (0, 0); + ioctl (fd, TIOCCBRK, 0); +- usleep (50); ++ usleep (50+t_off); + ioctl (fd, TIOCSBRK, 0); +- usleep (10); ++ usleep (10+t_on); + addr = 0; + } + + void picport::delay (long ns) + { +- if (1 == use_nanosleep) { ++ if (1 == use_nanosleep && !t_edge) { + timespec ts = {ns / 1000000000, ns % 1000000000}, ts2; + while (nanosleep (&ts, &ts2) && EINTR == errno) + ts = ts2; +@@ -232,7 +237,7 @@ + } + + #ifdef RDTSC_WORKS +- if (tsc_1000ns > 1) { ++ if (tsc_1000ns > 1 && !t_edge) { + unsigned long a1, d1, a2, d2; + asm volatile("rdtsc":"=a" (a1), "=d" (d1)); + d2 = d1; +@@ -259,10 +264,10 @@ + volatile int i; + gettimeofday (&tv1, 0); + tv2.tv_sec = tv1.tv_sec; +- tv2.tv_usec = 0xffffffff & (tv1.tv_usec + 1 + (ns + 999)/1000); ++ tv2.tv_usec = 0xffffffff & (tv1.tv_usec + 1 + (ns + 999)/1000+t_edge); + if (tv2.tv_usec < tv1.tv_usec) + tv2.tv_sec++; +- for (i = 0; i < 10000; i++) { ++ for (i = 0; i < 10000 || t_edge; i++) { + gettimeofday (&tv1, 0); + if (tv1.tv_sec > tv2.tv_sec + || tv1.tv_sec == tv2.tv_sec && tv1.tv_usec >= tv2.tv_usec) |