From 956f9e3709ff56acf37f2f446668b6d1411154f4 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Mon, 30 Jan 2012 16:54:09 +0000
Subject: [PATCH] Fixed AVRISP-MKII Clone timing out on long programming
 commands such as programming the EEPROM on an ATMEGA8 (thanks to Martin
 Kelling).

---
 LUFA/DoxygenPages/ChangeLog.txt              | 1 +
 Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c     | 3 +++
 Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 3 +++
 3 files changed, 7 insertions(+)

diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt
index 752fa4d07..d6d09bafc 100644
--- a/LUFA/DoxygenPages/ChangeLog.txt
+++ b/LUFA/DoxygenPages/ChangeLog.txt
@@ -49,6 +49,7 @@
   *   - Fixed AVRISP-MKII Clone compile warning on AVR8 U4 targets even when NO_VTARGET_DETECT is enabled
   *   - Fixed AVRISP-MKII Clone failing to start application firmware once a TPI programming session is exited
   *   - Fixed DFU class bootloader not resetting the LED pins as high impedance inputs when a software jump to the user applications is requested
+  *   - Fixed AVRISP-MKII Clone timing out on long programming commands such as programming the EEPROM on an ATMEGA8 (thanks to Martin Kelling)
   *
   *  \section Sec_ChangeLog111009 Version 111009
   *  <b>New:</b>
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
index 04bfcb5f8..157dd0b36 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
@@ -357,6 +357,9 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode,
 			break;
 	}
 
+	/* Program complete - reset timeout */
+	wdt_reset();
+
 	return ProgrammingStatus;
 }
 
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
index 0ba3c7674..c4f631739 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
@@ -155,6 +155,9 @@ uint8_t XPROGTarget_ReceiveByte(void)
 	/* Wait until a byte has been received before reading */
 	while (!(UCSR1A & (1 << RXC1)) && !(TimeoutExpired));
 
+	/* Byte of data received - reset the timeout */
+	wdt_reset();
+
 	return UDR1;
 }
 
-- 
GitLab