blob: 09fa8f0a81b86ff5523eb1e3adfe6bec887cd2b2 [file] [log] [blame]
#ifndef _FHA_H_
#define _FHA_H_
#include "anyka_types.h"
#include "nand_list.h"
#define FHA_SUCCESS 1
#define FHA_FAIL 0
#define VER_NAME_FHA "FHA"
#define VER_NAME_FS "FS"
#define VER_NAME_MTD "MTD"
#define VER_NAME_DRV "DRV"
#define VER_NAME_MOUNT "MOUNT"
#define VER_NAME_FSA "FSA"
typedef enum
{
FHA_CHIP_880X, //aspen3
FHA_CHIP_10XX, //snowbirds
FHA_CHIP_980X, //aspen3s
FHA_CHIP_37XX, //Sundance3
FHA_CHIP_11XX, //snowbird2
}E_FHA_CHIP_TYPE;
typedef enum
{
PLAT_SPOT, //spot system
PLAT_SPR, //spring system
PLAT_SWORD, //sword system
PLAT_LINUX //linux system
}E_FHA_PLATFORM_TYPE;
typedef enum
{
MEDIUM_NAND, //nand
MEDIUM_SPIFLASH, //spiflash
MEDIUM_EMMC, //sd, emmc, inand
MEDIUM_SPI_EMMC, //data is stored in spiflash and sd
MEDIUM_EMMC_SPIBOOT, //data is stored in sd and boot from spiflash
}E_FHA_MEDIUM_TYPE;
typedef enum
{
MODE_NEWBURN = 1, //new burn
MODE_UPDATE, //update mode
}E_BURN_MODE;
typedef enum
{
FHA_DATA_BOOT,
FHA_DATA_ASA,
FHA_DATA_BIN,
FHA_DATA_FS,
FHA_GET_NAND_PARAM
}E_FHA_DATA_TYPE;
typedef struct
{
T_U8 lib_name[10];
T_U8 lib_version[40];
}T_LIB_VER_INFO;
/************************************************************************
* NAME: FHA_Erase
* FUNCTION callback function, medium erase
* PARAM: [in] nChip--meidum chip
* [in] nPage--medium page
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
typedef T_U32 (*FHA_Erase)(T_U32 nChip, T_U32 nPage);
/************************************************************************
* NAME: FHA_Write
* FUNCTION callback function, medium write
* PARAM: [in] nChip-----meidum chip
* [in] nPage-----medium page
* [in] pData-----need to write data pointer addr
* [in] nDataLen--need to write data length
* nand(unit byte)
* SD(unit sector count(1sec = 512byte))
* SPI(unit 1 page, page size in platform define)
* [in] pOob------Spare area£ºOut Of Band, only nand use
* [in] nOobLen---Spare area length
* [in] eDataType-burn medium data type
* nand -- E_FHA_DATA_TYPE
* SD----- MEDIUM_EMMC
* SPI---- MEDIUM_SPIFLASH
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
typedef T_U32 (*FHA_Write)(T_U32 nChip, T_U32 nPage, const T_U8 *pData, T_U32 nDataLen, T_U8 *pOob, T_U32 nOobLen, T_U32 eDataType);
/************************************************************************
* NAME: FHA_Read
* FUNCTION callback function, medium read
* PARAM: [in] nChip-----meidum chip
* [in] nPage-----medium page
* [out]pData-----need to read data pointer addr
* [in] nDataLen--need to ren data length
* nand(unit byte)
* SD(unit sector count(1sec = 512byte))
* SPI(unit 1 page, page size in platform define)
* [out]pOob------Spare area£ºOut Of Band, only nand use
* [in] nOobLen---Spare area length
* [in] eDataType-burn medium data type
* nand -- E_FHA_DATA_TYPE
* SD----- MEDIUM_EMMC
* SPI---- MEDIUM_SPIFLASH
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
typedef T_U32 (*FHA_Read)(T_U32 nChip, T_U32 nPage, T_U8 *pData, T_U32 nDataLen, T_U8 *pOob, T_U32 nOobLen , T_U32 eDataType);
/************************************************************************
* NAME: FHA_ReadNandBytes
* FUNCTION callback function, nand read no ECC
* PARAM: [in] nChip-------meidum chip
* [in] rowAddr-----nand physical row addr
* [in] columnAddr--nand physical cloumn addr
* [out] pData------need to read data pointer addr
* [in] nDataLen----need to ren data length
* nand(unit byte)
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
typedef T_U32 (*FHA_ReadNandBytes)(T_U32 nChip, T_U32 rowAddr, T_U32 columnAddr, T_U8 *pData, T_U32 nDataLen);
typedef T_pVOID (*FHA_RamAlloc)(T_U32 size);
typedef T_pVOID (*FHA_RamFree)(T_pVOID var);
typedef T_pVOID (*FHA_MemSet)(T_pVOID pBuf, T_S32 value, T_U32 count);
typedef T_pVOID (*FHA_MemCpy)(T_pVOID dst, T_pCVOID src, T_U32 count);
typedef T_S32 (*FHA_MemCmp)(T_pCVOID pbuf1, T_pCVOID pbuf2, T_U32 count);
typedef T_pVOID (*FHA_MemMov)(T_pVOID dst, const T_pCVOID src, T_U32 count);
typedef T_S32 (*FHA_Printf)(T_pCSTR s, ...);
typedef struct tag_FHA_LibCallback
{
FHA_Erase Erase;
FHA_Write Write;
FHA_Read Read;
FHA_ReadNandBytes ReadNandBytes;
FHA_RamAlloc RamAlloc;
FHA_RamFree RamFree;
FHA_MemSet MemSet;
FHA_MemCpy MemCpy;
FHA_MemCmp MemCmp;
FHA_MemMov MemMov;
FHA_Printf Printf;
}T_FHA_LIB_CALLBACK, *T_PFHA_LIB_CALLBACK;
typedef struct tag_FHA_Init_Info
{
T_U32 nChipCnt; //ƬѡÊý
T_U32 nBlockStep; //nand block stepÖµ
E_FHA_CHIP_TYPE eAKChip; //AKоƬÀàÐÍ
E_FHA_PLATFORM_TYPE ePlatform; //ϵͳÀàÐÍ
E_FHA_MEDIUM_TYPE eMedium; //´æ´¢½éÖÊÀàÐÍ
E_BURN_MODE eMode; //ÉÕ¼ģʽ
}T_FHA_INIT_INFO, *T_PFHA_INIT_INFO;
typedef struct tag_FHABinParam
{
T_U32 data_length; //Êý¾Ý³¤¶È
T_U32 ld_addr; //ÔËÐеØÖ·
T_U8 file_name[16]; //ÎļþÃû³Æ
T_BOOL bBackup; //ÊÇ·ñ±¸·Ý
T_BOOL bCheck; //ÊÇ·ñУÑé
T_BOOL bUpdateSelf; //spotlight×ÔÉý¼¶Ó㬻á¸øÿ¸öBINÔ¤ÁôͬÑù¶àµÄ¿Õ¼ä
}T_FHA_BIN_PARAM, *T_PFHA_BIN_PARAM;
typedef struct
{
T_U32 BinPageStart; /*bin data start addr*/
T_U32 PageSize; /*spi page size*/
T_U32 PagesPerBlock;/*page per block*/
}T_SPI_INIT_INFO, *T_PSPI_INIT_INFO;
/************************************************************************
* NAME: FHA_burn_init
* FUNCTION Initial FHA callback function, init fha init info para
* PARAM: [in] pInit----burn platform init struct pointer
* [in] pCB------callback function struct pointer
* [in] pPhyInfo-input medium struct pointer
* NAND-------T_NAND_PHY_INFO*
* SPIFLASH---T_PSPI_INIT_INFO
* EMMC-------AK_NULL
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_burn_init(T_PFHA_INIT_INFO pInit, T_PFHA_LIB_CALLBACK pCB, T_pVOID pPhyInfo);
/************************************************************************
* NAME: FHA_set_resv_zone_info
* FUNCTION set reserve area
* PARAM: [in] nSize--set reserve area size(unit Mbyte)
* [in] bErase-if == 1 ,erase reserve area, or else not erase
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_set_resv_zone_info(T_U32 nSize, T_BOOL bErase);
/************************************************************************
* NAME: FHA_write_bin_begin
* FUNCTION set write bin start init para
* PARAM: [in] bin_param--Bin file info struct
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_write_bin_begin(T_PFHA_BIN_PARAM bin_param);
/************************************************************************
* NAME: FHA_write_bin
* FUNCTION write bin to medium
* PARAM: [in] pData-----need to write bin data pointer addr
* [in] data_len--need to write bin data length
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_write_bin(const T_U8 * pData, T_U32 data_len);
/************************************************************************
* NAME: FHA_write_boot_begin
* FUNCTION set write boot start init para
* PARAM: [in] bin_len--boot length
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_write_boot_begin(T_U32 bin_len);
/************************************************************************
* NAME: FHA_write_boot
* FUNCTION write boot to medium
* PARAM: [in] pData-----need to write boot data pointer addr
* [in] data_len--need to write boot data length
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_write_boot(const T_U8 *pData, T_U32 data_len);
/************************************************************************
* NAME: FHA_get_last_pos
* FUNCTION get fs start position
* PARAM: NULL
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_last_pos();
/************************************************************************
* NAME: FHA_set_fs_part
* FUNCTION set fs partition info to medium
* PARAM: [in] pInfoBuf-----need to write fs info data pointer addr
* [in] data_len--need to write fs info data length
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_set_fs_part(const T_U8 *pInfoBuf, T_U32 buf_len);
/************************************************************************
* NAME: FHA_close
* FUNCTION flush all need to save data to medium, and free all fha malloc ram
* PARAM: NULL
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_close(T_VOID);
/************************************************************************
* NAME: FHA_mount
* FUNCTION Initial FHA mount callback function, init fha mount init info para
* PARAM: [in] pInit----burn platform init struct pointer
* [in] pCB------callback function struct pointer
* [in] pPhyInfo-input medium struct pointer
* NAND-------T_NAND_PHY_INFO*, linux platform == AK_NULL
* SPIFLASH---T_PSPI_INIT_INFO
* EMMC-------AK_NULL
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_mount(T_PFHA_INIT_INFO pInit, T_PFHA_LIB_CALLBACK pCB, T_pVOID pPhyInfo);
/************************************************************************
* NAME: FHA_read_bin_begin
* FUNCTION set read bin start init para
* PARAM: [in] bin_param--Bin file info struct
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_read_bin_begin(T_PFHA_BIN_PARAM bin_param);
/************************************************************************
* NAME: FHA_read_bin
* FUNCTION read bin to buf from medium
* PARAM: [out]pData-----need to read bin data buf pointer addr
* [in] data_len--need to read bin data length
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_read_bin(T_U8 *pData, T_U32 data_len);
/************************************************************************
* NAME: FHA_get_maplist
* FUNCTION get block address map of bin. (only nand)
* PARAM: [in] file_name---need to get bin's file name
* [out]map_data----need to get bin's block map buf pointer addr
* [out]file_len----need to get bin's file length
* [in] bBackup-----if AK_TRUE == bBackup, get backup block map, or else get origin block map
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_maplist(T_U8 file_name[], T_U16 *map_data, T_U32 *file_len, T_BOOL bBackup);
/************************************************************************
* NAME: FHA_get_nand_para
* FUNCTION get nand para
* PARAM: [out] pNandPhyInfo--nand info struct pointer
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_nand_para(T_NAND_PHY_INFO *pNandPhyInfo);
/************************************************************************
* NAME: FHA_get_fs_part
* FUNCTION get fs partition info
* PARAM: [out]pInfoBuf---need to get fs info data pointer addr
* [in] data_len---need to get fs info data length
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_fs_part(T_U8 *pInfoBuf , T_U32 buf_len);
/************************************************************************
* NAME: FHA_get_resv_zone_info
* FUNCTION get reserve area
* PARAM: [out] start_block--get reserve area start block
* [out] block_cnt----get reserve area block count
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_resv_zone_info(T_U16 *start_block, T_U16 *block_cnt);
/************************************************************************
* NAME: FHA_get_bin_num
* FUNCTION get bin file number
* [out] cnt----bin file count in medium
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_bin_num(T_U32 *cnt);
/************************************************************************
* NAME: FHA_set_lib_version
* FUNCTION set burn all lib version
* PARAM: [in] lib_info--all lib version struct pointer addr
* [in] lib_cnt---lib count
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_set_lib_version(T_LIB_VER_INFO *lib_info, T_U32 lib_cnt);
/************************************************************************
* NAME: FHA_get_lib_verison
* FUNCTION get burn lib version by input lib_info->lib_name
* PARAM: [in-out] lib_info--input lib_info->lib_name, output lib_info->lib_version
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_get_lib_verison(T_LIB_VER_INFO *lib_info);
/************************************************************************
* NAME: FHA_get_version
* FUNCTION get fha version
* PARAM: NULL
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U8 *FHA_get_version();
/************************************************************************
* NAME: FHA_check_lib_version
* FUNCTION check burn lib version
* PARAM: [in] lib_info lib name and verison
* RETURN: success return FHA_SUCCESS, fail retuen FHA_ FAIL
**************************************************************************/
T_U32 FHA_check_lib_version(T_LIB_VER_INFO *lib_info);
#endif //_FHA_BINBURN_H_