1 /********************************************************************************
\r
2 *********************************************************************************
\r
3 COPYRIGHT (c) 2004 BY ROCK-CHIP FUZHOU
\r
4 -- ALL RIGHTS RESERVED --
\r
6 File Name: api_flash.h
\r
8 Created: 1st Dec 2008
\r
12 1.01 Ôö¼ÓFtlClose½Ó¿Úº¯Êý 2009.10.15 lxs
\r
13 ********************************************************************************
\r
14 ********************************************************************************/
\r
15 #ifndef _API_FLASH_H
\r
16 #define _API_FLASH_H
\r
19 /***************************************************************************
\r
20 º¯ÊýÃèÊö:FTLºÍFLASH³õʼ»¯
\r
24 1=Ó³Éä±í³ö´í, ±»Ç¿ÖƵ͸ñ
\r
25 2=flash³õʼ»¯Ê§°Ü,¿ÉÄÜÊÇÓ²¼þ´íÎó»òÒª½øÐй̼þÉý¼¶
\r
26 ÆäËüÖµ:ÄÚ²¿´íÎó, ¸ÃÇý¶¯²»¿ÉʹÓÃ
\r
27 ˵ Ã÷:ÉϵçÖ»Ðèµ÷ÓÃÒ»´Î³õʼ»¯¼´¿É
\r
28 ***************************************************************************/
\r
29 extern int FtlInit(unsigned int nandcBaseAddr,unsigned char pageRemapEn);
\r
30 extern int FTLInit_WithoutPageRemap(void);
\r
31 extern int FTLInit(void);
\r
34 /***************************************************************************
\r
35 º¯ÊýÃèÊö:»ñÈ¡FLASH´ÅÅÌÈÝÁ¿
\r
37 DISK_NAND_CODE:¹Ì¼þÅÌ
\r
38 DISK_NAND_DATA:ϵͳ²ÎÊýÅÌ
\r
39 DISK_NAND_USER:Óû§ÅÌ
\r
40 ³ö¿Ú²ÎÊý:´ÅÅÌ×ÜÉÈÇøÊý
\r
42 ***************************************************************************/
\r
43 extern unsigned int FtlGetCapacity(unsigned char LUN);
\r
45 /***************************************************************************
\r
47 Èë¿Ú²ÎÊý:LUN=Âß¼·ÖÇøºÅ, Index=ÆðʼÉÈÇøµØÖ·, buf=Êý¾Ý»º³åÇø, nSec=ÉÈÇøÊý
\r
48 ³ö¿Ú²ÎÊý:0=¶ÁÈ¡ÕýÈ·; ·Ç0=¶ÁÈ¡³ö´í, Êý¾Ý²»¿ÉÓÃ
\r
51 ***************************************************************************/
\r
52 extern int FtlRead(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
\r
54 /***************************************************************************
\r
56 Èë¿Ú²ÎÊý:LUN=Âß¼·ÖÇøºÅ, Index=ÆðʼÉÈÇøµØÖ·, buf=Êý¾Ý»º³åÇø, nSec=ÉÈÇøÊý
\r
57 ³ö¿Ú²ÎÊý:0=ÕýȷдÈë; ·Ç0=д²Ù×÷ʧ°Ü, Êý¾ÝûÓб»ÕýȷдÈë
\r
60 ***************************************************************************/
\r
61 extern int FtlWrite(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
\r
63 /***************************************************************************
\r
64 º¯ÊýÃèÊö:MLC FLASHÊý¾ÝË¢ÐÂ
\r
68 ˵ Ã÷:ÔÚϵͳIDLE/ÔڱȽϼ¯ÖжÁÊý¾Ýʱ(ÈçA-B²¥·Å¡¢Æµ·±¶Á×ÊÔ´µÈ)µ÷Óøú¯Êý,
\r
69 Äܼ°Ê±ÐÞÕý±»Æµ·±¼¯ÖжÁ»µµÄÊý¾Ý,º¯ÊýÖ´ÐÐʱ¼ä¿ÉÄܽϳ¤(¼¸°ÙmsÉõÖÁ¼¸s)
\r
70 ***************************************************************************/
\r
71 extern void FlashRefreshHook(void);
\r
73 /***************************************************************************
\r
74 º¯ÊýÃèÊö:AHBÖ÷Ƶ¸üÐÂʱÐèÒªµ÷Óô˽ӿÚÀ´ÅäÖÃFLASHʱÐò
\r
75 Èë¿Ú²ÎÊý:AHBnKHz=Ö÷Ƶ(AHB)
\r
78 ***************************************************************************/
\r
79 extern void FlashTimingCfg(unsigned int AHBnKHz);
\r
81 /***************************************************************************
\r
82 º¯ÊýÃèÊö:FTL ¹Ø±Õ£¬¹Ø»úʱµ÷ÓÃ
\r
85 ˵ Ã÷:¹Ø»úʱ£¬ÔÚËùÓÐдÎļþ²Ù×÷½áÊøºóµ÷ÓÃ
\r
86 ***************************************************************************/
\r
87 extern void FtlClose(void);
\r
89 /***************************************************************************
\r
90 º¯ÊýÃèÊö:FTL ¶¨Ê±»Øµ÷º¯Êý£¬ÏµÍ³1S×óÓÒµ÷ÓÃÒ»´Î
\r
93 ˵ Ã÷:FTLÖÐһЩCACHEÔÚ¶¨Ê±ÖлØдflash
\r
94 ***************************************************************************/
\r
95 extern void FtlTimeHook(void);
\r
97 /***************************************************************************
\r
98 º¯ÊýÃèÊö:»ñÈ¡ flash page ´óС£¬ÒÔ±ãÍâÃ濪»º³å,
\r
100 ³ö¿Ú²ÎÊý:page´óС£¬sectorµ¥Î»
\r
102 ˵Ã÷: ÐèÒªÔÚFTLInitºó²Å¿ÉÓÃ
\r
103 ***************************************************************************/
\r
104 extern int FlashGetPageSize(void);
\r
106 /***************************************************************************
\r
107 º¯ÊýÃèÊö:AHBÖ÷Ƶ¸üÐÂʱÐèÒªµ÷Óô˽ӿÚÀ´ÅäÖÃFLASHʱÐò
\r
108 Èë¿Ú²ÎÊý:AHBnMHz=Ö÷Ƶ(AHB)
\r
111 ***************************************************************************/
\r
112 extern void FlashTimingCfg(unsigned int AHBnKHz);
\r
114 /***************************************************************************
\r
115 º¯ÊýÃèÊö:ϵͳÅÌд²»ÔÊÐí
\r
119 ***************************************************************************/
\r
120 extern void FtlFlashSysProtSetOn(void);
\r
122 /***************************************************************************
\r
123 º¯ÊýÃèÊö:ϵͳÅÌдÔÊÐí
\r
127 ***************************************************************************/
\r
128 extern void FtlFlashSysProtSetOff(void);
\r
130 /***************************************************************************
\r
131 º¯ÊýÃèÊö:²Á³ýϵͳÅÌ£¬Éý¼¶Ê±Ê¹ÓÃ
\r
135 ***************************************************************************/
\r
136 extern void FtlLowFormatSysDisk(void);
\r
138 extern int FtlWriteImage(unsigned int Index, unsigned int nSec, void *buf);
\r
139 /***************************************************************************
\r
140 º¯ÊýÃèÊö:½«ËùÓлº´æµÄcache дµ½cache ¿é
\r
144 ***************************************************************************/
\r
145 extern void FtlCacheDelayWriteALL(void);
\r
147 /***************************************************************************
\r
148 º¯ÊýÃèÊö:ÉèÖôÅÅÌд±£»¤µØÖ·£¬
\r
149 Èë¿Ú²ÎÊý:LBAµØÖ·£¬Ð¡ÓÚLBAµÄµØַд±£»¤
\r
152 ***************************************************************************/
\r
153 void FtlSetSysProtAddr(int LBA);
\r
156 /***************************************************************************
\r
157 º¯ÊýÃèÊö:»ñÈ¡FLASH´ÅÅÌÈÝÁ¿
\r
159 ³ö¿Ú²ÎÊý:ÈÝÁ¿,ÒÔÉÈÇøΪµ¥Î»
\r
161 ***************************************************************************/
\r
162 int FtlGetPageZoneCapacity(void);
\r
164 /***************************************************************************
\r
166 Èë¿Ú²ÎÊý:Index=ÉÈÇøºÅ, nSec=ÉÈÇøÊý
\r
167 ³ö¿Ú²ÎÊý:¶Áµ½µÄÊý¾ÝÔÚ»º³åÇøbufÖÐ
\r
169 ***************************************************************************/
\r
170 int FtlPageWrite(int Index, int nSec, void *buf);
\r
173 /***************************************************************************
\r
175 Èë¿Ú²ÎÊý:Index=ÉÈÇøºÅ, nSec=ÉÈÇøÊý
\r
176 ³ö¿Ú²ÎÊý:¶Áµ½µÄÊý¾ÝÔÚ»º³åÇøbufÖÐ
\r
178 ***************************************************************************/
\r
179 int FtlPageRead(int Index, int nSec, void *buf);
\r
182 /***************************************************************************
\r
183 º¯ÊýÃèÊö:¶ÁÈ¡ SN sectorÐÅÏ¢
\r
187 ×¢ÒâÐÅÏ¢£ºÐèÒªÔÚflash Çý¶¯¼ÓÔغó²ÅÄܵ÷Óã¬pbuf´óСÐèÒª´óÓÚµÈÓÚ512 bytes£¬·µ»ØÐÅϢΪ512
\r
189 ***************************************************************************/
\r
190 char GetSNSectorInfo(char * pbuf);
\r
193 extern int NandInit(void);
\r
194 extern int NandRead(unsigned int Index, unsigned int nSec, void * buf) ;
\r
195 extern int NandWriteImage(unsigned int Index, unsigned int nSec, void * buf);
\r
196 extern int NandWrite(unsigned int Index, unsigned int nSec, void * buf) ;
\r
197 extern int NandDeInit(void) ;
\r
198 extern int NandForceDeInit(void);
\r
199 extern unsigned int NandGetCapacity(void);
\r
200 extern void NandSetSysProtAddr(unsigned int SysImageWriteEndAdd);
\r
201 extern void FtlDelayWriteCacheEn(unsigned int en);
\r