cardfs.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:11k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __CARDFS_H
  2. #define __CARDFS_H
  3. //liweihua upadte 2004-12-10
  4. #ifdef HOST_UHCI 
  5.  #include "uhci.h"
  6. #else
  7.  #include "host_811.h"
  8. #endif  
  9. #define IDE_MASTER_ID       0
  10. #define NO_EXTRA_FDB    0
  11. //Card status
  12. enum {
  13.     CARD_STATUS_NORMAL=0,
  14.     CARD_STATUS_NG=1,
  15. };
  16. //kenny add GPIO definition
  17. #ifdef GBM_CARD_READER
  18.     #define CARD_RESET_PIN        3 //GPIO 3 ca8200 pin28
  19.     #define CF_CARD_DETECT_PIN    2 //GPIO 2 ca8200 pin29
  20.     #define CD_CARD_DETECT_PIN    4 //GPIO 4 ca8200 pin31
  21. #elif defined(HJ023_CARD_READER)//wangfeng 2003-12-3 18:11
  22.     #define CARD_RESET_PIN        3 //GPIO 3 ca8200 pin29 //Card-Reset
  23.     #define CF_CARD_DETECT_PIN    2 //GPIO 2 ca8200 pin28 //CF-SENSE
  24.     #define CD_CARD_DETECT_PIN    4 //GPIO 4 ca8200 pin31 //CD-SENSE
  25. #elif defined(MIDI_4_FSLOADER_CARD)
  26.     #define CARD_RESET_PIN        3     //GPIO  2 SPHE8200-pin29
  27.     #define CF_CARD_DETECT_PIN    2     //GPIO  3 SPHE8200-pin28
  28.     #define CD_CARD_DETECT_PIN    57    //GPIO 57 SPHE8200-pin163
  29. #elif defined(QSI_PORTABLE_DVD)
  30.     #define CARD_RESET_PIN        3     //GPIO  2 SPHE8200-pin29
  31.     #define CF_CARD_DETECT_PIN    2     //GPIO  3 SPHE8200-pin28
  32.     #define CD_CARD_DETECT_PIN    18    //GPIO 18 SPHE8200-pin151    
  33. #else
  34.     #define CARD_RESET_PIN        3 //GPIO 17 ca720 pin29
  35.     #define CF_CARD_DETECT_PIN    2 //GPIO 18 ca720 pin28
  36.     #define CD_CARD_DETECT_PIN    14 //GPIO 19 ca720 pin163
  37. #endif
  38. //card plug state //kenny 2002/11/12
  39. #define     CARD_HAD_PLUGGED_IN   0x01  //Bit0 means card had plug-in(bit0 =1) 
  40. #define     USER_DO_PLUG_IN       0x02  //Bit1 means user do plug-in action(bit1=1)
  41. #define     USER_DO_PLUG_OUT      0x04 //Bit2 means user do plug-out action
  42. typedef struct _CARD_INFO {
  43.     UINT32  sAddBootSec;    //boot sector start address(in LBA)
  44.     UINT32  sAddFAT;        //FAT start address(in LBA)
  45.     UINT32  sAddFDB;        //root FDB start address, FAT16 only(in LBA)
  46.     UINT32  sAddData;       //data start address(in LBA)
  47.     UINT16  bytePerSec;     //bytes/sector
  48.     UINT16  secPerClus;     //sectors/Cluster
  49.     UINT16  secPerFAT;      //sectors/FAT
  50.     UINT16  nFDBinRoot;     //#FDB in root dir
  51.     BYTE    nHeadMax;       //max head
  52.     BYTE    nSecMax;        //max sector
  53.     BYTE    typeFAT;        //FAT16/FAT32
  54.     BYTE    nItemSizeFAT;   //2x item size in FAT(in Bytes)
  55.     int     bFATCacheCluster;//1:cache in cluster, 0:cache in LBA
  56. } CARD_INFO;
  57. typedef struct _CARD_FILE_ {
  58.     UINT32  stLBA;          //start LBA
  59.     UINT32  stClus;         //start Cluster
  60.     UINT32  iFileSize;      //file size
  61.     UINT32  curLBA;         //current LBA
  62.     UINT32  curClus;        //current Cluster
  63.     int     iLeaveSize;     //file leave size
  64.     BYTE    status;
  65. } CARD_FILE;
  66. #ifdef  IDE_CF_SW//liulifeng define for read multi partition 2004.8.6
  67. typedef struct _IDE_INFO_
  68. {
  69.     BYTE typeFAT;
  70.     UINT32 sAddBootSec;
  71. } IDE_INFO;
  72.     
  73. IDE_INFO    ide[8];
  74. extern UINT8 max_part;
  75. extern UINT8 read_sequence;
  76. //liweihua mov here 2004-11-2 21:22
  77. //kenny add for CF and HDD siwtch
  78. //define CF, HDD device head
  79. #define CF_DEV 0  //0:mean master, 1 mean slave
  80. #define HDD_DEV 1
  81. //liweihua add set sequence
  82. #define HD1     1
  83. #define HD2     2
  84. #define HD3     3
  85. #define HD4     4
  86. #define HD      HD1
  87. #define CF      0
  88. #endif 
  89. BYTE    FSIsExist();
  90. UINT32  FSGetRoot(); //get ROOT directory LBA
  91. UINT32  FSGetFDB(UINT32 lba, UINT32 index, BYTE *buf); //get index-th FDB data structure(buf), length=32
  92. UINT32  FSGetNextClus(UINT32 clus); //get next Cluster Link(from FAT table)
  93. UINT32  FSGetNextLBA(UINT32 lba); //get next LBA(from FAT table)
  94. UINT32  FSClus2LBA(UINT32 clus); //transfer cluster to lba
  95. UINT32  FSLBA2Clus(UINT32 lba); //transfer lba to cluster
  96. UINT32  FSLBAinClus(UINT32 lba); //get leave sectore # in the same cluster
  97. UINT8   CardDoPacket(UINT32 wait_time, UINT8 *pck);
  98. UINT8   CardBlockRead(UINT32 lba, UINT32 len);
  99. int     FSReadSector(UINT32 lba, UINT32 nSec, BYTE *buf);
  100. BYTE    FSReadStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf); //continuous read nSec sectors from cfFile.curLBA, and put data to *buf
  101. BYTE    FSFileSeek(CARD_FILE *cfFile, int nSec); //seek file, move pointer(curLBA) in nSec(>0:FF, <0:BF) sectors step.
  102. BYTE    FSGetStatus(); //get current CARD status
  103. void    CardReset(); //reset card
  104. void    SetCardCs1Cs2Enable(void);
  105. void    polling_card_plug(void);
  106. void    CardDisable(void);
  107. void    CardTestReady();
  108. int     CARDIsPlugIn(); //check whether card is plugged in(1) or not(0)
  109. void    CardSetBrowse();//make system to play card media 
  110. void    polling_storage();
  111. // Memory space define
  112. #ifdef IDE_CF_SW
  113. #define     HD_FAT_CACHE_ADDR       SDRAM_BASE + ((HD_FAT_TABLE_YA)<<10)
  114. #define     CF_FAT_CACHE_ADDR       SDRAM_BASE + (CF_FAT_TABLE_YA<<10)
  115. #define     HD_FAT_INFO_ADDR        SDRAM_BASE_UNCACHED + CF_HDD_INFO_YA*1024
  116. //#define     CF_FAT_INFO_ADDR        SDRAM_BASE_UNCACHED + CF_HDD_INFO_YA*1024+sizeof(cardP)
  117. #else
  118. #define     NORMAL_FAT_CACHE_ADDR   SDRAM_BASE + (A_SUPYA<<10)  
  119. #endif
  120. //----------------------------------------------------
  121. // Fat write related,liweihua add 2004-12-10
  122. //----------------------------------------------------
  123. #ifdef SPHE8202_FAT_WRITE_API
  124. // flag for creat file or dir fat table link 
  125. #define WRITE_FILE 1
  126. #define CREATE_DIR 2
  127. // Memory space define
  128. #define     FAT_WRITE_TEMP_ADDR     SDRAM_BASE_UNCACHED + FAT_WRITE_TEMP_YA*1024
  129. #define     FAT_COPY_ADDR           SDRAM_BASE_UNCACHED + FAT_COPY_YA*1024
  130. //function
  131. int FSWriteSector(UINT32 lba,UINT32 nSec,UINT8 *buf);
  132. BYTE FSWriteStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf);
  133. void FSJudgeFAT(void);
  134. BYTE WriteSpeedControl(void);
  135. UINT16 FSCreateFATLink(UINT32 nNum, BYTE sign);
  136. int FSSearchDir(UINT32 lba, char *foldername);
  137. int FSCreateDir(UINT32 lba, char *foldername);
  138. void FSCopyData(UINT32 startClus, DIR_REC *CopyFileInfo);
  139. int FSCopyFile(UINT32 lba, DIR_REC *CopyFileInfo);
  140. int ReadFileFDB(BYTE *buf, DIR_REC *CopyFileInfo);
  141. int CopyCDROMData(UINT32 msf, CARD_FILE *desFile, UINT32 len, BYTE *buf);
  142. int CopyFATData(CARD_FILE *srcFile, CARD_FILE *desFile, UINT32 len, BYTE *buf);
  143. int CopyMediaData(DIR_REC *CopyFileInfo, CARD_FILE *desFile, UINT32 len, BYTE *buf, UINT32 Block);
  144. int FSDeleteData(DIR_REC *DeleteInfo);
  145. void FSRenameFile(char *foldername, DIR_REC *OriFileInfo);
  146. void FSFormat(void);
  147. #endif//#ifdef SPHE8202_FAT_WRITE_API
  148. #ifdef  SPHE8202_FAT_Write_Function //lijd 2005-1-5 18:11
  149. #include "memmap0.h"
  150. #include "fsNav.h"
  151. #define PFUN_DEFAULT 0
  152. #define PFUN_WRITE 1
  153. #define PFUN_DELETE     2
  154. #define PFUN_FORMAT     3
  155. #define PFUN_RENAME     4
  156. #define PFUN_COPYING 5
  157. #define P_SPACEFULL  6
  158. #define P_SPACEEMPTY  7
  159. #define P_UDISK_PROTECT 11   //lijd 2004-11-17 16:47
  160. #define P_UDISK_PLUGOUT 12   //lijd 2004-11-19 16:17
  161. #define P_DIT_EXIST     13
  162. #define WRITE_FILE 1
  163. #define CREATE_DIR 2
  164. void FSFormat(void);
  165. void FSRenameFile(char *foldername);
  166. int FSWriteData(UINT32 startClus,UINT16 copy_index);
  167. int FSWriteFDB(UINT32 lba,UINT16 copy_index);
  168. int FSDeleteData(void);
  169. void FSJudgeFAT(void);
  170. int FSCreateDir(UINT32 lba, char *foldername);
  171. int FSSearchDir(UINT32 lba, char *foldername);
  172. int CardWriteSector(UINT32 lba, UINT32 nSec, BYTE *buf);
  173. BYTE FSWriteStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf);
  174. UINT16 FSCreateFATLink(UINT32 nNum, BYTE sign);
  175. int ReadCDROMFile(BYTE *buf, UINT16 copy_index);
  176. int  CopyDirCheckPolling(void);
  177. int FSCopyDir2Storage(UINT32 lba);
  178. void FSGUI_UpdataCopyFileName(void);
  179. BYTE  FSInitiBat(BYTE StorageType);
  180. int FSStorageCopy(UINT32 lba);
  181. void GetAllFileNameFromCopyDir(void);
  182. void GetOriginalFileMainName(int num);
  183. int FSCheckExistsFile(UINT32 lba, UINT32 index, BYTE *pCDROMFileInfoBuf);
  184. #endif//SPHE8202_FAT_Write_Function
  185. /*
  186. liweihua mark for USB/CARD/PMP use the same fat write API 2004-12-10
  187. #if defined(CF_CARD_WRITE)||defined(SPHE8202_USB_Write)//||defined(WRITE_USB)//sunzhh 20041120
  188. #include "memmap0.h"
  189. #include "fsNav.h"
  190. #define PFUN_DEFAULT 0
  191. #define PFUN_WRITE 1
  192. #define PFUN_DELETE     2
  193. #define PFUN_FORMAT     3
  194. #define PFUN_RENAME     4
  195. #define PFUN_COPYING 5
  196. #define P_SPACEFULL  6
  197. #define P_SPACEEMPTY  7
  198. #define P_UDISK_PROTECT 11   //lijd 2004-11-17 16:47
  199. #define P_UDISK_PLUGOUT 12   //lijd 2004-11-19 16:17
  200. #define P_DIT_EXIST     13
  201. //void CardFormat(void);
  202. //void CardRenameFile(char *foldername);
  203. //int CardWriteData(UINT16 startClus);
  204. void FSFormat(void);
  205. void FSRenameFile(char *foldername);
  206. #endif
  207. #ifdef SPHE8202_CARD_WRITE//liweihua mod 2004-11-2 21:22
  208. #define WRITE_FILE 1
  209. #define CREATE_DIR 2
  210. //void CardWriteData(UINT32 startClus,UINT16 copy_index);
  211. //int CardWriteFDB(UINT32 lba,UINT16 copy_index);
  212. //int CardDeleteData(UINT16 del_index);
  213. //void CardJudgeFAT(void);
  214. //int CardCreateDir(UINT32 lba,char *foldername);
  215. //int CardSearchDir(UINT32 lba, char *foldername);
  216. //int CardWriteSector(UINT32 lba, UINT32 nSec, BYTE *buf);
  217. //BYTE CardWriteStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf);
  218. //UINT16 CardCreateFATLink(UINT32 nNum, BYTE sign);
  219. void FSWriteData(UINT32 startClus,UINT16 copy_index);
  220. int FSWriteFDB(UINT32 lba,UINT16 copy_index);
  221. int FSDeleteData(UINT16 del_index);
  222. void FSJudgeFAT(void);
  223. int FSCreateDir(UINT32 lba,char *foldername);
  224. int FSSearchDir(UINT32 lba, char *foldername);
  225. int CardWriteSector(UINT32 lba, UINT32 nSec, BYTE *buf);
  226. BYTE FSWriteStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf);
  227. UINT16 FSCreateFATLink(UINT32 nNum, BYTE sign);
  228. int ReadCDROMFile(BYTE *buf, UINT16 copy_index);
  229. #ifdef  IDE_CF_SW  //kenny add for CF and HDD siwtch
  230. void IdeSetSequence(UINT8 );
  231. UINT8 IdeGetSequence(void );
  232. #endif
  233. #elif defined(SPHE8202_USB_Write)
  234. #define WRITE_FILE 1//sunzhh
  235. #define CREATE_DIR 2//sunzhh
  236. //void CardWriteData(UINT32 startClus);
  237. //int CardWriteFDB(UINT32 lba);
  238. //int CardDeleteData(void);
  239. //void CardJudgeFAT(void);
  240. //int CardCreateDir(char *foldername);
  241. //int CardSearchDir(UINT32 lba, char *foldername);
  242. //int CardWriteSector(UINT32 lba, UINT32 nSec, BYTE *buf);
  243. //BYTE CardWriteStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf);
  244. //UINT16 CardCreateFATLink(UINT32 nNum, BYTE sign);
  245. //void FSWriteData(UINT32 startClus);
  246. int FSWriteData(UINT32 startClus,UINT16 copy_index);
  247. int FSWriteFDB(UINT32 lba,UINT16 copy_index);
  248. int FSDeleteData(void);
  249. void FSJudgeFAT(void);
  250. int FSCreateDir(UINT32 lba, char *foldername);
  251. int FSSearchDir(UINT32 lba, char *foldername);
  252. int CardWriteSector(UINT32 lba, UINT32 nSec, BYTE *buf);
  253. BYTE FSWriteStream(CARD_FILE *cfFile, UINT32 nSec, BYTE *buf);
  254. UINT16 FSCreateFATLink(UINT32 nNum, BYTE sign);
  255. int ReadCDROMFile(BYTE *buf, UINT16 copy_index);
  256. int  CopyDirCheckPolling(void);
  257. int FSCopyDir2Storage(UINT32 lba);
  258. void FSGUI_UpdataCopyFileName(void);
  259. BYTE  FSInitiBat(BYTE StorageType);
  260. int FSStorageCopy(UINT32 lba);
  261. void GetAllFileNameFromCopyDir(void);
  262. void GetOriginalFileMainName(int num);
  263. int FSCheckExistsFile(UINT32 lba, UINT32 index, BYTE *pCDROMFileInfoBuf);
  264. #endif
  265. #endif//#if defined(CF_CARD_WRITE)||defined(SPHE8202_USB_Write)||defined(SPHE8202_CARD_WRITE)
  266. */
  267. #endif //__CARDFS_H