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/NorFlashAmd.h | 98 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 memories/norflash/NorFlashAmd.h (limited to 'memories/norflash/NorFlashAmd.h') diff --git a/memories/norflash/NorFlashAmd.h b/memories/norflash/NorFlashAmd.h new file mode 100644 index 0000000..8b08be8 --- /dev/null +++ b/memories/norflash/NorFlashAmd.h @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------------- + * 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 AMD %norflash Low-level driver code implement procedures to program +/// basic operations described AMD-specified command set flash devices. +/// The various commands recognized by the devices are listed in the Commands +/// Tables provided in the corresponding AMD command set compatible flash +/// datasheets. All operation functions are blocked, they wait for the +/// completion of an operation by polling the status register. +/// +/// !!!Usage +/// -# Flash program using AMD_Write_Data(). +/// - The Program command is used to modify the data stored at the +/// specified device address. Programming can only change bits +/// from ¡®1¡¯ to ¡®0¡¯. It may be necessary to erase the block before +/// programming to addresses within it. Programming modifies a single +/// Word at a time using static function amd_Program(). Programming +/// larger amounts of data must be done in one Word at a time by +/// giving a Program command, waiting for the command to complete, +/// giving the next Program command and so on. +/// -# erase a block within the flash using AMD_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 AMD_EraseChip(). +/// -# AMD_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. +/// -# AMD_ReadDeviceID() is used to retrieve information +/// about the Flash Device type. +/// -# AMD_ReadManufactoryId() is used to retrieve information +/// about the Flash Device Manufactory ID. +//------------------------------------------------------------------------------ + +#ifndef NORFLASHAMD_H +#define NORFLASHAMD_H + +//------------------------------------------------------------------------------ +// Local functions +//------------------------------------------------------------------------------ + +void AMD_Reset(struct NorFlashInfo *pNorFlashInfo, unsigned int address); + +unsigned int AMD_ReadManufactoryId(struct NorFlashInfo *pNorFlashInfo); + +unsigned int AMD_ReadDeviceID(struct NorFlashInfo *pNorFlashInfo); + +unsigned char AMD_EraseSector( + struct NorFlashInfo *pNorFlashInfo, + unsigned int sectorAddr); + +unsigned char AMD_EraseChip(struct NorFlashInfo *pNorFlashInfo); + +unsigned char AMD_Write_Data( + struct NorFlashInfo *pNorFlashInfo, + unsigned int address, + unsigned char *buffer, + unsigned int size); + +const struct NorFlashOperations amdOperations = { + AMD_Reset, + AMD_Write_Data, + AMD_ReadManufactoryId, + AMD_ReadDeviceID, + AMD_EraseChip, + AMD_EraseSector +}; + +#endif //#ifndef NORFLASHAMD_H -- cgit v1.2.3