From 044ad7c3987460ede48ff27afd6bdb0ca05a0432 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 4 Jul 2011 20:52:54 +0200 Subject: import at91lib from at91lib_20100901_softpack_1_9_v_1_0_svn_v15011 it's sad to see that atmel doesn't publish their svn repo or has a centralized location or even puts proper version/release info into the library itself --- memories/norflash/NorFlashApi.h | 137 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 memories/norflash/NorFlashApi.h (limited to 'memories/norflash/NorFlashApi.h') 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 + -- cgit v1.2.3