204 lines
7.4 KiB
C
204 lines
7.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
||
/********************************************************************************
|
||
*********************************************************************************
|
||
COPYRIGHT (c) 2004 BY ROCK-CHIP FUZHOU
|
||
-- ALL RIGHTS RESERVED --
|
||
|
||
File Name: api_flash.h
|
||
Author: XUESHAN LIN
|
||
Created: 1st Dec 2008
|
||
Modified:
|
||
Revision: 1.00
|
||
Modify log:
|
||
1.01 增加FtlClose接口函数 2009.10.15 lxs
|
||
********************************************************************************
|
||
********************************************************************************/
|
||
#ifndef _API_FLASH_H
|
||
#define _API_FLASH_H
|
||
|
||
//1函数原型声明
|
||
/***************************************************************************
|
||
函数描述:FTL和FLASH初始化
|
||
入口参数:无
|
||
出口参数:
|
||
0=正常返回
|
||
1=映射表出错, 被强制低格
|
||
2=flash初始化失败,可能是硬件错误或要进行固件升级
|
||
其它值:内部错误, 该驱动不可使用
|
||
说 明:上电只需调用一次初始化即可
|
||
***************************************************************************/
|
||
extern int FtlInit(unsigned int nandcBaseAddr,unsigned char pageRemapEn);
|
||
extern int FTLInit_WithoutPageRemap(void);
|
||
extern int FTLInit(void);
|
||
|
||
|
||
/***************************************************************************
|
||
函数描述:获取FLASH磁盘容量
|
||
入口参数:
|
||
DISK_NAND_CODE:固件盘
|
||
DISK_NAND_DATA:系统参数盘
|
||
DISK_NAND_USER:用户盘
|
||
出口参数:磁盘总扇区数
|
||
说 明:
|
||
***************************************************************************/
|
||
extern unsigned int FtlGetCapacity(unsigned char LUN);
|
||
|
||
/***************************************************************************
|
||
函数描述:读扇区接口
|
||
入口参数:LUN=逻辑分区号, Index=起始扇区地址, buf=数据缓冲区, nSec=扇区数
|
||
出口参数:0=读取正确; 非0=读取出错, 数据不可用
|
||
调用函数:
|
||
说 明:
|
||
***************************************************************************/
|
||
extern int FtlRead(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
|
||
|
||
/***************************************************************************
|
||
函数描述:写扇区接口
|
||
入口参数:LUN=逻辑分区号, Index=起始扇区地址, buf=数据缓冲区, nSec=扇区数
|
||
出口参数:0=正确写入; 非0=写操作失败, 数据没有被正确写入
|
||
调用函数:
|
||
说 明:
|
||
***************************************************************************/
|
||
extern int FtlWrite(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
|
||
|
||
/***************************************************************************
|
||
函数描述:MLC FLASH数据刷新
|
||
入口参数:
|
||
出口参数:
|
||
调用函数:
|
||
说 明:在系统IDLE/在比较集中读数据时(如A-B播放、频繁读资源等)调用该函数,
|
||
能及时修正被频繁集中读坏的数据,函数执行时间可能较长(几百ms甚至几s)
|
||
***************************************************************************/
|
||
extern void FlashRefreshHook(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:AHB主频更新时需要调用此接口来配置FLASH时序
|
||
入口参数:AHBnKHz=主频(AHB)
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
extern void FlashTimingCfg(unsigned int AHBnKHz);
|
||
|
||
/***************************************************************************
|
||
函数描述:FTL 关闭,关机时调用
|
||
入口参数:无
|
||
出口参数:无
|
||
说 明:关机时,在所有写文件操作结束后调用
|
||
***************************************************************************/
|
||
extern void FtlClose(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:FTL 定时回调函数,系统1S左右调用一次
|
||
入口参数:无
|
||
出口参数:无
|
||
说 明:FTL中一些CACHE在定时中回写flash
|
||
***************************************************************************/
|
||
extern void FtlTimeHook(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:获取 flash page 大小,以便外面开缓冲,
|
||
入口参数:无
|
||
出口参数:page大小,sector单位
|
||
调用函数:
|
||
说明: 需要在FTLInit后才可用
|
||
***************************************************************************/
|
||
extern int FlashGetPageSize(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:AHB主频更新时需要调用此接口来配置FLASH时序
|
||
入口参数:AHBnMHz=主频(AHB)
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
extern void FlashTimingCfg(unsigned int AHBnKHz);
|
||
|
||
/***************************************************************************
|
||
函数描述:系统盘写不允许
|
||
入口参数:
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
extern void FtlFlashSysProtSetOn(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:系统盘写允许
|
||
入口参数:
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
extern void FtlFlashSysProtSetOff(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:擦除系统盘,升级时使用
|
||
入口参数:
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
extern void FtlLowFormatSysDisk(void);
|
||
|
||
extern int FtlWriteImage(unsigned int Index, unsigned int nSec, void *buf);
|
||
/***************************************************************************
|
||
函数描述:将所有缓存的cache 写到cache 块
|
||
入口参数:
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
extern void FtlCacheDelayWriteALL(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:设置磁盘写保护地址,
|
||
入口参数:LBA地址,小于LBA的地址写保护
|
||
出口参数:
|
||
调用函数:
|
||
***************************************************************************/
|
||
void FtlSetSysProtAddr(int LBA);
|
||
|
||
|
||
/***************************************************************************
|
||
函数描述:获取FLASH磁盘容量
|
||
入口参数:盘符
|
||
出口参数:容量,以扇区为单位
|
||
调用函数:
|
||
***************************************************************************/
|
||
int FtlGetPageZoneCapacity(void);
|
||
|
||
/***************************************************************************
|
||
函数描述:读多扇区
|
||
入口参数:Index=扇区号, nSec=扇区数
|
||
出口参数:读到的数据在缓冲区buf中
|
||
调用函数:
|
||
***************************************************************************/
|
||
int FtlPageWrite(int Index, int nSec, void *buf);
|
||
|
||
|
||
/***************************************************************************
|
||
函数描述:读多扇区
|
||
入口参数:Index=扇区号, nSec=扇区数
|
||
出口参数:读到的数据在缓冲区buf中
|
||
调用函数:
|
||
***************************************************************************/
|
||
int FtlPageRead(int Index, int nSec, void *buf);
|
||
|
||
|
||
/***************************************************************************
|
||
函数描述:读取 SN sector信息
|
||
入口参数:pbuf
|
||
出口参数:
|
||
调用函数:
|
||
注意信息:需要在flash 驱动加载后才能调用,pbuf大小需要大于等于512 bytes,返回信息为512
|
||
bytes。
|
||
***************************************************************************/
|
||
char GetSNSectorInfo(char * pbuf);
|
||
|
||
|
||
extern int NandInit(void);
|
||
extern int NandRead(unsigned int Index, unsigned int nSec, void * buf) ;
|
||
extern int NandWriteImage(unsigned int Index, unsigned int nSec, void * buf);
|
||
extern int NandWrite(unsigned int Index, unsigned int nSec, void * buf) ;
|
||
extern int NandDeInit(void) ;
|
||
extern int NandForceDeInit(void);
|
||
extern unsigned int NandGetCapacity(void);
|
||
extern void NandSetSysProtAddr(unsigned int SysImageWriteEndAdd);
|
||
extern void FtlDelayWriteCacheEn(unsigned int en);
|
||
#endif
|