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
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
|
/*++
Copyright (c) 2010 WonderMedia Technologies, Inc.
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details. You
should have received a copy of the GNU General Public License along with this
program. If not, see http://www.gnu.org/licenses/>.
WonderMedia Technologies, Inc.
10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C.
--*/
#ifndef __SDC_H__
#define __SDC_H__
#define SD_FALSE 0
#define SD_TRUE 1
//SD command definition
#define GO_IDLE_STATE 0
#define SEND_OP_COND 1 //for MMC
#define ALL_SEND_CID 2
#define SEND_RELATIVE_ADDR 3
#define SET_RELATIVE_ADDR 3 //for MMC1
#define SET_DSR 4
#define SELECT_DESELECT_CARD 7
#define SEND_IF_COND 8 //for SD2.0 2006/01/20 janshiue
#define SEND_EXT_CSD 8 //for MMC
#define SEND_CSD 9
#define SEND_CID 10
//#define READ_DAT_UNTIL_STOP 11
#define STOP_TRANSMISSION 12
#define SEND_STATUS 13
//#define SET_BUS_WIDTH_REGISTER 14
#define GO_INACTIVE_STATE 15
#define SET_BLOCKLEN 16
#define READ_SINGLE_BLOCK 17
#define READ_MULTIPLE_BLOCK 18
//#define WRITE_DAT_UNTIL_STOP 20
#define WRITE_SINGLE_BLOCK 24
#define WRITE_MULTIPLE_BLOCK 25
//#define PROGRAM_CID 26
#define PROGRAM_CSD 27
#define SET_WRITE_PROT 28
#define CLR_WRITE_PROT 29
#define SEND_WRITE_PROT 30
#define ERASE_START 32
#define ERASE_END 33
//#define UNTAG_SECTOR 34
//#define TAG_ERASE_GROUP_START 35
//#define TAG_ERASE_GROUP_END 36
//#define UNTAG_ERASE_GROUP 37
#define ERASE_GO 38
//for SPI mode
#define READ_OCR 58 //for SPI
#define CRC_ON_OFF 59
#define APP_CMD 55
//APP command
#define SET_BUS_WIDTH 6
#define SD_STATUS 13
#define SD_NUM_WR_BLOCKS 22
#define SD_WR_BLK_ERASE_COUNT 23
#define SD_APP_OP_COND 41
#define SD_SET_CLR_CARD_DETECT 42
#define SD_SEND_SCR 51
#define SWITCH_MMC 6
// SD Response types
#define R0 0 // NONE response
#define R1 1 // Basic response format
#define R2 2 // R2 response. Used by ALL_SEND_CID(CMD2),
// SEND_CID(CMD10) and SEND_CSD(CMD9)
#define R3 3 // R3 response. Used by SEND_APP_OP_COND(ACMD41)
#define R6 6 // R6 response. Used by SEND_RELATIVE_ADDR(CMD3)
#define R1b 9
//bit definition for SD controller register
// 0x0 Control register
#define FIFO_RESET 0x08
#define CMD_START 0x01
#define CMD_READ 0x00
#define CMD_WRITE 0x04
#define CMD_SWRITE 0x10
#define CMD_SREAD 0x20
#define CMD_MWRITE 0x30
#define CMD_MREAD 0x40
//0x08 BusMode register
#define SOFT_RESET 0x80
#define SD_POWER 0x40
#define SPI_CS 0x20
#define SD_OFF 0x10
#define FOURBIT_MODE 0x02
#define ONEBIT_MODE 0xFD
#define SPI_MODE 0x01
#define SD_MODE 0x00
#define EIGHTBIT_MODE 0x04
//0x0C BlkLen
#define INT_ENABLE 0x80
#define DATA3_CD 0x40
#define GPI_CD 0x20
#define CD_POL_HIGH 0x10
#define CRCERR_ABORT 0x08 //abort multiple-blk-transfer when CRC-Err
//0x24 IntMask0
#define DI_INT_EN 0x80
#define CD_INT_EN 0x40
#define BLK_TRAN_DONE_INT_EN 0x20
#define MBLK_TRAN_DONE_INT_EN 0x10
//0x25 IntMask0
#define WCRC_ERR_INT_EN 0x80
#define RCRC_ERR_INT_EN 0x40
#define RESCRC_ERR_INT_EN 0x20
#define DATA_TOUT_INT_EN 0x10
#define MBLK_AUTO_STOP_INT_EN 0x08
#define CMD_RES_TOUT_INT_EN 0x04
#define CMD_RES_TRAN_DONE_INT_EN 0x02
//0x28 Status0 register
#define DEVICE_INS 0x80
#define CARD_DETECT 0x40
#define BLK_DONE 0x20
#define MBLK_DONE 0x10
#define CD_GPI 0x08
#define CD_DATA3 0x04
#define Write_Protect 0x02
//0x29 Status1 register
#define WCRC_ERR 0x80
#define RCRC_ERR 0x40
#define RSP_CRC_ERR 0x20
#define DATA_TIMEOUT 0x10
#define AUTOSTOP_DONE 0x08
#define RSP_TIMEOUT 0x04
#define CMDRSP_DONE 0x02
#define SDIO_INT 0x01
//0x2A Status2 register
#define DIS_FORCECLK 0x80
#define DATARSP_BUSY 0x20
#define CMD_RES_BUSY 0x10
//0x30 Clock register
#define Clk_375 0x00
#define Clk_10 0x01
#define Clk_12 0x02
#define Clk_15 0x03
#define Clk_20 0x04
#define Clk_24 0x05
#define Clk_30 0x06
#define Clk_40 0x07
#define Clk_48 0x08
#define SD_Clk_Auto 0
#define SD_Clk_15MHz 1
#define SD_Clk_20MHz 2
#define SD_Clk_25MHz 3
#define SD_Clk_33MHz 4
#define SD_Clk_40MHz 5
#define SD_Clk_44MHz 6
#define SD_Clk_50MHz 7
#define SD_Clk_400KHz 8
//0x34 Extension Control register
#define ArgShift 0x02
#define AutoStop 0x01
//return sdstatus
#define CMD_OK 0x00
#define CMDRSP_TOUT 0x01
#define RSP_CRCERR 0x02
#define APPCMD_FAIL 0x03
#define DATA_TOUT 0x04
#define WRITE_CRCERR 0x05
#define READ_CRCERR 0x06
#define TYPE_UNKNOWN 0x07
#define NOCARD_INSERT 0x08
#define POWER_FAIL 0x09
#define READ_CID_ERR 0x0a
#define READ_RCA_ERR 0x0b
#define SET_RCA_ERR 0x0c
#define READ_CSD_ERR 0x0d
#define SELECT_CARD_ERR 0x0e
#define READ_SCR_ERR 0x0f
#define SET_BUSWIDTH_ERR 0x10
#define SET_BLKLEN_ERR 0x11
#define STOP_FAIL 0x12
#define MBLK_FAIL 0x13
#define TURE_T 0x14
#define FALSE_F 0x15
#define SWITCH_ERR 0x14
#define SD1_0 0x00
#define SD1_1 0x01
#define SD2_0 0x02
#define MMC1_12 0x00
#define MMC1_4 0x01
#define MMC2_02 0x02
#define MMC3_123 0x03
#define MMC4_01 0x04
#define HostCapacitySupport 0x40
#define StandardCapacity 0x00
#define HighCapacity 0x01
#define MMC_BLOCK_SIZE 512
#define CFG_MMC_BASE 0xF0000000
//SD DMA channel control registers -- CTR
/* Reserved [07:05] */
#define SD_DMA_CTR_SW_REQ_EN 0x10 /* [04:04] */
#define SD_DMA_CTR_SW_REQ_DIS 0x00
/* Reserved [03:01] */
#define SD_DMA_CTR_CH_EN 0x01 /* [00:00] */
#define SD_DMA_CTR_CH_DIS 0x00 /* [00:00] */
//SD DMA channel status registers -- CSR
#define SD_DMA_CSR_DMA_REQ 0x80 /* [07:07] */
/* Reserved [06:04] */
#define SD_DMA_CSR_FIFO_EMPTY_INT 0x08 /* [03:03] */
#define SD_DMA_CSR_FIFO_EMPTY_INT_WRITE_CLEAR 0x08 /* [03:03] */
#define SD_DMA_CSR_AHB_BUS_ERR 0x04 /* [02:02] */
#define SD_DMA_CSR_AHB_BUS_ERR_WRITE_CLEAR 0x04 /* [02:02] */
/* For USB use [01:01] */
#define SD_DMA_CSR_TC 0x01 /* [00:00] */
#define SD_DMA_CSR_TC_WRITE_CLEAR 0x01
#define SD_DMA_CSR_ALL_SET_CLEAR 0x0F
//SD DMA global control registers -- GCR
/* Reserved [31:25] */
#define SD_DMA_GCR_MANUAL_FLUSH_EN 0x01000000 /* [24:24] */
#define SD_DMA_GCR_MANUAL_FLUAH_DIS 0x00000000 /* [24:24] */
/* Reserved [23:17] */
#define SD_DMA_GCR_FLUSH_FIFO 0x00010000 /* [16:16] */
#define SD_DMA_GCR__FLUSH_SELF_CLEAR 0x00000000 /* [16:16] */
/* Reserved [15:9] */
#define SD_DMA_GCR_GINT_EN 0x00000100 /* [08:08] */
#define SD_DMA_GCR_GINT_DIS 0x00000000 /* [08:08] */
/* Reserved [07:01] */
#define SD_DMA_GCR_GDMA_EN 0x00000001 /* [00:00] */
#define SD_DMA_GCR_GDMA_DIS 0x00000000 /* [00:00] */
/*
* SD PDMA
*/
#define SD_PDMA_BASE_ADDR 0xD800A100
#define SD_DESC_BASE_ADDR 0x00d00000
struct _SD_PDMA_REG_ {
volatile unsigned long DMA_GCR; /* Rx00 */
volatile unsigned long DMA_IER; /* Rx04 */
volatile unsigned long DMA_ISR; /* Rx08 */
volatile unsigned long *DMA_DESPR; /* Rx0C */
volatile unsigned long DMA_RBR; /* Rx10 */
volatile unsigned long DMA_DAR; /* Rx14 */
volatile unsigned long DMA_BAR; /* Rx18 */
volatile unsigned long DMA_CPR; /* Rx1C */
volatile unsigned long DMA_CCR; /* RX20 */
volatile unsigned long resv[5]; /* RX2C-3C */
};
//} SD_PDMA_REG, *PSD_PDMA_REG;
/*
* SD PDMA - DMA_GCR : DMA Global Control Register
*/
#define SD_PDMA_GCR_DMA_EN 0x00000001 /* [0] -- DMA controller enable */
#define SD_PDMA_GCR_SOFTRESET 0x00000100 /* [8] -- Software rest */
/*
* SD PDMA - DMA_IER : DMA Interrupt Enable Register
*/
#define SD_PDMA_IER_INT_EN 0x00000001 /* [0] -- DMA interrupt enable */
/*
* SD PDMA - DMA_ISR : DMA Interrupt Status Register
*/
#define SD_PDMA_IER_INT_STS 0x00000001 /* [0] -- DMA interrupt status */
/*
* SD PDMA - DMA_DESPR : DMA Descriptor base address Pointer Register
*/
/*
* SD PDMA - DMA_RBR : DMA Residual Bytes Register
*/
#define SD_PDMA_RBR_End 0x80000000 /* [0] -- DMA interrupt status */
#define SD_PDMA_RBR_Format 0x40000000 /* [0] -- DMA interrupt status */
/*
* SD PDMA - DMA_DAR : DMA Data Address Register
*/
/*
* SD PDMA - DMA_BAR : DMA Rbanch Address Register
*/
/*
* SD PDMA - DMA_CPR : DMA Command Pointer Register
*/
/*
* SD PDMA - DMA_CCR : DMAContext Control Register for Channel 0
*/
#define SD_PDMA_READ 0x00
#define SD_PDMA_WRITE 0x01
#define SD_PDMA_CCR_RUN 0x00000080
#define SD_PDMA_CCR_IF_to_peripheral 0x00000000
#define SD_PDMA_CCR_peripheral_to_IF 0x00400000
#define SD_PDMA_CCR_EvtCode 0x0000000f
#define SD_PDMA_CCR_Evt_no_status 0x00000000
#define SD_PDMA_CCR_Evt_ff_underrun 0x00000001
#define SD_PDMA_CCR_Evt_ff_overrun 0x00000002
#define SD_PDMA_CCR_Evt_desp_read 0x00000003
#define SD_PDMA_CCR_Evt_data_rw 0x00000004
#define SD_PDMA_CCR_Evt_early_end 0x00000005
#define SD_PDMA_CCR_Evt_success 0x0000000f
/*
* PDMA Descriptor short
*/
struct _SD_PDMA_DESC_S{
unsigned long volatile ReqCount:16; /* bit 0 -15 -Request count */
unsigned long volatile i:1; /* bit 16 -interrupt */
unsigned long volatile reserve:13; /* bit 17-29 -reserved */
unsigned long volatile format:1; /* bit 30 -The descriptor format */
unsigned long volatile end:1; /* bit 31 -End flag of descriptor list*/
unsigned long volatile *DataBufferAddr; /* bit 31 -Data Buffer address */
};//__attribute__((packed)); /*mvl tool chain can't uas __attribute__((packed))*/
/*
* PDMA Descriptor long
*/
struct _SD_PDMA_DESC_L{
unsigned long volatile ReqCount:16; /* bit 0 -15 -Request count */
unsigned long volatile i:1; /* bit 16 -interrupt */
unsigned long volatile reserve:13; /* bit 17-29 -reserved */
unsigned long volatile format:1; /* bit 30 -The descriptor format */
unsigned long volatile end:1; /* bit 31 -End flag of descriptor list*/
unsigned long volatile *DataBufferAddr; /* bit 31-0 -Data Buffer address */
unsigned long volatile *BranchAddr; /* bit 31-2 -Descriptor Branch address */
unsigned long volatile reserve0; /* bit 31-0 -reserved */
};//__attribute__((packed));
//SD card related information
typedef struct sd_info_s {
unsigned char RCAHi;
unsigned char RCALo;
unsigned long SDCard_Size;
unsigned char MMC_Card;
unsigned char SD_Card;
unsigned char SD_IO_Card;
unsigned char InitOK;
unsigned char CardStateChange;
unsigned char CardInsert;
unsigned char CardRemove;
unsigned char SDVersion;
unsigned char CardCapacityStatus;
unsigned char MMCMaxClockRate;
unsigned char HighSpeedSupport;
unsigned char MMCVersion;
unsigned char ocr[4];
unsigned char cid[16];
unsigned char csd[16];
unsigned char ext_csd[512];
unsigned char scr[8];
unsigned char CtrlID;
unsigned long RCA;
unsigned long strapping;
} sd_info_t;
/*SDMMC control registers.*/
typedef struct{
volatile unsigned char ctlr; /*Control Register*/
volatile unsigned char cmdi; /*Command Index Register*/
volatile unsigned char respt; /*Response Type Register*/
volatile unsigned char Reserved1; /*Reserved1*/
volatile unsigned char cmdarg0; /*Command Argument Register 0x03*/
volatile unsigned char cmdarg1; /*Command Argument Register 0x04*/
volatile unsigned char cmdarg2; /*Command Argument Register 0x05*/
volatile unsigned char cmdarg3; /*Command Argument Register 0x06*/
volatile unsigned char busm; /*Bus Mode Register*/
volatile unsigned char Reserved2[3]; /*Reserved2*/
volatile unsigned short blklen; /*Block Length Register*/
volatile unsigned short blkcnt; /*Block Count Register*/
volatile unsigned char resr[16]; /*Response Register*/
volatile unsigned short cbc; /*Current Block Count*/
volatile unsigned short Reserved3; /*Reserved3*/
volatile unsigned char imr0; /*Interrupt Mask Register 0*/
volatile unsigned char imr1; /*Interrupt Mask Register 1*/
volatile unsigned char Reserved4[2]; /*Reserved3*/
volatile unsigned char str0; /*SD Status Register 0*/
volatile unsigned char str1; /*SD Status Register 1*/
volatile unsigned char str2; /*SD Status Register 2*/
volatile unsigned char str3; /*SD Status Register 3 (SPI Data Error)*/
volatile unsigned char rtor; /*Response Time Out Register*/
volatile unsigned char Reserved5[3]; /*Reserved4*/
volatile unsigned long Reserved6; /*Reserved5*/
volatile unsigned char extctl; /*Extend Control Register*/
volatile unsigned char Reserved7[3]; /*Reserved6*/
volatile unsigned short sblklen; /*Shadowed Block Length Register*/
volatile unsigned short Reserved8; /*Reserved7*/
volatile unsigned short timeval; /*Timer Value Register*/
}
WMT_SDMMC_REG, *PWMT_SDMMC_REG;
/*GPIO*/
typedef struct _GPIO_REG_
{
volatile unsigned long CTRL_KPAD_MPGTS_ROM; // [Rx00] GPIO Enable Control Register for Kpad, Mpeg-TS, CEN_SEEROM
volatile unsigned long CTRL_DVI; // [Rx04] GPIO Enable Control Register for DVI Signal
volatile unsigned long CTRL_CF; // [Rx08] GPIO Enable Control Register for CF
volatile unsigned long CTRL_NF; // [Rx0C] GPIO Enable Control Register for NF
volatile unsigned long CTRL_PCIAD; // [Rx10] GPIO Enable Control for PCI AD BUS
volatile unsigned long CTRL_PCI; // [Rx14] GPIO Eanble Control for Non PCI AD BUS
volatile unsigned long CTRL_LCD_SPDIF; // [Rx18] GPIO Enable Control for LCD, SPDIF
volatile unsigned long RESV_1C; // [Rx1C]
volatile unsigned long OC_KPAD_MPGTS_ROM; // [Rx20] GPIO Output Control Register for Kpad, Mpeg-TS, CEN_SEEROM
volatile unsigned long OC_DVI; // [Rx24] GPIO Output Control Register for DVI Signal
volatile unsigned long OC_CF; // [Rx28] GPIO Output Control Register for CF
volatile unsigned long OC_NF; // [Rx2C] GPIO Output Control Register for NF
volatile unsigned long OC_PCIAD; // [Rx30] GPIO Output Control Register for PCI AD BUS
volatile unsigned long OC_PCI; // [Rx34] GPIO Output Control Register for Non PCI AD BUS
volatile unsigned long OC_LCD_SPDIF; // [Rx38] GPIO Output Control Register for LCD, SPDIF
volatile unsigned long RESV_3C; // [Rx3C]
volatile unsigned long OD_KPAD_MPGTS_ROM; // [Rx40] GPIO Output Data Register for Kpad, Mpeg-TS, CEN_SEEROM
volatile unsigned long OD_DVI; // [Rx44] GPIO Output Data Register for DVI Signal
volatile unsigned long OD_CF; // [Rx44] GPIO Output Data Register for CF
volatile unsigned long OD_NF; // [Rx4C] GPIO Output Data Register for NF
volatile unsigned long OD_PCIAD; // [Rx50] GPIO Output Data Register for PCIAD
volatile unsigned long OD_PCI; // [Rx54] GPIO Output Data Register for Non PCI AD BUS
volatile unsigned long OD_LCD_SPDIF; // [Rx58] GPIO Output Data Register for LCD, SPDIF
volatile unsigned long RESV_5C; // [Rx5C]
volatile unsigned long ID_KPAD_MPGTS_ROM; // [Rx60] GPIO Input Data Register for Kpad, Mpeg-TS, CEN_SEEROM
volatile unsigned long ID_DVI; // [Rx64] GPIO Input Data Register for DVI Signal
volatile unsigned long ID_CF; // [Rx68] GPIO Input Data Register for CF
volatile unsigned long ID_NF; // [Rx6C] GPIO Input Data Register for NF
volatile unsigned long ID_PCIAD; // [Rx70] GPIO Input Data Register for PCIAD
volatile unsigned long ID_PCI; // [Rx74] GPIO Input Data Register for Non PCI AD BUS
volatile unsigned long ID_LCD_SPDIF; // [Rx78] GPIO Input Data Register for LCD, SPDIF
volatile unsigned long RESV_7C; // [Rx7C]
volatile unsigned long RESV_80[0x20]; // [Rx80-RxFF]
volatile unsigned long STRAP_STS1; // [Rx100] Strapping Option Status Register1
volatile unsigned long STRAP_STS2; // [Rx104] Strapping Option Status Register2
volatile unsigned long AHB_CTRL; // [Rx108] AHB Control Register
volatile unsigned long RESV_10C[0x3D]; // [Rx10C-Rx1FF]
volatile unsigned long PIN_MULTI; // [Rx200] Pin Multiplexing
volatile unsigned long RESV_204[0x3]; // [Rx204-Rx20F]
volatile unsigned long PCI_DELAY_TEST; // [Rx210]
volatile unsigned long PCI_RESET; // [Rx214]
volatile unsigned long RESV_218[2]; // [Rx218 - Rx21F]
volatile unsigned long PCI_1X_DELAY; // [Rx220]
volatile unsigned long PCI_2X_DELAY; // [Rx224]
volatile unsigned long PCI_2X_RELAY_INVERT; // [Rx228]
volatile unsigned long RESV_22C[0x35]; // [Rx22C - Rx2FF]
volatile unsigned long INT_REQ_TYPE; // [Rx300] GPIO Interrupt Request Type Register
volatile unsigned long INT_REQ_STS; // [Rx304] GPIO Interrupt Request Status Register
volatile unsigned long RESV_308[0x3E]; // [Rx308-Rx3FF]
volatile unsigned long IDE_IO_DRV; // [Rx400] IDE I/O Drive Strength Register
volatile unsigned long MS_IO_DRV; // [Rx404] MS I/O Drive Strength and Slew Rate Register
volatile unsigned long PCI_IO_DRV; // [Rx408] PCI Bus I/O Drive Strength and Slew Rate Register
volatile unsigned long SD_IO_DRV; // [Rx40C] SD I/O Drive Strength and Slwe Rate Register
volatile unsigned long VID_IO_DRV; // [Rx410] VID Clock I/O Drive Strength and Slew Rate Register
volatile unsigned long SPI_IO_DRV; // [Rx414] SPI I/O Drive Strength and Slew Rate Register
volatile unsigned long CF_IO_DRV; // [Rx418] CF I/O Drive Strength and Slew Rate Register
volatile unsigned long LPC_IO_DRV; // [Rx41C] LPC I/O Drive Strength and Slew Rate Register
volatile unsigned long NF_IO_DRV; // [Rx420] NAND I/O Drive Strength and Slew Rate Register
volatile unsigned long MISC_IO_DRV; // [Rx424] MISC I/O Drive Strength and Slew Rate Register
}GPIO_REG, * PGPIO_REG;
typedef struct root_dir {
char MagicHeader[32];
char filename1[16];
unsigned int filesize1;
char resv1[12];
char filename2[16];
unsigned int filesize2;
char resv2[12];
char filename3[16];
unsigned int filesize3;
char resv3[12];
} root_dir;
#endif
|