SAMV71 Xplained Ultra Software Package 1.0

RawNandFlash.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 raw nand flash layer.
00033   */
00034 
00035 #ifndef RAWNANDFLASH_H
00036 #define RAWNANDFLASH_H
00037 
00038 /*----------------------------------------------------------------------------
00039  *        Headers
00040  *----------------------------------------------------------------------------*/
00041 #include <stdint.h>
00042 
00043 #include "NandFlashModel.h"
00044 #include "NandFlashDma.h"
00045 /*----------------------------------------------------------------------------
00046  *        Types
00047  *----------------------------------------------------------------------------*/
00048 
00049 
00050 /** Describes a physical NandFlash chip connected to the SAM microcontroller.*/
00051 struct RawNandFlash {
00052 
00053     /** Model describing this NandFlash characteristics.*/
00054     struct NandFlashModel model;
00055     /** Address for sending commands to the NandFlash.*/
00056     uint32_t commandAddress;
00057     /** Address for sending addresses to the NandFlash.*/
00058     uint32_t addressAddress;
00059     /** Address for sending data to the NandFlash.*/
00060     uint32_t dataAddress;
00061     /** Pin used to enable the NandFlash chip.*/
00062     Pin pinChipEnable;
00063     /** Pin used to monitor the ready/busy signal from the NandFlash.*/
00064     Pin pinReadyBusy;
00065 };
00066 
00067 
00068 /*----------------------------------------------------------------------------
00069  *        Exported functions
00070  *----------------------------------------------------------------------------*/
00071 extern uint8_t RawNandFlash_Initialize(
00072     struct RawNandFlash *raw,
00073     const struct NandFlashModel *model,
00074     uint32_t commandAddress,
00075     uint32_t addressAddress,
00076     uint32_t dataAddress,
00077     const Pin pinChipEnable,
00078     const Pin pinReadyBusy);
00079 
00080 extern void RawNandFlash_Reset(const struct RawNandFlash *raw);
00081 
00082 extern uint32_t RawNandFlash_ReadId(const struct RawNandFlash *raw);
00083 
00084 extern uint8_t RawNandFlash_EraseBlock(
00085     const struct RawNandFlash *raw,
00086     uint16_t block);
00087 
00088 extern uint8_t RawNandFlash_ReadPage(
00089     const struct RawNandFlash *raw,
00090     uint16_t block,
00091     uint16_t page,
00092     void *data,
00093     void *spare);
00094 
00095 extern uint8_t RawNandFlash_WritePage(
00096     const struct RawNandFlash *raw,
00097     uint16_t block,
00098     uint16_t page,
00099     void *data,
00100     void *spare);
00101 
00102 extern uint8_t RawNandFlash_CopyPage(
00103     const struct RawNandFlash *raw,
00104     uint16_t sourceBlock,
00105     uint16_t sourcePage,
00106     uint16_t destBlock,
00107     uint16_t destPage);
00108 
00109 extern uint8_t RawNandFlash_CopyBlock(
00110     const struct RawNandFlash *raw,
00111     uint16_t sourceBlock,
00112     uint16_t destBlock);
00113 
00114 #endif /*#ifndef RAWNANDFLASH_H*/
00115 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines