text: /******************************************************************************
  *  Filename:       flash.h
  *  Revised:        $Date: 2013-01-23 16:55:36 +0100 (Wed, 23 Jan 2013) $
  *  Revision:       $Revision: 9193 $
  *
  *  Description:    Prototypes for the flash driver.
  *
  *  Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
  *
  *
  *  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 following disclaimer.
  *
  *    Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
  *    Neither the name of Texas Instruments Incorporated nor the names of
  *    its contributors may be used to endorse or promote products derived
  *    from this software without specific prior written permission.
  *
  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  *  OWNER OR CONTRIBUTORS 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 __FLASH_H__
  #define __FLASH_H__
  
  //*****************************************************************************
  //
  // If building with a C++ compiler, make all of the definitions in this header
  // have a C binding.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  
  #include "hw_types.h"
  
  //*****************************************************************************
  //
  // Values that can be passed to FlashCacheModeSet()
  // and returned by FlashCacheModeGet()
  //
  //*****************************************************************************
  #define  FLASH_CTRL_CACHE_MODE_DISABLE          0x0
  #define  FLASH_CTRL_CACHE_MODE_ENABLE           0x4
  #define  FLASH_CTRL_CACHE_MODE_PREFETCH_ENABLE  0x8
  #define  FLASH_CTRL_CACHE_MODE_REALTIME         0xc
  
  //*****************************************************************************
  //
  // Define for the erase size of the FLASH block that is erased by an erase
  // operation.
  //
  //****************************************************************************
  #define FLASH_ERASE_SIZE  0x800
  
  //*****************************************************************************
  //
  // Prototypes for the APIs.
  //
  //*****************************************************************************
  extern int32_t FlashMainPageErase(uint32_t ui32Address);
  extern int32_t FlashUpperPageErase(void);
  extern int32_t FlashMainPageProgram(uint32_t *pui32Data,
                                      uint32_t ui32Address,
                                      uint32_t ui32Count);
  extern int32_t FlashUpperPageProgram(uint32_t *pui32Data,
                                       uint32_t ui32Address,
                                       uint32_t ui32Count);
  
  extern uint32_t FlashGet(uint32_t ui32Addr);
  extern uint32_t FlashCacheModeGet(void);
  extern void FlashCacheModeSet(uint32_t ui32CacheMode);
  extern uint32_t FlashSizeGet(void);
  extern uint32_t FlashSramSizeGet(void);
  
  //*****************************************************************************
  //
  // Mark the end of the C bindings section for C++ compilers.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  }
  #endif
  
  #endif // __FLASH_H__
  