Add FatFS library to the Webserver project, extend the HTTP server so that it now...
[pub/USBasp.git] / LUFA / Drivers / Board / Dataflash.h
index e58828c..3174f1b 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
@@ -48,7 +48,8 @@
  *    - None\r
  *\r
  *  \section Module Description\r
- *  Functions, macros, variables, enums and types related to the control of board Dataflash ICs.\r
+ *  Dataflash driver. This module provides an easy to use interface for the Dataflash ICs located on many boards,\r
+ *  for the storage of large amounts of data into the Dataflash's non-volatile memory.\r
  *\r
  *  If the BOARD value is set to BOARD_USER, this will include the /Board/Dataflash.h file in the user project\r
  *  directory. Otherwise, it will include the appropriate built in board driver header file.\r
@@ -62,7 +63,6 @@
        /* Macros: */\r
        #if !defined(__DOXYGEN__)\r
                #define INCLUDE_FROM_DATAFLASH_H\r
-               #define INCLUDE_FROM_BOARD_DRIVER\r
        #endif\r
 \r
        /* Includes: */\r
                                #define __GET_DATAFLASH_MASK(x)     __GET_DATAFLASH_MASK2(DATAFLASH_CHIP,x)\r
                        #endif\r
        \r
-                       /* Retrieves the Dataflash chip select mask for the given Dataflash chip index.\r
+                       /** Retrieves the Dataflash chip select mask for the given Dataflash chip index.\r
                         *\r
-                        * \param index  Index of the dataflash chip mask to retrieve\r
+                        *  \param[in] index  Index of the dataflash chip mask to retrieve\r
+                        *\r
+                        *  \return Mask for the given Dataflash chip's /CS pin\r
                         */\r
                        #define DATAFLASH_CHIP_MASK(index)      __GET_DATAFLASH_MASK(index)\r
                        \r
                                #define Dataflash_GetSelectedChip()          (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK)\r
 \r
                                #define Dataflash_SelectChip(mask)   MACROS{ DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT \\r
-                                                                                                                        & ~DATAFLASH_CHIPCS_MASK) | mask);              }MACROE\r
+                                                                                                                        & ~DATAFLASH_CHIPCS_MASK) | (mask));            }MACROE\r
                                \r
                                #define Dataflash_DeselectChip()             Dataflash_SelectChip(DATAFLASH_NO_CHIP)\r
                        #endif\r
                                #include "STK525/Dataflash.h"\r
                        #elif (BOARD == BOARD_STK526)\r
                                #include "STK526/Dataflash.h"\r
+                       #elif (BOARD == BOARD_XPLAIN)\r
+                               #include "XPLAIN/Dataflash.h"\r
+                       #elif (BOARD == BOARD_XPLAIN_REV1)\r
+                               #include "XPLAIN/Dataflash.h"\r
+                       #elif (BOARD == BOARD_EVK527)\r
+                               #include "EVK527/Dataflash.h"\r
                        #elif (BOARD == BOARD_USER)\r
                                #include "Board/Dataflash.h"\r
                        #else\r
                        #endif\r
                \r
                /* Inline Functions: */\r
-                       /** Initializes the dataflash driver (including the SPI driver) so that commands and data may be\r
-                        *  sent to an attached dataflash IC.\r
-                        *\r
-                        *  \param[in] PrescalerMask  SPI prescaler mask, see SPI.h documentation\r
+                       /** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.\r
+                        *  The AVR's SPI driver MUST be initialized before any of the dataflash commands are used.\r
                         */\r
-                       static inline void Dataflash_Init(const uint8_t PrescalerMask)\r
+                       static inline void Dataflash_Init(void)\r
                        {\r
                                DATAFLASH_CHIPCS_DDR  |= DATAFLASH_CHIPCS_MASK;\r
                                DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK;\r
-\r
-                               SPI_Init(PrescalerMask, true);\r
                        }\r
                        \r
                        /** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive\r
                                Dataflash_SelectChip(SelectedChipMask);\r
                        }\r
 \r
-                       /** Spinloops while the currently selected dataflash is busy executing a command, such as a main\r
+                       /** Spin-loops while the currently selected dataflash is busy executing a command, such as a main\r
                         *  memory page program or main memory to buffer transfer.\r
                         */\r
                        static inline void Dataflash_WaitWhileBusy(void)\r