Index: main.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/main.c,v retrieving revision 1.89 diff -u -w -r1.89 main.c --- main.c 30 Nov 2003 16:49:00 -0000 1.89 +++ main.c 30 Nov 2003 21:46:56 -0000 @@ -1329,7 +1329,7 @@ * before the chip can accept new programming */ fprintf(stderr, "%s: erasing chip\n", progname); - pgm->chip_erase(pgm, p); + avr_chip_erase(pgm, p); } else if (set_cycles == -1) { /* Index: avr.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/avr.c,v retrieving revision 1.60 diff -u -w -r1.60 avr.c --- avr.c 30 Nov 2003 16:42:10 -0000 1.60 +++ avr.c 30 Nov 2003 21:46:56 -0000 @@ -777,4 +777,41 @@ } return 0; +} + +int avr_chip_erase(PROGRAMMER * pgm, AVRPART * p) +{ + int cycles; + int rc; + + rc = avr_get_cycle_count(pgm, p, &cycles); + + if(rc!=0) { + do_cycles = 0; + } + + /* + * only print out the current cycle count if we aren't going to + * display it below + */ + if (!do_cycles && (rc == 0) && (cycles != 0xffffffff)) { + fprintf(stderr, + "%s: current erase-rewrite cycle count is %d\n", + progname, cycles); + } + + rc = pgm->chip_erase(pgm, p); + + if (do_cycles && (rc==0) && (cycles != 0xffffffff)) { + if (cycles == 0x00ffff) { + cycles = 0; + } + cycles++; + fprintf(stderr, "%s: erase-rewrite cycle count is now %d\n", + progname, cycles); + avr_put_cycle_count(pgm, p, cycles); + + } + + return rc; } Index: avr.h =================================================================== RCS file: /cvsroot/avrdude/avrdude/avr.h,v retrieving revision 1.28 diff -u -w -r1.28 avr.h --- avr.h 30 Nov 2003 16:42:10 -0000 1.28 +++ avr.h 30 Nov 2003 21:46:56 -0000 @@ -69,6 +69,8 @@ int avr_mem_hiaddr(AVRMEM * mem); +int avr_chip_erase(PROGRAMMER * pgm, AVRPART * p); + extern void report_progress (int completed, int total, char *hdr); #endif Index: par.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/par.c,v retrieving revision 1.5 diff -u -w -r1.5 par.c --- par.c 22 Feb 2003 16:45:13 -0000 1.5 +++ par.c 30 Nov 2003 21:46:56 -0000 @@ -319,8 +319,6 @@ { unsigned char cmd[4]; unsigned char res[4]; - int cycles; - int rc; if (p->op[AVR_OP_CHIP_ERASE] == NULL) { fprintf(stderr, "chip erase instruction not defined for part \"%s\"\n", @@ -328,19 +326,6 @@ return -1; } - rc = avr_get_cycle_count(pgm, p, &cycles); - - /* - * only print out the current cycle count if we aren't going to - * display it below - */ - if (!do_cycles && ((rc >= 0) && (cycles != 0xffffffff))) { - fprintf(stderr, - "%s: current erase-rewrite cycle count is %d%s\n", - progname, cycles, - do_cycles ? "" : " (if being tracked)"); - } - pgm->pgm_led(pgm, ON); memset(cmd, 0, sizeof(cmd)); @@ -351,16 +336,6 @@ pgm->initialize(pgm, p); pgm->pgm_led(pgm, OFF); - - if (do_cycles && (cycles != -1)) { - if (cycles == 0x00ffff) { - cycles = 0; - } - cycles++; - fprintf(stderr, "%s: erase-rewrite cycle count is now %d\n", - progname, cycles); - avr_put_cycle_count(pgm, p, cycles); - } return 0; } Index: stk500.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/stk500.c,v retrieving revision 1.39 diff -u -w -r1.39 stk500.c --- stk500.c 13 Oct 2003 21:32:53 -0000 1.39 +++ stk500.c 30 Nov 2003 21:46:56 -0000 @@ -171,8 +171,6 @@ { unsigned char cmd[4]; unsigned char res[4]; - int cycles; - int rc; if (p->op[AVR_OP_CHIP_ERASE] == NULL) { fprintf(stderr, "chip erase instruction not defined for part \"%s\"\n", @@ -180,19 +178,6 @@ return -1; } - rc = avr_get_cycle_count(pgm, p, &cycles); - - /* - * only print out the current cycle count if we aren't going to - * display it below - */ - if (!do_cycles && ((rc >= 0) && (cycles != 0xffffffff))) { - fprintf(stderr, - "%s: current erase-rewrite cycle count is %d%s\n", - progname, cycles, - do_cycles ? "" : " (if being tracked)"); - } - pgm->pgm_led(pgm, ON); memset(cmd, 0, sizeof(cmd)); @@ -204,16 +189,6 @@ pgm->pgm_led(pgm, OFF); - if (do_cycles && (cycles != -1)) { - if (cycles == 0x00ffff) { - cycles = 0; - } - cycles++; - fprintf(stderr, "%s: erase-rewrite cycle count is now %d\n", - progname, cycles); - avr_put_cycle_count(pgm, p, cycles); - } - return 0; }