XenevaOS
Loading...
Searching...
No Matches
XenevaOS
Boot
include
IndustryStandard
Sd.h
Go to the documentation of this file.
1
18
#ifndef __SD_H__
19
#define __SD_H__
20
21
//
22
// SD command index
23
//
24
#define SD_GO_IDLE_STATE 0
25
#define SD_ALL_SEND_CID 2
26
#define SD_SET_RELATIVE_ADDR 3
27
#define SD_SET_DSR 4
28
#define SDIO_SEND_OP_COND 5
29
#define SD_SWITCH_FUNC 6
30
#define SD_SELECT_DESELECT_CARD 7
31
#define SD_SEND_IF_COND 8
32
#define SD_SEND_CSD 9
33
#define SD_SEND_CID 10
34
#define SD_VOLTAGE_SWITCH 11
35
#define SD_STOP_TRANSMISSION 12
36
#define SD_SEND_STATUS 13
37
#define SD_GO_INACTIVE_STATE 15
38
#define SD_SET_BLOCKLEN 16
39
#define SD_READ_SINGLE_BLOCK 17
40
#define SD_READ_MULTIPLE_BLOCK 18
41
#define SD_SEND_TUNING_BLOCK 19
42
#define SD_SPEED_CLASS_CONTROL 20
43
#define SD_SET_BLOCK_COUNT 23
44
#define SD_WRITE_SINGLE_BLOCK 24
45
#define SD_WRITE_MULTIPLE_BLOCK 25
46
#define SD_PROGRAM_CSD 27
47
#define SD_SET_WRITE_PROT 28
48
#define SD_CLR_WRITE_PROT 29
49
#define SD_SEND_WRITE_PROT 30
50
#define SD_ERASE_WR_BLK_START 32
51
#define SD_ERASE_WR_BLK_END 33
52
#define SD_ERASE 38
53
#define SD_LOCK_UNLOCK 42
54
#define SD_READ_EXTR_SINGLE 48
55
#define SD_WRITE_EXTR_SINGLE 49
56
#define SDIO_RW_DIRECT 52
57
#define SDIO_RW_EXTENDED 53
58
#define SD_APP_CMD 55
59
#define SD_GEN_CMD 56
60
#define SD_READ_EXTR_MULTI 58
61
#define SD_WRITE_EXTR_MULTI 59
62
63
#define SD_SET_BUS_WIDTH 6
// ACMD6
64
#define SD_STATUS 13
// ACMD13
65
#define SD_SEND_NUM_WR_BLOCKS 22
// ACMD22
66
#define SD_SET_WR_BLK_ERASE_COUNT 23
// ACMD23
67
#define SD_SEND_OP_COND 41
// ACMD41
68
#define SD_SET_CLR_CARD_DETECT 42
// ACMD42
69
#define SD_SEND_SCR 51
// ACMD51
70
71
#pragma pack(1)
72
typedef
struct
{
73
UINT8
NotUsed
:1;
// Not used [0:0]
74
UINT8
Crc
:7;
// CRC [7:1]
75
UINT16
ManufacturingDate
:12;
// Manufacturing date [19:8]
76
UINT16
Reserved
:4;
// Reserved [23:20]
77
UINT8
ProductSerialNumber[4];
// Product serial number [55:24]
78
UINT8
ProductRevision
;
// Product revision [63:56]
79
UINT8
ProductName[5];
// Product name [103:64]
80
UINT8
OemId[2];
// OEM/Application ID [119:104]
81
UINT8
ManufacturerId
;
// Manufacturer ID [127:120]
82
}
SD_CID
;
83
84
typedef
struct
{
85
UINT32
NotUsed
:1;
// Not used [0:0]
86
UINT32
Crc
:7;
// CRC [7:1]
87
UINT32
Reserved
:2;
// Reserved [9:8]
88
UINT32
FileFormat
:2;
// File format [11:10]
89
UINT32
TmpWriteProtect
:1;
// Temporary write protection [12:12]
90
UINT32
PermWriteProtect
:1;
// Permanent write protection [13:13]
91
UINT32
Copy
:1;
// Copy flag (OTP) [14:14]
92
UINT32
FileFormatGrp
:1;
// File format group [15:15]
93
UINT32
Reserved1
:5;
// Reserved [20:16]
94
UINT32
WriteBlPartial
:1;
// Partial blocks for write allowed [21:21]
95
UINT32
WriteBlLen
:4;
// Max. write data block length [25:22]
96
UINT32
R2WFactor
:3;
// Write speed factor [28:26]
97
UINT32
Reserved2
:2;
// Manufacturer default ECC [30:29]
98
UINT32
WpGrpEnable
:1;
// Write protect group enable [31:31]
99
100
UINT32
WpGrpSize
:7;
// Write protect group size [38:32]
101
UINT32
SectorSize
:7;
// Erase sector size [45:39]
102
UINT32
EraseBlkEn
:1;
// Erase single block enable [46:46]
103
UINT32
CSizeMul
:3;
// device size multiplier [49:47]
104
UINT32
VddWCurrMax
:3;
// max. write current @VDD max [52:50]
105
UINT32
VddWCurrMin
:3;
// max. write current @VDD min [55:53]
106
UINT32
VddRCurrMax
:3;
// max. read current @VDD max [58:56]
107
UINT32
VddRCurrMin
:3;
// max. read current @VDD min [61:59]
108
UINT32
CSizeLow
:2;
// Device size low 2 bits [63:62]
109
110
UINT32
CSizeHigh
:10;
// Device size high 10 bits [73:64]
111
UINT32
Reserved4
:2;
// Reserved [75:74]
112
UINT32
DsrImp
:1;
// DSR implemented [76:76]
113
UINT32
ReadBlkMisalign
:1;
// Read block misalignment [77:77]
114
UINT32
WriteBlkMisalign
:1;
// Write block misalignment [78:78]
115
UINT32
ReadBlPartial
:1;
// Partial blocks for read allowed [79:79]
116
UINT32
ReadBlLen
:4;
// Max. read data block length [83:80]
117
UINT32
Ccc
:12;
// Card command classes [95:84]
118
119
UINT32
TranSpeed
:8;
// Max. data transfer rate [103:96]
120
UINT32
Nsac
:8;
// Data read access-time in CLK cycles (NSAC*100) [111:104]
121
UINT32
Taac
:8;
// Data read access-time [119:112]
122
UINT32
Reserved5
:6;
// Reserved [125:120]
123
UINT32
CsdStructure
:2;
// CSD structure [127:126]
124
}
SD_CSD
;
125
126
typedef
struct
{
127
UINT32
NotUsed
:1;
// Not used [0:0]
128
UINT32
Crc
:7;
// CRC [7:1]
129
UINT32
Reserved
:2;
// Reserved [9:8]
130
UINT32
FileFormat
:2;
// File format [11:10]
131
UINT32
TmpWriteProtect
:1;
// Temporary write protection [12:12]
132
UINT32
PermWriteProtect
:1;
// Permanent write protection [13:13]
133
UINT32
Copy
:1;
// Copy flag (OTP) [14:14]
134
UINT32
FileFormatGrp
:1;
// File format group [15:15]
135
UINT32
Reserved1
:5;
// Reserved [20:16]
136
UINT32
WriteBlPartial
:1;
// Partial blocks for write allowed [21:21]
137
UINT32
WriteBlLen
:4;
// Max. write data block length [25:22]
138
UINT32
R2WFactor
:3;
// Write speed factor [28:26]
139
UINT32
Reserved2
:2;
// Manufacturer default ECC [30:29]
140
UINT32
WpGrpEnable
:1;
// Write protect group enable [31:31]
141
142
UINT32
WpGrpSize
:7;
// Write protect group size [38:32]
143
UINT32
SectorSize
:7;
// Erase sector size [45:39]
144
UINT32
EraseBlkEn
:1;
// Erase single block enable [46:46]
145
UINT32
Reserved3
:1;
// Reserved [47:47]
146
UINT32
CSizeLow
:16;
// Device size low 16 bits [63:48]
147
148
UINT32
CSizeHigh
:6;
// Device size high 6 bits [69:64]
149
UINT32
Reserved4
:6;
// Reserved [75:70]
150
UINT32
DsrImp
:1;
// DSR implemented [76:76]
151
UINT32
ReadBlkMisalign
:1;
// Read block misalignment [77:77]
152
UINT32
WriteBlkMisalign
:1;
// Write block misalignment [78:78]
153
UINT32
ReadBlPartial
:1;
// Partial blocks for read allowed [79:79]
154
UINT32
ReadBlLen
:4;
// Max. read data block length [83:80]
155
UINT32
Ccc
:12;
// Card command classes [95:84]
156
157
UINT32
TranSpeed
:8;
// Max. data transfer rate [103:96]
158
UINT32
Nsac
:8;
// Data read access-time in CLK cycles (NSAC*100) [111:104]
159
UINT32
Taac
:8;
// Data read access-time [119:112]
160
UINT32
Reserved5
:6;
// Reserved [125:120]
161
UINT32
CsdStructure
:2;
// CSD structure [127:126]
162
}
SD_CSD2
;
163
164
typedef
struct
{
165
UINT32
Reserved
;
// Reserved [31:0]
166
167
UINT32
CmdSupport
:4;
// Command Support bits [35:32]
168
UINT32
Reserved1
:6;
// Reserved [41:36]
169
UINT32
SdSpec4
:1;
// Spec. Version 4.00 or higher [42:42]
170
UINT32
ExSecurity
:4;
// Extended Security Support [46:43]
171
UINT32
SdSpec3
:1;
// Spec. Version 3.00 or higher [47:47]
172
UINT32
SdBusWidths
:4;
// DAT Bus widths supported [51:48]
173
UINT32
SdSecurity
:3;
// CPRM security support [54:52]
174
UINT32
DataStatAfterErase
:1;
// Data status after erases [55]
175
UINT32
SdSpec
:4;
// SD Memory Card Spec. Version [59:56]
176
UINT32
ScrStructure
:4;
// SCR Structure [63:60]
177
}
SD_SCR
;
178
179
#pragma pack()
180
181
#endif
UINT32
unsigned int UINT32
Definition
ProcessorBind.h:102
UINT16
unsigned short UINT16
Definition
actypes.h:237
UINT8
unsigned char UINT8
Definition
actypes.h:236
SD_CID
Definition
Sd.h:72
SD_CID::ProductRevision
UINT8 ProductRevision
Definition
Sd.h:78
SD_CID::NotUsed
UINT8 NotUsed
Definition
Sd.h:73
SD_CID::Reserved
UINT16 Reserved
Definition
Sd.h:76
SD_CID::ManufacturingDate
UINT16 ManufacturingDate
Definition
Sd.h:75
SD_CID::ManufacturerId
UINT8 ManufacturerId
Definition
Sd.h:81
SD_CID::Crc
UINT8 Crc
Definition
Sd.h:74
SD_CSD2
Definition
Sd.h:126
SD_CSD2::R2WFactor
UINT32 R2WFactor
Definition
Sd.h:138
SD_CSD2::NotUsed
UINT32 NotUsed
Definition
Sd.h:127
SD_CSD2::WriteBlPartial
UINT32 WriteBlPartial
Definition
Sd.h:136
SD_CSD2::TranSpeed
UINT32 TranSpeed
Definition
Sd.h:157
SD_CSD2::WriteBlkMisalign
UINT32 WriteBlkMisalign
Definition
Sd.h:152
SD_CSD2::Reserved3
UINT32 Reserved3
Definition
Sd.h:145
SD_CSD2::Reserved1
UINT32 Reserved1
Definition
Sd.h:135
SD_CSD2::CsdStructure
UINT32 CsdStructure
Definition
Sd.h:161
SD_CSD2::ReadBlkMisalign
UINT32 ReadBlkMisalign
Definition
Sd.h:151
SD_CSD2::ReadBlPartial
UINT32 ReadBlPartial
Definition
Sd.h:153
SD_CSD2::Reserved4
UINT32 Reserved4
Definition
Sd.h:149
SD_CSD2::DsrImp
UINT32 DsrImp
Definition
Sd.h:150
SD_CSD2::WriteBlLen
UINT32 WriteBlLen
Definition
Sd.h:137
SD_CSD2::Reserved5
UINT32 Reserved5
Definition
Sd.h:160
SD_CSD2::Crc
UINT32 Crc
Definition
Sd.h:128
SD_CSD2::WpGrpSize
UINT32 WpGrpSize
Definition
Sd.h:142
SD_CSD2::WpGrpEnable
UINT32 WpGrpEnable
Definition
Sd.h:140
SD_CSD2::Nsac
UINT32 Nsac
Definition
Sd.h:158
SD_CSD2::CSizeHigh
UINT32 CSizeHigh
Definition
Sd.h:148
SD_CSD2::SectorSize
UINT32 SectorSize
Definition
Sd.h:143
SD_CSD2::TmpWriteProtect
UINT32 TmpWriteProtect
Definition
Sd.h:131
SD_CSD2::Ccc
UINT32 Ccc
Definition
Sd.h:155
SD_CSD2::EraseBlkEn
UINT32 EraseBlkEn
Definition
Sd.h:144
SD_CSD2::Copy
UINT32 Copy
Definition
Sd.h:133
SD_CSD2::FileFormat
UINT32 FileFormat
Definition
Sd.h:130
SD_CSD2::Taac
UINT32 Taac
Definition
Sd.h:159
SD_CSD2::PermWriteProtect
UINT32 PermWriteProtect
Definition
Sd.h:132
SD_CSD2::CSizeLow
UINT32 CSizeLow
Definition
Sd.h:146
SD_CSD2::FileFormatGrp
UINT32 FileFormatGrp
Definition
Sd.h:134
SD_CSD2::Reserved2
UINT32 Reserved2
Definition
Sd.h:139
SD_CSD2::Reserved
UINT32 Reserved
Definition
Sd.h:129
SD_CSD2::ReadBlLen
UINT32 ReadBlLen
Definition
Sd.h:154
SD_CSD
Definition
Sd.h:84
SD_CSD::FileFormatGrp
UINT32 FileFormatGrp
Definition
Sd.h:92
SD_CSD::Reserved4
UINT32 Reserved4
Definition
Sd.h:111
SD_CSD::WriteBlPartial
UINT32 WriteBlPartial
Definition
Sd.h:94
SD_CSD::Nsac
UINT32 Nsac
Definition
Sd.h:120
SD_CSD::SectorSize
UINT32 SectorSize
Definition
Sd.h:101
SD_CSD::WpGrpSize
UINT32 WpGrpSize
Definition
Sd.h:100
SD_CSD::Reserved5
UINT32 Reserved5
Definition
Sd.h:122
SD_CSD::Reserved1
UINT32 Reserved1
Definition
Sd.h:93
SD_CSD::CsdStructure
UINT32 CsdStructure
Definition
Sd.h:123
SD_CSD::ReadBlPartial
UINT32 ReadBlPartial
Definition
Sd.h:115
SD_CSD::EraseBlkEn
UINT32 EraseBlkEn
Definition
Sd.h:102
SD_CSD::Ccc
UINT32 Ccc
Definition
Sd.h:117
SD_CSD::CSizeHigh
UINT32 CSizeHigh
Definition
Sd.h:110
SD_CSD::VddWCurrMax
UINT32 VddWCurrMax
Definition
Sd.h:104
SD_CSD::VddWCurrMin
UINT32 VddWCurrMin
Definition
Sd.h:105
SD_CSD::TmpWriteProtect
UINT32 TmpWriteProtect
Definition
Sd.h:89
SD_CSD::PermWriteProtect
UINT32 PermWriteProtect
Definition
Sd.h:90
SD_CSD::NotUsed
UINT32 NotUsed
Definition
Sd.h:85
SD_CSD::Copy
UINT32 Copy
Definition
Sd.h:91
SD_CSD::TranSpeed
UINT32 TranSpeed
Definition
Sd.h:119
SD_CSD::Reserved2
UINT32 Reserved2
Definition
Sd.h:97
SD_CSD::Reserved
UINT32 Reserved
Definition
Sd.h:87
SD_CSD::WriteBlkMisalign
UINT32 WriteBlkMisalign
Definition
Sd.h:114
SD_CSD::WpGrpEnable
UINT32 WpGrpEnable
Definition
Sd.h:98
SD_CSD::WriteBlLen
UINT32 WriteBlLen
Definition
Sd.h:95
SD_CSD::DsrImp
UINT32 DsrImp
Definition
Sd.h:112
SD_CSD::CSizeLow
UINT32 CSizeLow
Definition
Sd.h:108
SD_CSD::Taac
UINT32 Taac
Definition
Sd.h:121
SD_CSD::VddRCurrMax
UINT32 VddRCurrMax
Definition
Sd.h:106
SD_CSD::CSizeMul
UINT32 CSizeMul
Definition
Sd.h:103
SD_CSD::FileFormat
UINT32 FileFormat
Definition
Sd.h:88
SD_CSD::ReadBlLen
UINT32 ReadBlLen
Definition
Sd.h:116
SD_CSD::R2WFactor
UINT32 R2WFactor
Definition
Sd.h:96
SD_CSD::Crc
UINT32 Crc
Definition
Sd.h:86
SD_CSD::VddRCurrMin
UINT32 VddRCurrMin
Definition
Sd.h:107
SD_CSD::ReadBlkMisalign
UINT32 ReadBlkMisalign
Definition
Sd.h:113
SD_SCR
Definition
Sd.h:164
SD_SCR::SdSpec3
UINT32 SdSpec3
Definition
Sd.h:171
SD_SCR::ExSecurity
UINT32 ExSecurity
Definition
Sd.h:170
SD_SCR::SdSecurity
UINT32 SdSecurity
Definition
Sd.h:173
SD_SCR::SdSpec4
UINT32 SdSpec4
Definition
Sd.h:169
SD_SCR::DataStatAfterErase
UINT32 DataStatAfterErase
Definition
Sd.h:174
SD_SCR::Reserved
UINT32 Reserved
Definition
Sd.h:165
SD_SCR::SdSpec
UINT32 SdSpec
Definition
Sd.h:175
SD_SCR::Reserved1
UINT32 Reserved1
Definition
Sd.h:168
SD_SCR::SdBusWidths
UINT32 SdBusWidths
Definition
Sd.h:172
SD_SCR::ScrStructure
UINT32 ScrStructure
Definition
Sd.h:176
SD_SCR::CmdSupport
UINT32 CmdSupport
Definition
Sd.h:167
Generated by
1.9.8