From 00b8c8323377a28a9c110719b422754ccb83db04 Mon Sep 17 00:00:00 2001 From: Dawid Buchwald Date: Sat, 3 Feb 2024 12:33:24 +0100 Subject: [PATCH] Preliminary fix for #1655 --- src/serialupdi.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/serialupdi.c b/src/serialupdi.c index 06059c0c8..b1f2a9ad0 100644 --- a/src/serialupdi.c +++ b/src/serialupdi.c @@ -542,9 +542,16 @@ static int serialupdi_write_userrow(const PROGRAMMER *pgm, const AVRPART *p, con return -1; } - if (updi_write_data(pgm, m->offset+addr, m->buf + addr, n_bytes) < 0) { - pmsg_error("writing USER ROW failed\n"); - return -1; + if (n_bytes <= UPDI_MAX_REPEAT_SIZE) { + if (updi_write_data(pgm, m->offset+addr, m->buf + addr, n_bytes) < 0) { + pmsg_error("writing USER ROW failed\n"); + return -1; + } + } else { + if (updi_write_data_words(pgm, m->offset+addr, m->buf + addr, n_bytes) < 0) { + pmsg_error("writing USER ROW failed\n"); + return -1; + } } if (updi_write_cs(pgm, UPDI_ASI_SYS_CTRLA, (1 << UPDI_ASI_SYS_CTRLA_UROW_FINAL) |