import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / kdump_sdhc.h
1 #ifdef __cplusplus
2 extern "C" {
3 #endif
4
5
6 #define MaxFindFileClusNum 100
7
8 #define DEBUG_KDUMP
9 #ifdef DEBUG_KDUMP
10 #define DBGKDUMP_PRINTK printk
11 #endif
12
13 #ifndef UINT32
14 typedef unsigned int UINT32 ;
15 #endif
16
17 #ifndef INT32
18 typedef signed int INT32 ;
19 #endif
20
21
22 #ifndef BOOL
23 typedef unsigned int BOOL ;
24 #endif
25
26 #ifndef WORD
27 typedef unsigned short WORD ;
28 #endif
29
30 #ifndef DWORD
31 typedef unsigned int DWORD ;
32 #endif
33
34 #ifndef BYTE
35 typedef unsigned char BYTE ;
36 #endif
37
38 #ifndef PBYTE
39 typedef unsigned char* PBYTE ;
40 #endif
41
42 #ifndef TRUE
43 #define TRUE 1
44 #endif
45
46 #ifndef FALSE
47 #define FALSE 0
48 #endif
49
50 typedef enum
51 {
52 WRITE_FILE_DIRECT = 0,
53 FORMAT_BEF_WRITE = 1
54 }FileWriteType;
55
56
57
58 typedef enum FileSysType
59 {
60 FAT_16 = 0,
61 FAT_32 = 1
62 }FATType;
63
64 typedef struct
65 {
66 DWORD BPB_BytsPerSec;
67 DWORD BPB_SecPerClus;
68 DWORD BPB_RsvdSecCnt;
69 DWORD BPB_NumFATs;
70 DWORD BPB_FATSz;
71 DWORD BPB_RootEntCnt;
72 DWORD BPB_RootClus;
73 DWORD BPB_TotSec;
74 FATType FileSysType;
75 DWORD BootStartSec;
76 DWORD FATStartSec;
77 DWORD RootDirStartSec;
78 DWORD ClusStartSec;
79 } FAT_Para;
80
81
82
83 typedef struct {
84 BYTE name[11]; // file name
85 BYTE attr; // file attribute bits (system, hidden, etc.)
86 BYTE NTflags; // ???
87 BYTE createdTimeMsec; // ??? (milliseconds needs 11 bits for 0-2000)
88 WORD createdTime; // time of file creation
89 WORD createdDate; // date of file creation
90 WORD lastAccessDate; // date of last file access
91 WORD clusFirstHigh; // high word of first cluster
92 WORD time; // time of last file change
93 WORD date; // date of last file change
94 WORD clusFirst; // low word of first cluster
95 DWORD size; // file size in bytes
96 } DirEntry;
97
98 typedef struct {
99 BYTE seqNum; // sequence number
100 BYTE name1[10]; // name characters (five UTF-16 characters)
101 BYTE attr; // attributes (always 0x0F)
102 BYTE NTflags; // reserved (alwyas 0x00)
103 BYTE checksum; // checksum of DOS file name
104 BYTE name2[12]; // name characters (six UTF-16 characters)
105 WORD clusFirst; // word of first cluster (always 0x0000)
106 BYTE name3[4]; // name characters (2 UTF-16 characters)
107 } LfnEntry;
108
109 #define buf_size 64*1024 //must larger than cluster size
110
111 typedef struct {
112 BYTE FileBuffer[buf_size]; // File cluster cache, assume maximum cluster size is 64KB
113 BYTE FATBuffer[512]; // FAT cache
114 DWORD BufferLen; // data cached length in FileBuffer
115 DWORD TotalLen; // File total length
116 DWORD PrevClusterNum; // Prev cluster number
117 DWORD CurrClusterNum; // Current cluster number
118 DWORD FATSector; // Current FAT sector number
119 DWORD CheckSum; // File write content checksum
120 BOOL DiskFull;
121 } FileHandler;
122
123 extern BOOL MSDC_Init(void);
124 extern BOOL MSDC_DeInit(void);
125 extern BOOL OpenDumpFile_sd(FileHandler *pFileHandler);
126 extern BOOL WriteDumpFile_sd(FileHandler *pFileHandler, BYTE *Ptr, DWORD Length, DWORD Total);
127 extern BOOL CloseDumpFile_sd(FileHandler *pFileHandler);
128
129 BOOL WriteSectorToSD(UINT32 sector_addr, PBYTE pdBuf, INT32 blockLen) ;
130 BOOL ReadSectorFromSD(UINT32 sector_addr,PBYTE pdBuf,INT32 blockLen) ;
131 #ifdef __cplusplus
132 }
133 #endif