From ff61dfa50589bc65bf5642feb80a0f23a237d76b Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Sun, 16 May 2010 05:43:03 +0000
Subject: [PATCH] Fixed AVRISP project not sending a full erase-and-write
 EEPROM command to XMEGA targets when writing to the EEPROM instead of the
 split write-only command (thanks to Tim Margush).

---
 LUFA/ManPages/ChangeLog.txt                   | 10 +++++-----
 LUFA/ManPages/MigrationInformation.txt        |  4 ++--
 LUFA/Scheduler/Scheduler.h                    | 20 +++++++++----------
 .../AVRISP-MKII/Lib/XPROG/XPROGProtocol.c     |  2 +-
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 54320c829..5ac0bb0f1 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -8,14 +8,16 @@
   *
   *  \section Sec_ChangeLogXXXXXX Version XXXXXX
   *  <b>New:</b>
-  *  N/A
+  *  - N/A
   *
   *  <b>Changed:</b>
-  *  N/A
+  *  - N/A
   *
   *  <b>Fixed:</b>
   *  - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from
-  *    the last page of FLASH
+  *    the last page of FLASH (thanks to Gerard Sexton)
+  *  - Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targets when writing to the EEPROM
+  *    instead of the split write-only command (thanks to Tim Margush)
   *
   *  \section Sec_ChangeLog100513 Version 100513
   *  <b>New:</b>
@@ -65,8 +67,6 @@
   *  - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address
   *    boundary is crossed during programming or readback (thanks to Gerard Sexton)
   *  - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled
-  *  - Remove incorrect check for the current device state in the Set Configuration request handler of DevChapter9, which broke
-  *    Set Configuration requests to the device under most circumstances.
   *  - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
   *  - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register
   *  - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus
diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt
index 844cdad40..dd00abd7f 100644
--- a/LUFA/ManPages/MigrationInformation.txt
+++ b/LUFA/ManPages/MigrationInformation.txt
@@ -10,8 +10,8 @@
  *  to the next version released. It does not indicate all new additions to the library in each version change, only
  *  areas relevant to making older projects compatible with the API changes of each new release.
  *
- * \section Sec_Migration100513 Migrating from 100219 to 100513
- * N/A
+ * \section Sec_Migration100513 Migrating from 100513 to XXXXXX
+ *  N/A
  *
  * \section Sec_Migration100513 Migrating from 100219 to 100513
  *
diff --git a/LUFA/Scheduler/Scheduler.h b/LUFA/Scheduler/Scheduler.h
index 672af2f98..71be82bee 100644
--- a/LUFA/Scheduler/Scheduler.h
+++ b/LUFA/Scheduler/Scheduler.h
@@ -111,7 +111,7 @@
 			 *      }
 			 *  \endcode
 			 */
-			#define TASK(name)                        void name (void)
+			#define TASK(name)              void name (void)
 			
 			/** Defines a task list array, containing one or more task entries of the type TaskEntry_t. Each task list
 			 *  should be encased in curly braces and ended with a comma.
@@ -125,18 +125,18 @@
 			 *      }
 			 *  \endcode
 			 */
-			#define TASK_LIST                         TaskEntry_t Scheduler_TaskList[] = 
+			#define TASK_LIST               TaskEntry_t Scheduler_TaskList[] = 
 			
 			/** Constant, giving the maximum delay in scheduler ticks which can be stored in a variable of type
 			 *  SchedulerDelayCounter_t.
 			 */
-			#define TASK_MAX_DELAY                    (MAX_DELAYCTR_COUNT - 1)
+			#define TASK_MAX_DELAY          (MAX_DELAYCTR_COUNT - 1)
 
 			/** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */
-			#define TASK_RUN                          true
+			#define TASK_RUN                true
 
 			/** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */
-			#define TASK_STOP                         false
+			#define TASK_STOP               false
 			
 		/* Pseudo-Function Macros: */
 			#if defined(__DOXYGEN__)
@@ -151,9 +151,9 @@
 				 */
 				void Scheduler_Init(void);
 			#else
-				#define Scheduler_Start()                 Scheduler_GoSchedule(TOTAL_TASKS);
+				#define Scheduler_Start()    Scheduler_GoSchedule(TOTAL_TASKS);
 				
-				#define Scheduler_Init()                  Scheduler_InitScheduler(TOTAL_TASKS);
+				#define Scheduler_Init()     Scheduler_InitScheduler(TOTAL_TASKS);
 			#endif
 
 		/* Type Defines: */
@@ -181,20 +181,20 @@
 			 *  TaskEntry_t and can be manipulated as desired, although it is preferential that the proper Scheduler
 			 *  functions should be used instead of direct manipulation.
 			 */
-			extern          TaskEntry_t               Scheduler_TaskList[];
+			exter TaskEntry_t Scheduler_TaskList[];
 			
 			/** Contains the total number of tasks in the task list, irrespective of if the task's status is set to
 			 *  TASK_RUN or TASK_STOP.
 			 *
 			 *  \note This value should be treated as read-only, and never altered in user-code.
 			 */
-			extern volatile uint8_t                   Scheduler_TotalTasks;
+			extern volatile uint8_t Scheduler_TotalTasks;
 
 			/**  Contains the current scheduler tick count, for use with the delay functions. If the delay functions
 			 *   are used in the user code, this should be incremented each tick period so that the delays can be
 			 *   calculated.
 			 */
-			extern volatile SchedulerDelayCounter_t   Scheduler_TickCounter;
+			extern volatile SchedulerDelayCounter_t Scheduler_TickCounter;
 
 		/* Inline Functions: */
 			/** Resets the delay counter value to the current tick count. This should be called to reset the period
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
index 7a4b1a547..ab4d4262a 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
@@ -319,7 +319,7 @@ static void XPROGProtocol_WriteMemory(void)
 				WriteCommand     = XMEGA_NVM_CMD_WRITEBOOTSECPAGE;
 				break;
 			case XPRG_MEM_TYPE_EEPROM:
-				WriteCommand     = XMEGA_NVM_CMD_WRITEEEPROMPAGE;
+				WriteCommand     = XMEGA_NVM_CMD_ERASEWRITEEEPROMPAGE;
 				WriteBuffCommand = XMEGA_NVM_CMD_LOADEEPROMPAGEBUFF;
 				EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;			
 				break;
-- 
GitLab