204 lines
7.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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