SAMV71 Xplained Ultra Software Package 1.0

SkipBlockNandFlash.h

Go to the documentation of this file.
00001 /* ----------------------------------------------------------------------------
00002  *         ATMEL Microcontroller Software Support
00003  * ----------------------------------------------------------------------------
00004  * Copyright (c) 2009, Atmel Corporation
00005  *
00006  * All rights reserved.
00007  *
00008  * Redistribution and use in source and binary forms, with or without
00009  * modification, are permitted provided that the following conditions are met:
00010  *
00011  * - Redistributions of source code must retain the above copyright notice,
00012  * this list of conditions and the disclaimer below.
00013  *
00014  * Atmel's name may not be used to endorse or promote products derived from
00015  * this software without specific prior written permission.
00016  *
00017  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
00018  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00019  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
00020  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
00021  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00022  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
00023  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00024  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00025  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
00026  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00027  * ----------------------------------------------------------------------------
00028  */
00029 /**
00030   *  \file
00031   *
00032   *  Include Defines & macros for the skipblock nand flash layer.
00033   */
00034 
00035 #ifndef SKIPBLOCKNANDFLASH_H
00036 #define SKIPBLOCKNANDFLASH_H
00037 
00038 
00039 /*----------------------------------------------------------------------------
00040  *        Headers
00041  *----------------------------------------------------------------------------*/
00042 
00043 #include "NandCommon.h"
00044 #include "EccNandFlash.h"
00045 
00046 
00047 /*----------------------------------------------------------------------------
00048  *        Definitions
00049  *----------------------------------------------------------------------------*/
00050 #define NandBlockStatus_BAD_skip   0xBA
00051 
00052 /** Erase types */
00053 /** Check block before erase */
00054 #define NORMAL_ERASE    0x00000000
00055 /** Do NOT check the block status before erasing it */
00056 #define SCRUB_ERASE     0x0000EA11
00057 /** Values returned by the CheckBlock() function */
00058 #define BADBLOCK        255
00059 #define GOODBLOCK       254
00060 
00061 /*----------------------------------------------------------------------------
00062  *        Types
00063  *----------------------------------------------------------------------------*/
00064 struct SkipBlockNandFlash {
00065     struct EccNandFlash ecc;
00066 };
00067 
00068 /*----------------------------------------------------------------------------
00069  *        Exported functions
00070  *----------------------------------------------------------------------------*/
00071 
00072 extern uint8_t SkipBlockNandFlash_CheckBlock(
00073     const struct SkipBlockNandFlash *skipBlock,
00074     uint16_t block);
00075 
00076 extern uint8_t SkipBlockNandFlash_Initialize(
00077     struct SkipBlockNandFlash *skipBlock,
00078     const struct NandFlashModel *model,
00079     uint32_t commandAddress,
00080     uint32_t addressAddress,
00081     uint32_t dataAddress,
00082     const Pin pinChipEnable,
00083     const Pin pinReadyBusy);
00084 
00085 extern uint8_t SkipBlockNandFlash_EraseBlock(
00086     struct SkipBlockNandFlash *skipBlock,
00087     uint16_t block,
00088     uint32_t eraseType);
00089 
00090 extern uint8_t SkipBlockNandFlash_ReadPage(
00091     const struct SkipBlockNandFlash *skipBlock,
00092     uint16_t block,
00093     uint16_t page,
00094     void *data,
00095     void *spare);
00096 
00097 uint8_t SkipBlockNandFlash_ReadBlock(
00098     const struct SkipBlockNandFlash *skipBlock,
00099     uint16_t block,
00100     void *data);
00101 
00102 extern uint8_t SkipBlockNandFlash_WritePage(
00103     const struct SkipBlockNandFlash *skipBlock,
00104     uint16_t block,
00105     uint16_t page,
00106     void *data,
00107     void *spare);
00108 
00109 extern uint8_t SkipBlockNandFlash_WriteBlockUnaligned(
00110     const struct SkipBlockNandFlash *skipBlock,
00111     uint16_t block,
00112     uint16_t pageOffsetInBlock,
00113     uint16_t numPages,
00114     void *data
00115     );
00116 
00117 extern uint8_t SkipBlockNandFlash_ReadBlockUnaligned(
00118     const struct SkipBlockNandFlash *skipBlock,
00119     uint16_t block,
00120     uint16_t pageOffsetInBlock,
00121     uint16_t numPages,
00122     void *data
00123     );
00124 
00125 uint8_t SkipBlockNandFlash_WriteBlock(
00126     const struct SkipBlockNandFlash *skipBlock,
00127     uint16_t block,
00128     void *data);
00129 
00130 
00131 #endif /*#ifndef SKIPBLOCKNANDFLASH_H */
00132 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines