summaryrefslogtreecommitdiff
path: root/memories/norflash/NorFlashApi.h
diff options
context:
space:
mode:
Diffstat (limited to 'memories/norflash/NorFlashApi.h')
-rw-r--r--memories/norflash/NorFlashApi.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/memories/norflash/NorFlashApi.h b/memories/norflash/NorFlashApi.h
new file mode 100644
index 0000000..3813078
--- /dev/null
+++ b/memories/norflash/NorFlashApi.h
@@ -0,0 +1,137 @@
+/* ----------------------------------------------------------------------------
+ * ATMEL Microcontroller Software Support
+ * ----------------------------------------------------------------------------
+ * Copyright (c) 2008, Atmel Corporation
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the disclaimer below.
+ *
+ * Atmel's name may not be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ----------------------------------------------------------------------------
+ */
+//------------------------------------------------------------------------------
+/// \unit
+///
+/// !!!Purpose
+///
+/// The API layer consists of several functions that allow user to do
+/// operations with flash in a unified way. As a result, future device changes
+/// will not necessarily lead to the code changes in the application environments.
+/// In this %norflash library we support AMD and INTEL command set.
+/// The API layar code accesses the Flash memory by calling the low-level code,
+/// so users do not have to concern themselves with the details of the special
+/// command sequences.
+///
+/// !!!Usage
+///
+/// !!!Usage
+/// -# Flash program using NORFLASH_WriteData().
+/// - The Program command is used to modify the data stored at the
+/// specified device address.
+/// -# erase a block within the flash using NORFLASH_EraseSector().
+/// - Flash erase is performed on a block basis. An entire block is
+/// erased each time an erase command sequence is given.
+/// -# erase whole blocks within the flash using NORFLASH_EraseChip().
+/// -# NORFLASH_Reset() function can be issued, between Bus Write cycles
+/// before the start of a program or erase operation, to return the
+/// device to read mode.
+/// -# NORFLASH_ReadDeviceID() is used to retrieve information
+/// about the Flash Device type.
+/// -# NORFLASH_ReadManufactoryID() is used to retrieve information
+/// about the Flash Device Manufactory ID.
+//------------------------------------------------------------------------------
+
+#ifndef NORFLASHAPI_H
+#define NORFLASHAPI_H
+
+//------------------------------------------------------------------------------
+// Headers
+//------------------------------------------------------------------------------
+
+#include "NorFlashCFI.h"
+
+//------------------------------------------------------------------------------
+// Type
+//------------------------------------------------------------------------------
+
+/// Reset or exit CFI query mode function.
+typedef void (*fReset) (struct NorFlashInfo *, unsigned int );
+/// Write buffer to pNorFlash function.
+typedef unsigned char (*fWriteData)(struct NorFlashInfo *, unsigned int , unsigned char *, unsigned int );
+/// Read manufactory function.
+typedef unsigned int (*fReadManufactoryID)(struct NorFlashInfo *);
+/// Read device ID code function.
+typedef unsigned int (*fReadDeviceID)(struct NorFlashInfo *);
+/// Full erase chip function.
+typedef unsigned char (*fEraseChip) (struct NorFlashInfo *);
+/// Erase single sector function.
+typedef unsigned char (*fEraseSector)(struct NorFlashInfo *, unsigned int );
+
+
+struct NorFlashOperations {
+ /// Reset or exit CFI query mode function.
+ void (*_fReset)(struct NorFlashInfo *pNorFlashInfo, unsigned int address);
+ /// Write buffer to norflash function.
+ unsigned char (*_fWriteData)(struct NorFlashInfo *pNorFlashInfo,
+ unsigned int address,
+ unsigned char *buffer,
+ unsigned int size);
+ /// Read manufactory function.
+ unsigned int (*_fReadManufactoryID)(struct NorFlashInfo *pNorFlashInfo);
+ /// Read device ID code function.
+ unsigned int (*_fReadDeviceID)(struct NorFlashInfo *pNorFlashInfo);
+ /// Full erase chip function.
+ unsigned char (*_fEraseChip) (struct NorFlashInfo *pNorFlashInfo);
+ /// Erase single sector function.
+ unsigned char (*_fEraseSector)(struct NorFlashInfo *pNorFlashInfo, unsigned int address);
+};
+
+//------------------------------------------------------------------------------
+// Exported functions
+//------------------------------------------------------------------------------
+
+extern void NORFLASH_Reset(struct NorFlash *norFlash, unsigned int address);
+
+extern unsigned int NORFLASH_ReadManufactoryID(struct NorFlash *norFlash);
+
+extern unsigned int NORFLASH_ReadDeviceID(struct NorFlash *norFlash);
+
+extern unsigned char NORFLASH_EraseSector(
+ struct NorFlash *norFlash,
+ unsigned int sectorAddr);
+
+extern unsigned char NORFLASH_EraseChip(
+ struct NorFlash *norFlash);
+
+extern unsigned char NORFLASH_WriteData(
+ struct NorFlash *norFlash,
+ unsigned int address,
+ unsigned char *buffer,
+ unsigned int size);
+
+extern unsigned char NORFLASH_ReadData(
+ struct NorFlash *norFlash,
+ unsigned int address,
+ unsigned char *buffer,
+ unsigned int size);
+
+
+#endif //#ifndef NORFLASHAPI_H
+
personal git repositories of Harald Welte. Your mileage may vary