diff --git a/src/avr.c b/src/avr.c index 632a95a22..386146d8a 100644 --- a/src/avr.c +++ b/src/avr.c @@ -382,8 +382,7 @@ int avr_read_mem(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *mem, con return avr_mem_hiaddr(mem); } - if (pgm->paged_load != NULL && mem->page_size > 1 && - mem->size % mem->page_size == 0) { + if (avr_has_paged_access(pgm, mem)) { /* * the programmer supports a paged mode read */ @@ -898,7 +897,7 @@ int avr_write_mem(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *m, int return i; } - if (pgm->paged_write != NULL && m->page_size > 1) { + if (avr_has_paged_access(pgm, m)) { /* * the programmer supports a paged mode write */ diff --git a/src/avrcache.c b/src/avrcache.c index 8ced34c66..042607e53 100644 --- a/src/avrcache.c +++ b/src/avrcache.c @@ -107,13 +107,13 @@ * - Programmer must have paged routines * - Memory has positive page size, which is a power of two * - Memory has positive size, which is a multiple of the page size - * - Memory is flash type or eeprom type + * - Memory is either flash type with page size > 1 or eeprom */ int avr_has_paged_access(const PROGRAMMER *pgm, const AVRMEM *mem) { return pgm->paged_load && pgm->paged_write && mem->page_size > 0 && (mem->page_size & (mem->page_size-1)) == 0 && mem->size > 0 && mem->size % mem->page_size == 0 && - (avr_mem_is_flash_type(mem) || avr_mem_is_eeprom_type(mem)); + ((avr_mem_is_flash_type(mem) && mem->page_size > 1) || avr_mem_is_eeprom_type(mem)); }