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/nandflash/NandCommon.h | 134 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 memories/nandflash/NandCommon.h (limited to 'memories/nandflash/NandCommon.h') diff --git a/memories/nandflash/NandCommon.h b/memories/nandflash/NandCommon.h new file mode 100644 index 0000000..47fefa7 --- /dev/null +++ b/memories/nandflash/NandCommon.h @@ -0,0 +1,134 @@ +/* ---------------------------------------------------------------------------- + * 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef NANDCOMMON_H +#define NANDCOMMON_H + +//------------------------------------------------------------------------------ +// Definitions +//------------------------------------------------------------------------------ +#if defined(at91sam3u1) || defined(at91sam3u2) || defined(at91sam7se32) +#define NF_MAXPAGESIZE_SUPPORT_2K +#endif + +//------------------------------------------------------------------------------ +/// \page "NandFlash Maximum Supported Values" +/// Since no memory allocation is available, limits have been set on various +/// characteristics of a NandFlash chip: +/// +/// !Maximums +/// - NandCommon_MAXNUMBLOCKS +/// - NandCommon_MAXNUMPAGESPERBLOCK +/// - NandCommon_MAXPAGESIZE + +/// Maximum number of blocks in a device +#define NandCommon_MAXNUMBLOCKS 1024 //2048 + +/// Maximum number of pages in one block +#define NandCommon_MAXNUMPAGESPERBLOCK 256 //64 + +/// Maximum size of the data area of one page, in bytes. +#if !defined(NF_MAXPAGESIZE_SUPPORT_2K) +#define NandCommon_MAXPAGEDATASIZE 4096 //2048 +#else +#define NandCommon_MAXPAGEDATASIZE 2048 +#endif + +/// Maximum size of the spare area of one page, in bytes. +#define NandCommon_MAXPAGESPARESIZE 128 //64 + +/// Maximum number of ecc bytes stored in the spare for one single page. +#define NandCommon_MAXSPAREECCBYTES 48 //24 + +/// Maximum number of extra free bytes inside the spare area of a page. +#define NandCommon_MAXSPAREEXTRABYTES 78 //38 + +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +/// \page "NandFlash Error Codes" +/// NandFlash API methods return either 0 (indicating that there was no error), +/// or one of the following error codes: +/// +/// !Codes +/// - NandCommon_ERROR_NOMOREBLOCKS +/// - NandCommon_ERROR_BLOCKNOTMAPPED +/// - NandCommon_ERROR_OUTOFBOUNDS +/// - NandCommon_ERROR_MAPPINGNOTFOUND +/// - NandCommon_ERROR_CANNOTREAD + +/// No more blocks can be allocated for a write operation. +#define NandCommon_ERROR_NOMOREBLOCKS 1 + +/// The desired logical block has no current physical mapping. +#define NandCommon_ERROR_BLOCKNOTMAPPED 2 + +/// Access if out-of-bounds. +#define NandCommon_ERROR_OUTOFBOUNDS 3 + +/// There are no block having the desired property. +#define NandCommon_ERROR_NOBLOCKFOUND 4 + +/// The nandflash device has no logical mapping information on it. +#define NandCommon_ERROR_MAPPINGNOTFOUND 5 + +/// A read operation cannot be carried out. +#define NandCommon_ERROR_CANNOTREAD 6 + +/// A write operation cannot be carried out. +#define NandCommon_ERROR_CANNOTWRITE 7 + +/// NandFlash chip model cannot be recognized. +#define NandCommon_ERROR_UNKNOWNMODEL 8 + +/// Page data is corrupted according to ECC +#define NandCommon_ERROR_CORRUPTEDDATA 9 + +/// Block is not in the required status. +#define NandCommon_ERROR_WRONGSTATUS 10 + +/// Device has no logical mapping stored in it +#define NandCommon_ERROR_NOMAPPING 11 + +/// The block being accessed is bad and must be replaced +#define NandCommon_ERROR_BADBLOCK 12 + +/// Failed to perform an erase operation +#define NandCommon_ERROR_CANNOTERASE 13 + +/// A hardware copyback operation failed. +#define NandCommon_ERROR_CANNOTCOPY 14 + +/// HW Ecc Not compatible with the Nand Model +#define NandCommon_ERROR_ECC_NOT_COMPATIBLE 15 + +//------------------------------------------------------------------------------ + +#endif //#ifndef NANDCOMMON_H + -- cgit v1.2.3