Skip to content

Commit 0f7d4d2

Browse files
committed
Add warning messages for programmers that doesn't support -B
1 parent 39230b1 commit 0f7d4d2

21 files changed

+113
-53
lines changed

src/avr910.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,12 @@ static int avr910_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) {
321321
}
322322

323323
static int avr910_open(PROGRAMMER *pgm, const char *port) {
324-
union pinfo pinfo;
324+
if(pgm->bitclock != 0.0) {
325+
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
326+
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
327+
}
325328

329+
union pinfo pinfo;
326330
if(pgm->baudrate == 0)
327331
pgm->baudrate = 19200;
328332

@@ -334,11 +338,6 @@ static int avr910_open(PROGRAMMER *pgm, const char *port) {
334338

335339
(void) avr910_drain(pgm, 0);
336340

337-
if(pgm->bitclock != 0.0) {
338-
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
339-
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
340-
}
341-
342341
return 0;
343342
}
344343

src/avrdude.conf.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,7 @@ programmer # linuxspi
866866
desc = "Use Linux SPI device in /dev/spidev*";
867867
type = "linuxspi";
868868
prog_modes = PM_TPI | PM_ISP;
869+
extra_features = HAS_BITCLOCK_ADJ;
869870
connection_type = spi;
870871
reset = 25; # Pi GPIO number - this is J8:22
871872
;

src/buspirate.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -441,12 +441,18 @@ static int buspirate_verifyconfig(const PROGRAMMER *pgm) {
441441

442442
// ====== Programmer methods =======
443443
static int buspirate_open(PROGRAMMER *pgm, const char *port) {
444-
union pinfo pinfo;
444+
if(pgm->bitclock != 0.0) {
445+
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ)) {
446+
pmsg_warning("%s does not support adjustable bitclock speed using -B.\n", pgmid);
447+
imsg_warning("Ignoring -B flag. Use -x help to view alternative SPI clock options\n");
448+
}
449+
}
445450

446451
// BusPirate runs at 115200 by default
447452
if(pgm->baudrate == 0)
448453
pgm->baudrate = 115200;
449454

455+
union pinfo pinfo;
450456
pinfo.serialinfo.baud = pgm->baudrate;
451457
pinfo.serialinfo.cflags = SERIAL_8N1;
452458
pgm->port = port;
@@ -457,13 +463,6 @@ static int buspirate_open(PROGRAMMER *pgm, const char *port) {
457463
// Drain any extraneous input
458464
serial_drain(&pgm->fd, 0);
459465

460-
if(pgm->bitclock != 0.0) {
461-
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ)) {
462-
pmsg_warning("%s does not support adjustable bitclock speed using -B.\n", pgmid);
463-
imsg_warning("Ignoring -B flag. Use -x help to view alternative SPI clock options\n");
464-
}
465-
}
466-
467466
return 0;
468467
}
469468

src/butterfly.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -321,24 +321,24 @@ static void butterfly_enable(PROGRAMMER *pgm, const AVRPART *p) {
321321
}
322322

323323
static int butterfly_open(PROGRAMMER *pgm, const char *port) {
324-
union pinfo pinfo;
324+
if(pgm->bitclock != 0.0) {
325+
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
326+
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
327+
}
325328

326329
pgm->port = port;
327330

328331
// If baudrate was not specified use 19200 Baud
329-
if(pgm->baudrate == 0) {
332+
if(pgm->baudrate == 0)
330333
pgm->baudrate = 19200;
331-
}
334+
union pinfo pinfo;
332335
pinfo.serialinfo.baud = pgm->baudrate;
333336
pinfo.serialinfo.cflags = SERIAL_8N1;
334337
if(serial_open(port, pinfo, &pgm->fd) == -1) {
335338
return -1;
336339
}
337340

338-
if(pgm->bitclock != 0.0) {
339-
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
340-
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
341-
}
341+
342342

343343
if(my.autoreset) {
344344
// This code assumes a negative-logic USB to TTL serial adapter

src/flip1.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,12 @@ void flip1_initpgm(PROGRAMMER *pgm) {
180180
#ifdef HAVE_LIBUSB
181181

182182
static int flip1_open(PROGRAMMER *pgm, const char *port_spec) {
183-
FLIP1(pgm)->dfu = dfu_open(port_spec);
184-
185183
if(pgm->bitclock != 0.0) {
186184
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
187185
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
188186
}
189187

188+
FLIP1(pgm)->dfu = dfu_open(port_spec);
190189
return (FLIP1(pgm)->dfu != NULL)? 0: -1;
191190
}
192191

src/flip2.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,13 +178,12 @@ void flip2_initpgm(PROGRAMMER *pgm) {
178178
}
179179

180180
static int flip2_open(PROGRAMMER *pgm, const char *port_spec) {
181-
FLIP2(pgm)->dfu = dfu_open(port_spec);
182-
183181
if(pgm->bitclock != 0.0) {
184182
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
185183
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
186184
}
187185

186+
FLIP2(pgm)->dfu = dfu_open(port_spec);
188187
return (FLIP2(pgm)->dfu != NULL)? 0: -1;
189188
}
190189

src/jtag3.c

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,24 +1059,30 @@ static int jtag3_initialize(const PROGRAMMER *pgm, const AVRPART *p) {
10591059
if(jtag3_setparm(pgm, SCOPE_AVR, 1, PARM3_CONNECTION, parm, 1) < 0)
10601060
return -1;
10611061

1062-
if(conn == PARM3_CONN_PDI || conn == PARM3_CONN_UPDI)
1063-
my.set_sck = jtag3_set_sck_xmega_pdi;
1064-
else if(conn == PARM3_CONN_JTAG) {
1065-
if(is_pdi(p))
1066-
my.set_sck = jtag3_set_sck_xmega_jtag;
1067-
else
1068-
my.set_sck = jtag3_set_sck_mega_jtag;
1069-
}
1070-
if(pgm->bitclock != 0.0 && my.set_sck != NULL) {
1071-
unsigned int clock = 1E-3/pgm->bitclock; // kHz
10721062

1073-
pmsg_notice2("%s(): trying to set JTAG clock to %u kHz\n", __func__, clock);
1074-
parm[0] = clock & 0xff;
1075-
parm[1] = (clock >> 8) & 0xff;
1076-
if(my.set_sck(pgm, parm) < 0)
1077-
return -1;
1063+
if(pgm->bitclock != 0.0 && !(pgm->extra_features & HAS_BITCLOCK_ADJ))
1064+
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
1065+
else {
1066+
if(conn == PARM3_CONN_PDI || conn == PARM3_CONN_UPDI)
1067+
my.set_sck = jtag3_set_sck_xmega_pdi;
1068+
else if(conn == PARM3_CONN_JTAG) {
1069+
if(is_pdi(p))
1070+
my.set_sck = jtag3_set_sck_xmega_jtag;
1071+
else
1072+
my.set_sck = jtag3_set_sck_mega_jtag;
1073+
}
1074+
if(pgm->bitclock != 0.0 && my.set_sck != NULL) {
1075+
unsigned int clock = 1E-3/pgm->bitclock; // kHz
1076+
1077+
pmsg_notice2("%s(): trying to set JTAG clock to %u kHz\n", __func__, clock);
1078+
parm[0] = clock & 0xff;
1079+
parm[1] = (clock >> 8) & 0xff;
1080+
if(my.set_sck(pgm, parm) < 0)
1081+
return -1;
1082+
}
10781083
}
10791084

1085+
10801086
if(conn == PARM3_CONN_JTAG) {
10811087
pmsg_notice2("%s(): trying to set JTAG daisy-chain info to %d,%d,%d,%d\n", __func__,
10821088
my.jtagchain[0], my.jtagchain[1], my.jtagchain[2], my.jtagchain[3]);

src/jtagmkI.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,13 @@ static int jtagmkI_initialize(const PROGRAMMER *pgm, const AVRPART *p) {
453453
}
454454

455455
if(pgm->bitclock != 0.0) {
456-
pmsg_notice2("%s(): trying to set JTAG clock period to %.1f us\n", __func__, pgm->bitclock);
457-
if(jtagmkI_set_sck_period(pgm, pgm->bitclock) != 0)
458-
return -1;
456+
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
457+
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
458+
else {
459+
pmsg_notice2("%s(): trying to set JTAG clock period to %.1f us\n", __func__, pgm->bitclock);
460+
if(jtagmkI_set_sck_period(pgm, pgm->bitclock) != 0)
461+
return -1;
462+
}
459463
}
460464

461465
cmd[0] = CMD_STOP;

src/jtagmkII.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,10 +1197,14 @@ static int jtagmkII_initialize(const PROGRAMMER *pgm, const AVRPART *p) {
11971197
serial_setparams(&pgm->fd, pgm->baudrate, SERIAL_8N1);
11981198
}
11991199
}
1200-
if((pgm->flag & PGM_FL_IS_JTAG) && pgm->bitclock != 0.0) {
1201-
pmsg_notice2("%s(): trying to set JTAG clock period to %.1f us\n", __func__, pgm->bitclock);
1202-
if(jtagmkII_set_sck_period(pgm, pgm->bitclock) != 0)
1203-
return -1;
1200+
if(pgm->bitclock != 0.0) {
1201+
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
1202+
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
1203+
else if(pgm->flag & PGM_FL_IS_JTAG) {
1204+
pmsg_notice2("%s(): trying to set JTAG clock period to %.1f us\n", __func__, pgm->bitclock);
1205+
if(jtagmkII_set_sck_period(pgm, pgm->bitclock) != 0)
1206+
return -1;
1207+
}
12041208
}
12051209

12061210
if((pgm->flag & PGM_FL_IS_JTAG) && jtagmkII_setparm(pgm, PAR_DAISY_CHAIN_INFO, my.jtagchain) < 0) {

src/micronucleus.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,11 @@ static int micronucleus_chip_erase(const PROGRAMMER *pgm, const AVRPART *p) {
579579
static int micronucleus_open(PROGRAMMER *pgm, const char *port) {
580580
pmsg_debug("micronucleus_open(\"%s\")\n", port);
581581

582+
if(pgm->bitclock != 0.0) {
583+
if(!(pgm->extra_features & HAS_BITCLOCK_ADJ))
584+
pmsg_warning("%s does not support adjustable bitclock speed. Ignoring -B flag\n", pgmid);
585+
}
586+
582587
struct pdata *pdata = &my;
583588
const char *bus_name = NULL;
584589
char *dev_name = NULL;

0 commit comments

Comments
 (0)