| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- /*****************************************************************************
- *
- * nvmem.h - CC3000 Host Driver Implementation.
- * Copyright (C) 2011 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 __CC3000_NVRAM_H__
- #define __CC3000_NVRAM_H__
- #include "cc3000_common.h"
- //*****************************************************************************
- //
- // If building with a C++ compiler, make all of the definitions in this header
- // have a C binding.
- //
- //*****************************************************************************
- #ifdef __cplusplus
- extern "C" {
- #endif
- //*****************************************************************************
- //
- //! \addtogroup nvmem_api
- //! @{
- //
- //*****************************************************************************
- /****************************************************************************
- **
- ** Definitions for File IDs
- **
- ****************************************************************************/
- /* NVMEM file ID - system files*/
- #define NVMEM_NVS_FILEID (0)
- #define NVMEM_NVS_SHADOW_FILEID (1)
- #define NVMEM_WLAN_CONFIG_FILEID (2)
- #define NVMEM_WLAN_CONFIG_SHADOW_FILEID (3)
- #define NVMEM_WLAN_DRIVER_SP_FILEID (4)
- #define NVMEM_WLAN_FW_SP_FILEID (5)
- #define NVMEM_MAC_FILEID (6)
- #define NVMEM_FRONTEND_VARS_FILEID (7)
- #define NVMEM_IP_CONFIG_FILEID (8)
- #define NVMEM_IP_CONFIG_SHADOW_FILEID (9)
- #define NVMEM_BOOTLOADER_SP_FILEID (10)
- #define NVMEM_RM_FILEID (11)
- /* NVMEM file ID - user files*/
- #define NVMEM_AES128_KEY_FILEID (12)
- #define NVMEM_SHARED_MEM_FILEID (13)
- /* max entry in order to invalid nvmem */
- #define NVMEM_MAX_ENTRY (16)
- //*****************************************************************************
- //
- //! nvmem_read
- //!
- //! @param ulFileId nvmem file id:\n
- //! NVMEM_NVS_FILEID, NVMEM_NVS_SHADOW_FILEID,
- //! NVMEM_WLAN_CONFIG_FILEID, NVMEM_WLAN_CONFIG_SHADOW_FILEID,
- //! NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID,
- //! NVMEM_MAC_FILEID, NVMEM_FRONTEND_VARS_FILEID,
- //! NVMEM_IP_CONFIG_FILEID, NVMEM_IP_CONFIG_SHADOW_FILEID,
- //! NVMEM_BOOTLOADER_SP_FILEID, NVMEM_RM_FILEID,
- //! and user files 12-15.
- //! @param ulLength number of bytes to read
- //! @param ulOffset ulOffset in file from where to read
- //! @param buff output buffer pointer
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief Reads data from the file referred by the ulFileId parameter.
- //! Reads data from file ulOffset till length. Err if the file can't
- //! be used, is invalid, or if the read is out of bounds.
- //!
- //*****************************************************************************
- extern INT32 nvmem_read(UINT32 file_id, UINT32 length, UINT32 offset, UINT8 *buff);
- //*****************************************************************************
- //
- //! nvmem_write
- //!
- //! @param ulFileId nvmem file id:\n
- //! NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID,
- //! NVMEM_MAC_FILEID, NVMEM_BOOTLOADER_SP_FILEID,
- //! and user files 12-15.
- //! @param ulLength number of bytes to write
- //! @param ulEntryOffset offset in file to start write operation from
- //! @param buff data to write
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief Write data to nvmem.
- //! writes data to file referred by the ulFileId parameter.
- //! Writes data to file ulOffset till ulLength.The file id will be
- //! marked invalid till the write is done. The file entry doesn't
- //! need to be valid - only allocated.
- //!
- //*****************************************************************************
- extern INT32 nvmem_write(UINT32 ulFileId, UINT32 ulLength, UINT32 ulEntryOffset, UINT8 *buff);
- //*****************************************************************************
- //
- //! nvmem_set_mac_address
- //!
- //! @param mac mac address to be set
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief Write MAC address to EEPROM.
- //! mac address as appears over the air (OUI first)
- //!
- //*****************************************************************************
- extern UINT8 nvmem_set_mac_address(UINT8 *mac);
- //*****************************************************************************
- //
- //! nvmem_get_mac_address
- //!
- //! @param[out] mac mac address
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief Read MAC address from EEPROM.
- //! mac address as appears over the air (OUI first)
- //!
- //*****************************************************************************
- extern UINT8 nvmem_get_mac_address(UINT8 *mac);
- //*****************************************************************************
- //
- //! nvmem_write_patch
- //!
- //! @param ulFileId nvmem file id:\n
- //! NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID,
- //! @param spLength number of bytes to write
- //! @param spData SP data to write
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief program a patch to a specific file ID.
- //! The SP data is assumed to be organized in 2-dimensional.
- //! Each line is SP_PORTION_SIZE bytes long. Actual programming is
- //! applied in SP_PORTION_SIZE bytes portions.
- //!
- //*****************************************************************************
- extern UINT8 nvmem_write_patch(UINT32 ulFileId, UINT32 spLength, const UINT8 *spData);
- //*****************************************************************************
- //
- //! nvmem_read_sp_version
- //!
- //! @param[out] patchVer first number indicates package ID and the second
- //! number indicates package build number
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief Read patch version. read package version (WiFi FW patch,
- //! driver-supplicant-NS patch, bootloader patch)
- //!
- //*****************************************************************************
- #ifndef CC3000_TINY_DRIVER
- extern UINT8 nvmem_read_sp_version(UINT8* patchVer);
- #endif
- //*****************************************************************************
- //
- //! nvmem_create_entry
- //!
- //! @param ulFileId nvmem file Id:\n
- //! * NVMEM_AES128_KEY_FILEID: 12
- //! * NVMEM_SHARED_MEM_FILEID: 13
- //! * and fileIDs 14 and 15
- //! @param ulNewLen entry ulLength
- //!
- //! @return on success 0, error otherwise.
- //!
- //! @brief Create new file entry and allocate space on the NVMEM.
- //! Applies only to user files.
- //! Modify the size of file.
- //! If the entry is unallocated - allocate it to size
- //! ulNewLen (marked invalid).
- //! If it is allocated then deallocate it first.
- //! To just mark the file as invalid without resizing -
- //! set ulNewLen=0.
- //!
- //*****************************************************************************
- extern INT32 nvmem_create_entry(UINT32 file_id, UINT32 newlen);
- //*****************************************************************************
- //
- // Mark the end of the C bindings section for C++ compilers.
- //
- //*****************************************************************************
- //*****************************************************************************
- //
- // Close the Doxygen group.
- //! @}
- //
- //*****************************************************************************
- #ifdef __cplusplus
- }
- #endif // __cplusplus
- #endif // __CC3000_NVRAM_H__
|