diff --git a/avrdude/ChangeLog b/avrdude/ChangeLog index 6b50daf9..2aedc8ee 100644 --- a/avrdude/ChangeLog +++ b/avrdude/ChangeLog @@ -1,3 +1,10 @@ +2004-01-03 Jan-Hinnerk Reichert + + * avr910.c, pgm.c, pgm.h, config_gram.y, lexer.l: Add new configuration + parameter baudrate to support avr910-programmers with non-standard + baudrates + * avrdude.conf.in, doc/avrdude.texi: Added "baudrate" to documentation. + 2004-01-03 Jan-Hinnerk Reichert avr910.c: Removed debugging stuff that is no longer needed. diff --git a/avrdude/avr910.c b/avrdude/avr910.c index a64b71ab..4ec05483 100644 --- a/avrdude/avr910.c +++ b/avrdude/avr910.c @@ -307,8 +307,15 @@ static int avr910_cmd(PROGRAMMER * pgm, unsigned char cmd[4], static void avr910_open(PROGRAMMER * pgm, char * port) { + /* + * If baudrate was not specified use 19.200 Baud + */ + if(pgm->baudrate == 0) { + pgm->baudrate = 19200; + } + strcpy(pgm->port, port); - pgm->fd = serial_open(port, 19200); + pgm->fd = serial_open(port, pgm->baudrate); /* * drain any extraneous input diff --git a/avrdude/avrdude.conf.in b/avrdude/avrdude.conf.in index 89bf3d18..5c045553 100644 --- a/avrdude/avrdude.conf.in +++ b/avrdude/avrdude.conf.in @@ -13,18 +13,19 @@ # Possible entry formats are: # # programmer -# id = [, [, ] ...] ; # are quoted strings -# desc = ; # quoted string -# type = par | stk500 | avr910; # programmer type -# vcc = [, ... ] ; # pin number(s) -# reset = ; # pin number -# sck = ; # pin number -# mosi = ; # pin number -# miso = ; # pin number -# errled = ; # pin number -# rdyled = ; # pin number -# pgmled = ; # pin number -# vfyled = ; # pin number +# id = [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = par | stk500 | avr910; # programmer type +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number # ; # # part diff --git a/avrdude/config_gram.y b/avrdude/config_gram.y index 8d56fc95..8624009a 100644 --- a/avrdude/config_gram.y +++ b/avrdude/config_gram.y @@ -65,6 +65,7 @@ static int parse_cmdbits(OPCODE * op); %token K_PAGE_SIZE %token K_PAGED +%token K_BAUDRATE %token K_BS2 %token K_BUFF %token K_CHIP_ERASE_DELAY @@ -358,6 +359,12 @@ prog_parm : } } | + K_BAUDRATE TKN_EQUAL TKN_NUMBER { + { + current_prog->baudrate = $3->value.number; + } + } | + K_RESET TKN_EQUAL TKN_NUMBER { free_token($1); assign_pin(PIN_AVR_RESET, $3); } | K_SCK TKN_EQUAL TKN_NUMBER { free_token($1); diff --git a/avrdude/doc/avrdude.texi b/avrdude/doc/avrdude.texi index efacd460..7eca2355 100644 --- a/avrdude/doc/avrdude.texi +++ b/avrdude/doc/avrdude.texi @@ -940,17 +940,18 @@ The format of the programmer definition is as follows: @example programmer id = [, [, ] ...] ; # are quoted strings - desc = ; # quoted string - type = par | stk500 ; # programmer type - vcc = [, ... ] ; # pin number(s) - reset = ; # pin number - sck = ; # pin number - mosi = ; # pin number - miso = ; # pin number - errled = ; # pin number - rdyled = ; # pin number - pgmled = ; # pin number - vfyled = ; # pin number + desc = ; # quoted string + type = par | stk500 ; # programmer type + baudrate = ; # baudrate for avr910 + vcc = [, ... ] ; # pin number(s) + reset = ; # pin number + sck = ; # pin number + mosi = ; # pin number + miso = ; # pin number + errled = ; # pin number + rdyled = ; # pin number + pgmled = ; # pin number + vfyled = ; # pin number ; @end example diff --git a/avrdude/lexer.l b/avrdude/lexer.l index 65f9f8f5..7baeedca 100644 --- a/avrdude/lexer.l +++ b/avrdude/lexer.l @@ -117,6 +117,7 @@ SIGN [+-] bank_size { yylval=NULL; return K_PAGE_SIZE; } banked { yylval=NULL; return K_PAGED; } +baudrate { yylval=NULL; return K_BAUDRATE; } bs2 { yylval=NULL; return K_BS2; } buff { yylval=NULL; return K_BUFF; } chip_erase_delay { yylval=NULL; return K_CHIP_ERASE_DELAY; } diff --git a/avrdude/pgm.c b/avrdude/pgm.c index 8ee45779..1fc28d18 100644 --- a/avrdude/pgm.c +++ b/avrdude/pgm.c @@ -57,6 +57,7 @@ PROGRAMMER * pgm_new(void) pgm->type[0] = 0; pgm->config_file[0] = 0; pgm->lineno = 0; + pgm->baudrate = 0; for (i=0; ipinno[i] = 0; diff --git a/avrdude/pgm.h b/avrdude/pgm.h index b0297965..d6219f5f 100644 --- a/avrdude/pgm.h +++ b/avrdude/pgm.h @@ -42,6 +42,7 @@ typedef struct programmer_t { char port[PGM_PORTLEN]; unsigned int pinno[N_PINS]; int ppidata; + int baudrate; int fd; int page_size; /* page size if the programmer supports paged write/load */ int (*rdy_led) (struct programmer_t * pgm, int value);