Get rid of the redundant ATTR_NEVER_INLINE macro which translated to the same as...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XMEGANVM.h
index f65e88a..37329cc 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2013.
 
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2013  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -18,7 +18,7 @@
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
-  The author disclaim all warranties with regard to this
+  The author disclaims all warranties with regard to this
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
@@ -45,6 +45,7 @@
 
                #include "XPROGProtocol.h"
                #include "XPROGTarget.h"
+               #include "Config/AppConfig.h"
 
        /* Preprocessor Checks: */
                #if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
@@ -56,7 +57,7 @@
                #endif
 
        /* Defines: */
-               #define XMEGA_CRC_LENGTH                     3
+               #define XMEGA_CRC_LENGTH_BYTES               3
 
                #define XMEGA_NVM_REG_ADDR0                  0x00
                #define XMEGA_NVM_REG_ADDR1                  0x01
@@ -71,6 +72,8 @@
                #define XMEGA_NVM_REG_STATUS                 0x0F
                #define XMEGA_NVM_REG_LOCKBITS               0x10
 
+               #define XMEGA_NVM_BIT_CTRLA_CMDEX            (1 << 0)
+
                #define XMEGA_NVM_CMD_NOOP                   0x00
                #define XMEGA_NVM_CMD_CHIPERASE              0x40
                #define XMEGA_NVM_CMD_READNVM                0x43
        /* Function Prototypes: */
                bool XMEGANVM_WaitWhileNVMBusBusy(void);
                bool XMEGANVM_WaitWhileNVMControllerBusy(void);
-               bool XMEGANVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest);
-               bool XMEGANVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize);
-               bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t Byte);
-               bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand,
-                                             const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress,
-                                             const uint8_t* WriteBuffer, uint16_t WriteSize);
-               bool XMEGANVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address);
+               bool XMEGANVM_EnablePDI(void);
+               void XMEGANVM_DisablePDI(void);
+               bool XMEGANVM_GetMemoryCRC(const uint8_t CRCCommand,
+                                              uint32_t* const CRCDest);
+               bool XMEGANVM_ReadMemory(const uint32_t ReadAddress,
+                                        uint8_t* ReadBuffer,
+                                        uint16_t ReadSize);
+               bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand,
+                                             const uint32_t WriteAddress,
+                                             const uint8_t Byte);
+               bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand,
+                                             const uint8_t EraseBuffCommand,
+                                             const uint8_t WritePageCommand,
+                                             const uint8_t PageMode,
+                                             const uint32_t WriteAddress,
+                                             const uint8_t* WriteBuffer,
+                                             uint16_t WriteSize);
+               bool XMEGANVM_EraseMemory(const uint8_t EraseCommand,
+                                         const uint32_t Address);
 
                #if defined(INCLUDE_FROM_XMEGANVM_C)
                        static void XMEGANVM_SendNVMRegAddress(const uint8_t Register);