Index: avr.c =================================================================== RCS file: /cvsroot/avrdude/avrdude/avr.c,v retrieving revision 1.46 diff -u -r1.46 avr.c --- avr.c 14 Feb 2003 20:34:02 -0000 1.46 +++ avr.c 20 Feb 2003 05:57:37 -0000 @@ -57,6 +57,7 @@ p->id[0] = 0; p->desc[0] = 0; + p->reset_disposition = RESET_DEDICATED; p->mem = lcreat(NULL, 0); @@ -1053,6 +1054,15 @@ } +char * reset_disp_str(int r) +{ + switch (r) { + case RESET_DEDICATED : return "dedicated"; + case RESET_IO : return "possible i/o"; + default : return ""; + } +} + void avr_display(FILE * f, AVRPART * p, char * prefix, int verbose) { @@ -1063,11 +1073,17 @@ AVRMEM * m; fprintf(f, - "%sAVR Part : %s\n" - "%sChip Erase delay : %d us\n" - "%sMemory Detail :\n\n", + "%sAVR Part : %s\n" + "%sChip Erase delay : %d us\n" + "%sPAGEL : P%02X\n" + "%sBS2 : P%02X\n" + "%sRESET disposition : %s\n" + "%sMemory Detail :\n\n", prefix, p->desc, prefix, p->chip_erase_delay, + prefix, p->pagel, + prefix, p->bs2, + prefix, reset_disp_str(p->reset_disposition), prefix); px = prefix; Index: avrdude.conf.sample =================================================================== RCS file: /cvsroot/avrdude/avrdude/avrdude.conf.sample,v retrieving revision 1.36 diff -u -r1.36 avrdude.conf.sample --- avrdude.conf.sample 19 Feb 2003 09:01:54 -0000 1.36 +++ avrdude.conf.sample 20 Feb 2003 05:57:39 -0000 @@ -1082,6 +1082,9 @@ desc = "ATMEGA128"; devicecode = 0xB2; chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; @@ -1089,6 +1092,8 @@ "x x x x x x x x x x x x x x x x"; memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ size = 4096; min_write_delay = 9000; max_write_delay = 9000; Index: avrpart.h =================================================================== RCS file: /cvsroot/avrdude/avrdude/avrpart.h,v retrieving revision 1.6 diff -u -r1.6 avrpart.h --- avrpart.h 9 Feb 2003 13:36:47 -0000 1.6 +++ avrpart.h 20 Feb 2003 05:57:39 -0000 @@ -51,6 +51,11 @@ AVR_CMDBIT_OUTPUT /* this bit is an output bit */ }; +enum { /* these are assigned to reset_disposition of AVRPART */ + RESET_DEDICATED, /* reset pin is dedicated */ + RESET_IO /* reset pin might be configured as an I/O pin */ +}; + /* * serial programming instruction bit specifications */ @@ -72,6 +77,10 @@ char id[AVR_IDLEN]; /* short part name */ int devicecode; /* Atmel STK500 device code */ int chip_erase_delay; /* microseconds */ + unsigned char pagel; /* for parallel programming */ + unsigned char bs2; /* for parallel programming */ + int reset_disposition; /* see RESET_ enums */ + OPCODE * op[AVR_OP_MAX]; /* opcodes */ LISTID mem; /* avr memory definitions */ Index: config_gram.y =================================================================== RCS file: /cvsroot/avrdude/avrdude/config_gram.y,v retrieving revision 1.25 diff -u -r1.25 config_gram.y --- config_gram.y 14 Feb 2003 20:34:02 -0000 1.25 +++ config_gram.y 20 Feb 2003 05:57:39 -0000 @@ -62,20 +62,25 @@ %token K_PAGE_SIZE %token K_PAGED + +%token K_BS2 %token K_BUFF %token K_CHIP_ERASE_DELAY +%token K_DEDICATED %token K_DESC %token K_DEVICECODE %token K_EEPROM %token K_ERRLED %token K_FLASH %token K_ID +%token K_IO %token K_LOADPAGE %token K_MAX_WRITE_DELAY %token K_MIN_WRITE_DELAY %token K_MISO %token K_MOSI %token K_NUM_PAGES +%token K_PAGEL %token K_PAR %token K_PART %token K_PGMLED @@ -331,6 +336,10 @@ ; +reset_disposition : + K_DEDICATED | K_IO +; + part_parm : K_ID TKN_EQUAL TKN_STRING { @@ -356,6 +365,28 @@ K_CHIP_ERASE_DELAY TKN_EQUAL TKN_NUMBER { current_part->chip_erase_delay = $3->value.number; + free_token($3); + } | + + K_PAGEL TKN_EQUAL TKN_NUMBER + { + current_part->pagel = $3->value.number; + free_token($3); + } | + + K_BS2 TKN_EQUAL TKN_NUMBER + { + current_part->bs2 = $3->value.number; + free_token($3); + } | + + K_RESET TKN_EQUAL reset_disposition + { + if ($3->primary == K_DEDICATED) + current_part->reset_disposition = RESET_DEDICATED; + else if ($3->primary == K_IO) + current_part->reset_disposition = RESET_IO; + free_token($3); } | Index: lexer.l =================================================================== RCS file: /cvsroot/avrdude/avrdude/lexer.l,v retrieving revision 1.19 diff -u -r1.19 lexer.l --- lexer.l 14 Feb 2003 20:34:03 -0000 1.19 +++ lexer.l 20 Feb 2003 05:57:39 -0000 @@ -117,14 +117,17 @@ bank_size { yylval=NULL; return K_PAGE_SIZE; } banked { yylval=NULL; return K_PAGED; } +bs2 { yylval=NULL; return K_BS2; } buff { yylval=NULL; return K_BUFF; } chip_erase_delay { yylval=NULL; return K_CHIP_ERASE_DELAY; } +dedicated { yylval=new_token(K_DEDICATED); return K_DEDICATED; } desc { yylval=NULL; return K_DESC; } devicecode { yylval=NULL; return K_DEVICECODE; } eeprom { yylval=NULL; return K_EEPROM; } errled { yylval=NULL; return K_ERRLED; } flash { yylval=NULL; return K_FLASH; } id { yylval=NULL; return K_ID; } +io { yylval=new_token(K_IO); return K_IO; } max_write_delay { yylval=NULL; return K_MAX_WRITE_DELAY; } min_write_delay { yylval=NULL; return K_MIN_WRITE_DELAY; } miso { yylval=NULL; return K_MISO; } @@ -133,6 +136,7 @@ num_pages { yylval=NULL; return K_NUM_PAGES; } page_size { yylval=NULL; return K_PAGE_SIZE; } paged { yylval=NULL; return K_PAGED; } +pagel { yylval=NULL; return K_PAGEL; } part { yylval=NULL; return K_PART; } pgmled { yylval=NULL; return K_PGMLED; } par { yylval=NULL; return K_PAR; }