Don't compile in ISP sources into the XPLAIN bridge project.
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / TINYNVM.c
index 3af5282..22eb7d7 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2012.
+     Copyright (C) Dean Camera, 2017.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2017  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
@@ -55,8 +55,8 @@ static void TINYNVM_SendPointerAddress(const uint16_t AbsoluteAddress)
 static void TINYNVM_SendReadNVMRegister(const uint8_t Address)
 {
        /* The TPI command for reading from the I/O space uses strange addressing, where the I/O address's upper
-        * two bits of the 6-bit address are shifted left once */
-       XPROGTarget_SendByte(TPI_CMD_SIN | ((Address & 0x30) << 1) | (Address & 0x0F));
+        * two bits of the 6-bit address are shifted left once - use function to reduce code size */
+       XPROGTarget_SendByte(TPI_CMD_SIN(Address));
 }
 
 /** Sends a SOUT command to the target with the specified I/O address, ready for the data byte to be read.
@@ -66,13 +66,13 @@ static void TINYNVM_SendReadNVMRegister(const uint8_t Address)
 static void TINYNVM_SendWriteNVMRegister(const uint8_t Address)
 {
        /* The TPI command for reading from the I/O space uses strange addressing, where the I/O address's upper
-        * two bits of the 6-bit address are shifted left once */
-       XPROGTarget_SendByte(TPI_CMD_SOUT | ((Address & 0x30) << 1) | (Address & 0x0F));
+        * two bits of the 6-bit address are shifted left once - use function to reduce code size */
+       XPROGTarget_SendByte(TPI_CMD_SOUT(Address));
 }
 
 /** Busy-waits while the NVM controller is busy performing a NVM operation, such as a FLASH page read.
  *
- *  \return Boolean true if the NVM controller became ready within the timeout period, false otherwise
+ *  \return Boolean \c true if the NVM controller became ready within the timeout period, \c false otherwise
  */
 bool TINYNVM_WaitWhileNVMBusBusy(void)
 {
@@ -80,7 +80,7 @@ bool TINYNVM_WaitWhileNVMBusBusy(void)
        for (;;)
        {
                /* Send the SLDCS command to read the TPI STATUS register to see the NVM bus is active */
-               XPROGTarget_SendByte(TPI_CMD_SLDCS | TPI_STATUS_REG);
+               XPROGTarget_SendByte(TPI_CMD_SLDCS(TPI_REG_STATUS));
 
                uint8_t StatusRegister = XPROGTarget_ReceiveByte();
 
@@ -97,7 +97,7 @@ bool TINYNVM_WaitWhileNVMBusBusy(void)
 /** Waits while the target's NVM controller is busy performing an operation, exiting if the
  *  timeout period expires.
  *
- *  \return Boolean true if the NVM controller became ready within the timeout period, false otherwise
+ *  \return Boolean \c true if the NVM controller became ready within the timeout period, \c false otherwise
  */
 bool TINYNVM_WaitWhileNVMControllerBusy(void)
 {
@@ -121,7 +121,7 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void)
 
 /** Enables the physical TPI interface on the target and enables access to the internal NVM controller.
  *
- *  \return Boolean true if the TPI interface was enabled successfully, false otherwise
+ *  \return Boolean \c true if the TPI interface was enabled successfully, \c false otherwise
  */
 bool TINYNVM_EnableTPI(void)
 {
@@ -129,7 +129,7 @@ bool TINYNVM_EnableTPI(void)
        XPROGTarget_EnableTargetTPI();
 
        /* Lower direction change guard time to 32 USART bits */
-       XPROGTarget_SendByte(TPI_CMD_SSTCS | TPI_CTRL_REG);
+       XPROGTarget_SendByte(TPI_CMD_SSTCS(TPI_REG_CTRL));
        XPROGTarget_SendByte(0x02);
 
        /* Enable access to the XPROG NVM bus by sending the documented NVM access key to the device */
@@ -149,11 +149,11 @@ void TINYNVM_DisableTPI(void)
        do
        {
                /* Clear the NVMEN bit in the TPI STATUS register to disable TPI mode */
-               XPROGTarget_SendByte(TPI_CMD_SSTCS | TPI_STATUS_REG);
+               XPROGTarget_SendByte(TPI_CMD_SSTCS(TPI_REG_STATUS));
                XPROGTarget_SendByte(0x00);
 
                /* Read back the STATUS register, check to see if it took effect */
-               XPROGTarget_SendByte(TPI_CMD_SLDCS | PDI_RESET_REG);
+               XPROGTarget_SendByte(TPI_CMD_SLDCS(TPI_REG_STATUS));
        } while (XPROGTarget_ReceiveByte() != 0x00);
 
        XPROGTarget_DisableTargetTPI();
@@ -165,7 +165,7 @@ void TINYNVM_DisableTPI(void)
  *  \param[out] ReadBuffer   Buffer to store read data into
  *  \param[in]  ReadSize     Length of the data to read from the device
  *
- *  \return Boolean true if the command sequence complete successfully
+ *  \return Boolean \c true if the command sequence complete successfully
  */
 bool TINYNVM_ReadMemory(const uint16_t ReadAddress,
                         uint8_t* ReadBuffer,
@@ -185,7 +185,7 @@ bool TINYNVM_ReadMemory(const uint16_t ReadAddress,
        while (ReadSize-- && TimeoutTicksRemaining)
        {
                /* Read the byte of data from the target */
-               XPROGTarget_SendByte(TPI_CMD_SLD | TPI_POINTER_INDIRECT_PI);
+               XPROGTarget_SendByte(TPI_CMD_SLD(TPI_POINTER_INDIRECT_PI));
                *(ReadBuffer++) = XPROGTarget_ReceiveByte();
        }
 
@@ -198,7 +198,7 @@ bool TINYNVM_ReadMemory(const uint16_t ReadAddress,
  *  \param[in] WriteBuffer   Buffer to source data from
  *  \param[in] WriteLength   Total number of bytes to write to the device (must be an integer multiple of 2)
  *
- *  \return Boolean true if the command sequence complete successfully
+ *  \return Boolean \c true if the command sequence complete successfully
  */
 bool TINYNVM_WriteMemory(const uint16_t WriteAddress,
                          uint8_t* WriteBuffer,
@@ -226,11 +226,11 @@ bool TINYNVM_WriteMemory(const uint16_t WriteAddress,
                  return false;
 
                /* Write the low byte of data to the target */
-               XPROGTarget_SendByte(TPI_CMD_SST | TPI_POINTER_INDIRECT_PI);
+               XPROGTarget_SendByte(TPI_CMD_SST(TPI_POINTER_INDIRECT_PI));
                XPROGTarget_SendByte(*(WriteBuffer++));
 
                /* Write the high byte of data to the target */
-               XPROGTarget_SendByte(TPI_CMD_SST | TPI_POINTER_INDIRECT_PI);
+               XPROGTarget_SendByte(TPI_CMD_SST(TPI_POINTER_INDIRECT_PI));
                XPROGTarget_SendByte(*(WriteBuffer++));
 
                /* Need to decrement the write length twice, since we wrote a whole two-byte word */
@@ -245,7 +245,7 @@ bool TINYNVM_WriteMemory(const uint16_t WriteAddress,
  *  \param[in] EraseCommand  NVM erase command to send to the device
  *  \param[in] Address       Address inside the memory space to erase
  *
- *  \return Boolean true if the command sequence complete successfully
+ *  \return Boolean \c true if the command sequence complete successfully
  */
 bool TINYNVM_EraseMemory(const uint8_t EraseCommand,
                          const uint16_t Address)
@@ -260,7 +260,7 @@ bool TINYNVM_EraseMemory(const uint8_t EraseCommand,
 
        /* Write to a high byte location within the target address space to start the erase process */
        TINYNVM_SendPointerAddress(Address | 0x0001);
-       XPROGTarget_SendByte(TPI_CMD_SST | TPI_POINTER_INDIRECT);
+       XPROGTarget_SendByte(TPI_CMD_SST(TPI_POINTER_INDIRECT));
        XPROGTarget_SendByte(0x00);
 
        /* Wait until the NVM controller is no longer busy */