@@ -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 ]);
0 commit comments