From ad15b61b0b47b8b90cecb9ac4b3988baa0c5eba4 Mon Sep 17 00:00:00 2001
From: joerg_wunsch <joerg_wunsch@81a1dc3b-b13d-400b-aceb-764788c761c2>
Date: Tue, 3 Sep 2013 20:13:37 +0000
Subject: [PATCH] Remove the erase cycle counter (options -y / -Y).

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1203 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 ChangeLog        |  8 +++++++
 NEWS             |  4 ++--
 avr.c            | 21 -----------------
 avrdude.1        | 28 +----------------------
 avrdude.h        |  1 -
 doc/avrdude.texi | 21 -----------------
 main.c           | 59 ++++--------------------------------------------
 7 files changed, 15 insertions(+), 127 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6484cfb6..82243610 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-09-03  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	* avrdude.h: Remove the erase cycle counter (options -y / -Y).
+	* avr.c: (Dito.)
+	* main.c: (Dito.)
+	* avrdude.1: Undocument -y / -Y.
+	* doc/avrdude.texi: (Dito.)
+
 2013-09-03  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	bug #39691 Buffer overrun when reading EEPROM byte with JTAGICE3
diff --git a/NEWS b/NEWS
index fef5093b..c48ef402 100644
--- a/NEWS
+++ b/NEWS
@@ -101,8 +101,8 @@ Current:
       everything mentioned in the file (even in case the file has
       large 0xFF blocks).
 
-  * The EEPROM contents for the cyclecounter is only read when
-    explicitly requested by a -y or -Y option.
+  * The eraes cycle counter (formerly options -y / -Y) has been
+    removed.
 
   * The -U option now accepts ELF files as input files, and extracts
     the appropriate section contents that matches the requested memory
diff --git a/avr.c b/avr.c
index 37f961b4..edce7a53 100644
--- a/avr.c
+++ b/avr.c
@@ -1172,31 +1172,10 @@ int avr_put_cycle_count(PROGRAMMER * pgm, AVRPART * p, int cycles)
 
 int avr_chip_erase(PROGRAMMER * pgm, AVRPART * p)
 {
-  int cycles;
   int rc;
 
-  if (do_cycles) {
-    rc = avr_get_cycle_count(pgm, p, &cycles);
-    /*
-     * Don't update the cycle counter, if read failed
-     */
-    if(rc != 0) {
-      do_cycles = 0;
-    }
-  }
-
   rc = pgm->chip_erase(pgm, p);
 
-  /*
-   * Don't update the cycle counter, if erase failed
-   */
-  if (do_cycles && (rc == 0)) {
-    cycles++;
-    fprintf(stderr, "%s: erase-rewrite cycle count is now %d\n",
-            progname, cycles);
-    avr_put_cycle_count(pgm, p, cycles);
-  }
-
   return rc;
 }
 
diff --git a/avrdude.1 b/avrdude.1
index ba9d4b26..9a531fbc 100644
--- a/avrdude.1
+++ b/avrdude.1
@@ -18,7 +18,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd DATE May 16, 2013
+.Dd DATE September 3, 2013
 .Os
 .Dt AVRDUDE 1
 .Sh NAME
@@ -50,8 +50,6 @@
 .Op Fl v
 .Op Fl x Ar extended_param
 .Op Fl V
-.Op Fl y
-.Op Fl Y
 .Sh DESCRIPTION
 .Nm Avrdude
 is a program for downloading code and data to Atmel AVR
@@ -673,30 +671,6 @@ to the chosen programmer implementation as an extended parameter.
 The interpretation of the extended parameter depends on the
 programmer itself.
 See below for a list of programmers accepting extended parameters.
-.It Fl y
-Tells
-.Nm
-to use the last four bytes of the connected parts' EEPROM memory to
-track the number of times the device has been erased.  When this
-option is used and the
-.Fl e
-flag is specified to generate a chip erase, the previous counter will
-be saved before the chip erase, it is then incremented, and written
-back after the erase cycle completes.  Presumably, the device would
-only be erased just before being programmed, and thus, this can be
-utilized to give an indication of how many erase-rewrite cycles the
-part has undergone.  Since the FLASH memory can only endure a finite
-number of erase-rewrite cycles, one can use this option to track when
-a part is nearing the limit.  The typical limit for Atmel AVR FLASH is
-1000 cycles.  Of course, if the application needs the last four bytes
-of EEPROM memory, this option should not be used.
-.It Fl Y Ar cycles
-Instructs
-.Nm
-to initialize the erase-rewrite cycle counter residing at the last four
-bytes of EEPROM memory to the specified value.  If the application
-needs the last four bytes of EEPROM memory, this option should not be
-used.
 .El
 .Ss Terminal mode
 In this mode,
diff --git a/avrdude.h b/avrdude.h
index ad341680..ede4aea5 100644
--- a/avrdude.h
+++ b/avrdude.h
@@ -24,7 +24,6 @@
 extern char * progname;		/* name of program, for messages */
 extern char progbuf[];		/* spaces same length as progname */
 
-extern int do_cycles;		/* track erase-rewrite cycles (-y) */
 extern int ovsigck;		/* override signature check (-F) */
 extern int verbose;		/* verbosity level (-v, -vv, ...) */
 extern int quell_progress;	/* quiteness level (-q, -qq) */
diff --git a/doc/avrdude.texi b/doc/avrdude.texi
index 985d5dc1..a8c16d71 100644
--- a/doc/avrdude.texi
+++ b/doc/avrdude.texi
@@ -709,27 +709,6 @@ an extended parameter.  The interpretation of the extended parameter
 depends on the programmer itself.  See below for a list of programmers
 accepting extended parameters.
 
-@item -y
-Tells AVRDUDE to use the last four bytes of the connected parts' EEPROM
-memory to track the number of times the device has been erased.  When
-this option is used and the @option{-e} flag is specified to generate a
-chip erase, the previous counter will be saved before the chip erase, it
-is then incremented, and written back after the erase cycle completes.
-Presumably, the device would only be erased just before being
-programmed, and thus, this can be utilized to give an indication of how
-many erase-rewrite cycles the part has undergone.  Since the FLASH
-memory can only endure a finite number of erase-rewrite cycles, one can
-use this option to track when a part is nearing the limit.  The typical
-limit for Atmel AVR FLASH is 1000 cycles.  Of course, if the
-application needs the last four bytes of EEPROM memory, this option
-should not be used.
-
-@item -Y @var{cycles}
-Instructs AVRDUDE to initialize the erase-rewrite cycle counter residing
-at the last four bytes of EEPROM memory to the specified value.  If the
-application needs the last four bytes of EEPROM memory, this option
-should not be used.
-
 @end table
 
 @page
diff --git a/main.c b/main.c
index f480b44e..41875c81 100644
--- a/main.c
+++ b/main.c
@@ -82,7 +82,6 @@ static PROGRAMMER * pgm;
 /*
  * global options
  */
-int    do_cycles;   /* track erase-rewrite cycles */
 int    verbose;     /* verbose output */
 int    quell_progress; /* un-verebose output */
 int    ovsigck;     /* 1=override sig check, 0=don't */
@@ -323,8 +322,6 @@ int main(int argc, char * argv [])
   char  * partdesc;    /* part id */
   char    sys_config[PATH_MAX]; /* system wide config file */
   char    usr_config[PATH_MAX]; /* per-user config file */
-  int     cycles;      /* erase-rewrite cycles */
-  int     set_cycles;  /* value to set the erase-rewrite cycles to */
   char  * e;           /* for strtol() error checking */
   int     baudrate;    /* override default programmer baud rate */
   double  bitclock;    /* Specify programmer bit clock (JTAG ICE) */
@@ -405,8 +402,6 @@ int main(int argc, char * argv [])
   pgm           = NULL;
   programmer    = default_programmer;
   verbose       = 0;
-  do_cycles     = 0;
-  set_cycles    = -1;
   baudrate      = 0;
   bitclock      = 0.0;
   ispdelay      = 0;
@@ -588,17 +583,13 @@ int main(int argc, char * argv [])
         break;
 
       case 'y':
-        do_cycles = 1;
+        fprintf(stderr, "%s: erase cycle counter no longer supported\n",
+                progname);
         break;
 
       case 'Y':
-        set_cycles = strtol(optarg, &e, 0);
-        if ((e == optarg) || (*e != 0)) {
-          fprintf(stderr, "%s: invalid cycle count '%s'\n",
-                  progname, optarg);
-          exit(1);
-        }
-        do_cycles = 1;
+        fprintf(stderr, "%s: erase cycle counter no longer supported\n",
+                progname);
         break;
 
       case '?': /* help */
@@ -1176,48 +1167,6 @@ int main(int argc, char * argv [])
     }
   }
 
-  /*
-   * Display cycle count, if and only if it is not set later on.
-   *
-   * The cycle count will be displayed anytime it will be changed later.
-   */
-  if (init_ok && !(p->flags & AVRPART_AVR32) && do_cycles) {
-    /*
-     * see if the cycle count in the last four bytes of eeprom seems
-     * reasonable
-     */
-    rc = avr_get_cycle_count(pgm, p, &cycles);
-    if (quell_progress < 2) {
-      if ((rc >= 0) && (cycles != 0)) {
-        fprintf(stderr,
-              "%s: current erase-rewrite cycle count is %d\n",
-              progname, cycles);
-      }
-    }
-  }
-
-  if (init_ok && set_cycles != -1 && !(p->flags & AVRPART_AVR32)) {
-    rc = avr_get_cycle_count(pgm, p, &cycles);
-    if (rc == 0) {
-      /*
-       * only attempt to update the cycle counter if we can actually
-       * read the old value
-       */
-      cycles = set_cycles;
-      if (quell_progress < 2) {
-        fprintf(stderr, "%s: setting erase-rewrite cycle count to %d\n",
-              progname, cycles);
-      }
-      rc = avr_put_cycle_count(pgm, p, cycles);
-      if (rc < 0) {
-        fprintf(stderr,
-                "%s: WARNING: failed to update the erase-rewrite cycle "
-                "counter\n",
-                progname);
-      }
-    }
-  }
-
   if (init_ok && erase) {
     /*
      * erase the chip's flash and eeprom memories, this is required