1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#[doc = r" Register block"]
#[repr(C)]
pub struct RegisterBlock {
    #[doc = "0x00 - SDMA System Address Register"]
    pub sdmasysaddr: SDMASYSADDR,
    #[doc = "0x04 - Block Size and Block Count Register"]
    pub blksize: BLKSIZE,
    #[doc = "0x08 - SD Command Argument Register"]
    pub cmdarg1: CMDARG1,
    #[doc = "0x0c - Transfer Mode and Command Register"]
    pub tfrmode: TFRMODE,
    #[doc = "0x10 - Response0 and Response1 Register"]
    pub resp0: RESP0,
    #[doc = "0x14 - Response2 and Response3 Register"]
    pub resp2: RESP2,
    #[doc = "0x18 - Response4 and Response5 Register"]
    pub resp4: RESP4,
    #[doc = "0x1c - Response6 and Response7 Register"]
    pub resp6: RESP6,
    #[doc = "0x20 - Buffer Data Register"]
    pub bufdatport: BUFDATPORT,
    #[doc = "0x24 - Present State Register"]
    pub prsstat: PRSSTAT,
    #[doc = "0x28 - Host Control1, Power, Block Gap and Wakeup-up Control Register"]
    pub hostctrl1: HOSTCTRL1,
    #[doc = "0x2c - Clock Control, Timeout Control and Software Register"]
    pub clockctrl: CLOCKCTRL,
    #[doc = "0x30 - Normal and Error Interrupt Status Register"]
    pub ifcr: IFCR,
    #[doc = "0x34 - Normal and Error Interrupt Status Enable Register"]
    pub ifenc: IFENC,
    #[doc = "0x38 - Normal and Error Interrupt Signal Enable Register"]
    pub ien: IEN,
    #[doc = "0x3c - AUTO CMD12 Error Status and Host Control2 Register"]
    pub ac12errstat: AC12ERRSTAT,
    #[doc = "0x40 - Capabilities Register to Hold Bits 31~0"]
    pub capab0: CAPAB0,
    #[doc = "0x44 - Capabilities Register to Hold Bits 63~32"]
    pub capab2: CAPAB2,
    #[doc = "0x48 - Maximum Current Capabilities Register"]
    pub maxcurcapab: MAXCURCAPAB,
    _reserved0: [u8; 4usize],
    #[doc = "0x50 - Force Event Register for Auto CMD Error Status"]
    pub fevterrstat: FEVTERRSTAT,
    #[doc = "0x54 - ADMA Error Status Register"]
    pub admaes: ADMAES,
    #[doc = "0x58 - ADMA System Address Register"]
    pub adsaddr: ADSADDR,
    _reserved1: [u8; 4usize],
    #[doc = "0x60 - Preset Value for Initialization and Default Speed Mode"]
    pub prstval0: PRSTVAL0,
    #[doc = "0x64 - Preset Value for High Speed and SDR12 Modes"]
    pub prstval2: PRSTVAL2,
    #[doc = "0x68 - Preset Value for SDR25 and SDR50 Modes"]
    pub prstval4: PRSTVAL4,
    #[doc = "0x6c - Preset Value for SDR104 and DDR50 Modes"]
    pub prstval6: PRSTVAL6,
    #[doc = "0x70 - Boot Timeout Control Register"]
    pub boottoctrl: BOOTTOCTRL,
    _reserved2: [u8; 136usize],
    #[doc = "0xfc - Slot Interrupt Status Register"]
    pub slotintstat: SLOTINTSTAT,
    _reserved3: [u8; 1792usize],
    #[doc = "0x800 - Core Control Signals"]
    pub ctrl: CTRL,
    #[doc = "0x804 - Core Configuration 0"]
    pub cfg0: CFG0,
    #[doc = "0x808 - Core Configuration 1"]
    pub cfg1: CFG1,
    #[doc = "0x80c - Core Configuration Preset Value 0"]
    pub cfgpresetval0: CFGPRESETVAL0,
    #[doc = "0x810 - Core Configuration Preset Value 1"]
    pub cfgpresetval1: CFGPRESETVAL1,
    #[doc = "0x814 - Core Configuration Preset Value 2"]
    pub cfgpresetval2: CFGPRESETVAL2,
    #[doc = "0x818 - Core Configuration Preset Value 3"]
    pub cfgpresetval3: CFGPRESETVAL3,
    #[doc = "0x81c - I/O LOCATION Register"]
    pub routeloc0: ROUTELOC0,
    #[doc = "0x820 - I/O LOCATION Register"]
    pub routeloc1: ROUTELOC1,
    #[doc = "0x824 - I/O LOCATION Enable Register"]
    pub routepen: ROUTEPEN,
}
#[doc = "SDMA System Address Register"]
pub struct SDMASYSADDR {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "SDMA System Address Register"]
pub mod sdmasysaddr;
#[doc = "Block Size and Block Count Register"]
pub struct BLKSIZE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Block Size and Block Count Register"]
pub mod blksize;
#[doc = "SD Command Argument Register"]
pub struct CMDARG1 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "SD Command Argument Register"]
pub mod cmdarg1;
#[doc = "Transfer Mode and Command Register"]
pub struct TFRMODE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Transfer Mode and Command Register"]
pub mod tfrmode;
#[doc = "Response0 and Response1 Register"]
pub struct RESP0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Response0 and Response1 Register"]
pub mod resp0;
#[doc = "Response2 and Response3 Register"]
pub struct RESP2 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Response2 and Response3 Register"]
pub mod resp2;
#[doc = "Response4 and Response5 Register"]
pub struct RESP4 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Response4 and Response5 Register"]
pub mod resp4;
#[doc = "Response6 and Response7 Register"]
pub struct RESP6 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Response6 and Response7 Register"]
pub mod resp6;
#[doc = "Buffer Data Register"]
pub struct BUFDATPORT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Buffer Data Register"]
pub mod bufdatport;
#[doc = "Present State Register"]
pub struct PRSSTAT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Present State Register"]
pub mod prsstat;
#[doc = "Host Control1, Power, Block Gap and Wakeup-up Control Register"]
pub struct HOSTCTRL1 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Host Control1, Power, Block Gap and Wakeup-up Control Register"]
pub mod hostctrl1;
#[doc = "Clock Control, Timeout Control and Software Register"]
pub struct CLOCKCTRL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Clock Control, Timeout Control and Software Register"]
pub mod clockctrl;
#[doc = "Normal and Error Interrupt Status Register"]
pub struct IFCR {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Normal and Error Interrupt Status Register"]
pub mod ifcr;
#[doc = "Normal and Error Interrupt Status Enable Register"]
pub struct IFENC {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Normal and Error Interrupt Status Enable Register"]
pub mod ifenc;
#[doc = "Normal and Error Interrupt Signal Enable Register"]
pub struct IEN {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Normal and Error Interrupt Signal Enable Register"]
pub mod ien;
#[doc = "AUTO CMD12 Error Status and Host Control2 Register"]
pub struct AC12ERRSTAT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "AUTO CMD12 Error Status and Host Control2 Register"]
pub mod ac12errstat;
#[doc = "Capabilities Register to Hold Bits 31~0"]
pub struct CAPAB0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Capabilities Register to Hold Bits 31~0"]
pub mod capab0;
#[doc = "Capabilities Register to Hold Bits 63~32"]
pub struct CAPAB2 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Capabilities Register to Hold Bits 63~32"]
pub mod capab2;
#[doc = "Maximum Current Capabilities Register"]
pub struct MAXCURCAPAB {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Maximum Current Capabilities Register"]
pub mod maxcurcapab;
#[doc = "Force Event Register for Auto CMD Error Status"]
pub struct FEVTERRSTAT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Force Event Register for Auto CMD Error Status"]
pub mod fevterrstat;
#[doc = "ADMA Error Status Register"]
pub struct ADMAES {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "ADMA Error Status Register"]
pub mod admaes;
#[doc = "ADMA System Address Register"]
pub struct ADSADDR {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "ADMA System Address Register"]
pub mod adsaddr;
#[doc = "Preset Value for Initialization and Default Speed Mode"]
pub struct PRSTVAL0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Preset Value for Initialization and Default Speed Mode"]
pub mod prstval0;
#[doc = "Preset Value for High Speed and SDR12 Modes"]
pub struct PRSTVAL2 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Preset Value for High Speed and SDR12 Modes"]
pub mod prstval2;
#[doc = "Preset Value for SDR25 and SDR50 Modes"]
pub struct PRSTVAL4 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Preset Value for SDR25 and SDR50 Modes"]
pub mod prstval4;
#[doc = "Preset Value for SDR104 and DDR50 Modes"]
pub struct PRSTVAL6 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Preset Value for SDR104 and DDR50 Modes"]
pub mod prstval6;
#[doc = "Boot Timeout Control Register"]
pub struct BOOTTOCTRL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Boot Timeout Control Register"]
pub mod boottoctrl;
#[doc = "Slot Interrupt Status Register"]
pub struct SLOTINTSTAT {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Slot Interrupt Status Register"]
pub mod slotintstat;
#[doc = "Core Control Signals"]
pub struct CTRL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Control Signals"]
pub mod ctrl;
#[doc = "Core Configuration 0"]
pub struct CFG0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Configuration 0"]
pub mod cfg0;
#[doc = "Core Configuration 1"]
pub struct CFG1 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Configuration 1"]
pub mod cfg1;
#[doc = "Core Configuration Preset Value 0"]
pub struct CFGPRESETVAL0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Configuration Preset Value 0"]
pub mod cfgpresetval0;
#[doc = "Core Configuration Preset Value 1"]
pub struct CFGPRESETVAL1 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Configuration Preset Value 1"]
pub mod cfgpresetval1;
#[doc = "Core Configuration Preset Value 2"]
pub struct CFGPRESETVAL2 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Configuration Preset Value 2"]
pub mod cfgpresetval2;
#[doc = "Core Configuration Preset Value 3"]
pub struct CFGPRESETVAL3 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Core Configuration Preset Value 3"]
pub mod cfgpresetval3;
#[doc = "I/O LOCATION Register"]
pub struct ROUTELOC0 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "I/O LOCATION Register"]
pub mod routeloc0;
#[doc = "I/O LOCATION Register"]
pub struct ROUTELOC1 {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "I/O LOCATION Register"]
pub mod routeloc1;
#[doc = "I/O LOCATION Enable Register"]
pub struct ROUTEPEN {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "I/O LOCATION Enable Register"]
pub mod routepen;