@@ -1431,7 +1431,7 @@ static int jtag3_initialize(const PROGRAMMER *pgm, const AVRPART *p) {
1431
1431
free (resp );
1432
1432
1433
1433
// Read chip silicon revision
1434
- if (pgm -> read_chip_rev ) {
1434
+ if (pgm -> read_chip_rev && p -> prog_modes & ( PM_PDI | PM_UPDI ) ) {
1435
1435
char chip_rev [AVR_CHIP_REVLEN ];
1436
1436
pgm -> read_chip_rev (pgm , p , chip_rev );
1437
1437
pmsg_notice ("silicon revision: %x.%x\n" , chip_rev [0 ] >> 4 , chip_rev [0 ] & 0x0f );
@@ -2116,17 +2116,17 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM
2116
2116
paddr = addr & ~(pagesize - 1 );
2117
2117
paddr_ptr = & PDATA (pgm )-> eeprom_pageaddr ;
2118
2118
cache_ptr = PDATA (pgm )-> eeprom_pagecache ;
2119
- } else if (strcmp (mem -> desc , "lfuse" ) == 0 ) {
2119
+ } else if (str_eq (mem -> desc , "lfuse" )) {
2120
2120
cmd [3 ] = MTYPE_FUSE_BITS ;
2121
2121
addr = 0 ;
2122
2122
if (pgm -> flag & PGM_FL_IS_DW )
2123
2123
unsupp = 1 ;
2124
- } else if (strcmp (mem -> desc , "hfuse" ) == 0 ) {
2124
+ } else if (str_eq (mem -> desc , "hfuse" )) {
2125
2125
cmd [3 ] = MTYPE_FUSE_BITS ;
2126
2126
addr = 1 ;
2127
2127
if (pgm -> flag & PGM_FL_IS_DW )
2128
2128
unsupp = 1 ;
2129
- } else if (strcmp (mem -> desc , "efuse" ) == 0 ) {
2129
+ } else if (str_eq (mem -> desc , "efuse" )) {
2130
2130
cmd [3 ] = MTYPE_FUSE_BITS ;
2131
2131
addr = 2 ;
2132
2132
if (pgm -> flag & PGM_FL_IS_DW )
@@ -2139,18 +2139,18 @@ static int jtag3_read_byte(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM
2139
2139
cmd [3 ] = MTYPE_FUSE_BITS ;
2140
2140
if (!(p -> prog_modes & PM_UPDI ))
2141
2141
addr = mem -> offset & 7 ;
2142
- } else if (strcmp (mem -> desc , "usersig" ) == 0 ||
2143
- strcmp (mem -> desc , "userrow" ) == 0 ) {
2142
+ } else if (str_eq (mem -> desc , "usersig" ) ||
2143
+ str_eq (mem -> desc , "userrow" )) {
2144
2144
cmd [3 ] = MTYPE_USERSIG ;
2145
- } else if (strcmp (mem -> desc , "prodsig" ) == 0 ) {
2145
+ } else if (str_eq (mem -> desc , "prodsig" )) {
2146
2146
cmd [3 ] = MTYPE_PRODSIG ;
2147
- } else if (strcmp (mem -> desc , "sernum" ) == 0 ) {
2147
+ } else if (str_eq (mem -> desc , "sernum" )) {
2148
2148
cmd [3 ] = MTYPE_SIGN_JTAG ;
2149
- } else if (strcmp (mem -> desc , "osccal16" ) == 0 ) {
2149
+ } else if (str_eq (mem -> desc , "osccal16" )) {
2150
2150
cmd [3 ] = MTYPE_SIGN_JTAG ;
2151
- } else if (strcmp (mem -> desc , "osccal20" ) == 0 ) {
2151
+ } else if (str_eq (mem -> desc , "osccal20" )) {
2152
2152
cmd [3 ] = MTYPE_SIGN_JTAG ;
2153
- } else if (strcmp (mem -> desc , "tempsense" ) == 0 ) {
2153
+ } else if (str_eq (mem -> desc , "tempsense" )) {
2154
2154
cmd [3 ] = MTYPE_SIGN_JTAG ;
2155
2155
} else if (strcmp (mem -> desc , "osc16err" ) == 0 ) {
2156
2156
cmd [3 ] = MTYPE_SIGN_JTAG ;
@@ -3212,6 +3212,7 @@ void jtag3_initpgm(PROGRAMMER *pgm) {
3212
3212
pgm -> teardown = jtag3_teardown ;
3213
3213
pgm -> page_size = 256 ;
3214
3214
pgm -> flag = PGM_FL_IS_JTAG ;
3215
+ pgm -> read_chip_rev = jtag3_read_chip_rev ;
3215
3216
3216
3217
/*
3217
3218
* hardware dependent functions
0 commit comments