/* 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