1//*--------------------------------------------------------------------------- 2//* ATMEL Microcontroller Software Support - ROUSSET - 3//*--------------------------------------------------------------------------- 4//* The software is delivered "AS IS" without warranty or condition of any 5//* kind, either express, implied or statutory. This includes without 6//* limitation any warranty or condition with respect to merchantability or 7//* fitness for any particular purpose, or against the infringements of 8//* intellectual property rights of others. 9//*--------------------------------------------------------------------------- 10//* File Name : AT91C_MCI_Device.h 11//* Object : Data Flash Atmel Description File 12//* Translator : 13//* 14//* 1.0 26/11/02 FB : Creation 15//*--------------------------------------------------------------------------- 16 17#ifndef AT91C_MCI_Device_h 18#define AT91C_MCI_Device_h 19 20#include "AT91RM9200.h" 21#include "lib_AT91RM9200.h" 22 23typedef unsigned int AT91S_MCIDeviceStatus; 24 25///////////////////////////////////////////////////////////////////////////////////////////////////// 26 27#define AT91C_CARD_REMOVED 0 28#define AT91C_MMC_CARD_INSERTED 1 29#define AT91C_SD_CARD_INSERTED 2 30 31#define AT91C_NO_ARGUMENT 0x0 32 33#define AT91C_FIRST_RCA 0xCAFE 34#define AT91C_MAX_MCI_CARDS 10 35 36#define AT91C_BUS_WIDTH_1BIT 0x00 37#define AT91C_BUS_WIDTH_4BITS 0x02 38 39/* Driver State */ 40#define AT91C_MCI_IDLE 0x0 41#define AT91C_MCI_TIMEOUT_ERROR 0x1 42#define AT91C_MCI_RX_SINGLE_BLOCK 0x2 43#define AT91C_MCI_RX_MULTIPLE_BLOCK 0x3 44#define AT91C_MCI_RX_STREAM 0x4 45#define AT91C_MCI_TX_SINGLE_BLOCK 0x5 46#define AT91C_MCI_TX_MULTIPLE_BLOCK 0x6 47#define AT91C_MCI_TX_STREAM 0x7 48 49/* TimeOut */ 50#define AT91C_TIMEOUT_CMDRDY 30 51 52///////////////////////////////////////////////////////////////////////////////////////////////////// 53// MMC & SDCard Structures 54///////////////////////////////////////////////////////////////////////////////////////////////////// 55 56/*-----------------------------------------------*/ 57/* SDCard Device Descriptor Structure Definition */ 58/*-----------------------------------------------*/ 59typedef struct _AT91S_MciDeviceDesc 60{ 61 volatile unsigned char state; 62 unsigned char SDCard_bus_width; 63 64} AT91S_MciDeviceDesc, *AT91PS_MciDeviceDesc; 65 66/*---------------------------------------------*/ 67/* MMC & SDCard Structure Device Features */ 68/*---------------------------------------------*/ 69typedef struct _AT91S_MciDeviceFeatures 70{ 71 unsigned char Card_Inserted; // (0=AT91C_CARD_REMOVED) (1=AT91C_MMC_CARD_INSERTED) (2=AT91C_SD_CARD_INSERTED) 72 unsigned int Relative_Card_Address; // RCA 73 unsigned int Max_Read_DataBlock_Length; // 2^(READ_BL_LEN) in CSD 74 unsigned int Max_Write_DataBlock_Length; // 2^(WRITE_BL_LEN) in CSD 75 unsigned char Read_Partial; // READ_BL_PARTIAL 76 unsigned char Write_Partial; // WRITE_BL_PARTIAL 77 unsigned char Erase_Block_Enable; // ERASE_BLK_EN 78 unsigned char Read_Block_Misalignment; // READ_BLK_MISALIGN 79 unsigned char Write_Block_Misalignment; // WRITE_BLK_MISALIGN 80 unsigned char Sector_Size; // SECTOR_SIZE 81 unsigned int Memory_Capacity; // Size in bits of the device 82 83} AT91S_MciDeviceFeatures, *AT91PS_MciDeviceFeatures ; 84 85/*---------------------------------------------*/ 86/* MCI Device Structure Definition */ 87/*---------------------------------------------*/ 88typedef struct _AT91S_MciDevice 89{ 90 AT91PS_MciDeviceDesc pMCI_DeviceDesc; // MCI device descriptor 91 AT91PS_MciDeviceFeatures pMCI_DeviceFeatures;// Pointer on a MCI device features array 92}AT91S_MciDevice, *AT91PS_MciDevice; 93 94///////////////////////////////////////////////////////////////////////////////////////////////////// 95// MCI_CMD Register Value 96///////////////////////////////////////////////////////////////////////////////////////////////////// 97#define AT91C_POWER_ON_INIT (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_INIT | AT91C_MCI_OPDCMD) 98 99///////////////////////////////////////////////////////////////// 100// Class 0 & 1 commands: Basic commands and Read Stream commands 101///////////////////////////////////////////////////////////////// 102 103#define AT91C_GO_IDLE_STATE_CMD (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE ) 104#define AT91C_MMC_GO_IDLE_STATE_CMD (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_OPDCMD) 105#define AT91C_MMC_SEND_OP_COND_CMD (1 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_OPDCMD) 106#define AT91C_ALL_SEND_CID_CMD (2 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 ) 107#define AT91C_MMC_ALL_SEND_CID_CMD (2 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_OPDCMD) 108#define AT91C_SET_RELATIVE_ADDR_CMD (3 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT ) 109#define AT91C_MMC_SET_RELATIVE_ADDR_CMD (3 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT | AT91C_MCI_OPDCMD) 110 111#define AT91C_SET_DSR_CMD (4 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_NO | AT91C_MCI_MAXLAT ) // no tested 112 113#define AT91C_SEL_DESEL_CARD_CMD (7 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT ) 114#define AT91C_SEND_CSD_CMD (9 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_MAXLAT ) 115#define AT91C_SEND_CID_CMD (10 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_MAXLAT ) 116#define AT91C_MMC_READ_DAT_UNTIL_STOP_CMD (11 | AT91C_MCI_TRTYP_STREAM| AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRDIR | AT91C_MCI_TRCMD_START | AT91C_MCI_MAXLAT ) 117 118#define AT91C_STOP_TRANSMISSION_CMD (12 | AT91C_MCI_TRCMD_STOP | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT ) 119#define AT91C_STOP_TRANSMISSION_SYNC_CMD (12 | AT91C_MCI_TRCMD_STOP | AT91C_MCI_SPCMD_SYNC | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT ) 120#define AT91C_SEND_STATUS_CMD (13 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT ) 121#define AT91C_GO_INACTIVE_STATE_CMD (15 | AT91C_MCI_RSPTYP_NO ) 122 123//*------------------------------------------------ 124//* Class 2 commands: Block oriented Read commands 125//*------------------------------------------------ 126 127#define AT91C_SET_BLOCKLEN_CMD (16 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT ) 128#define AT91C_READ_SINGLE_BLOCK_CMD (17 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | AT91C_MCI_TRTYP_BLOCK | AT91C_MCI_TRDIR | AT91C_MCI_MAXLAT) 129#define AT91C_READ_MULTIPLE_BLOCK_CMD (18 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | AT91C_MCI_TRTYP_MULTIPLE | AT91C_MCI_TRDIR | AT91C_MCI_MAXLAT) 130 131//*-------------------------------------------- 132//* Class 3 commands: Sequential write commands 133//*-------------------------------------------- 134 135#define AT91C_MMC_WRITE_DAT_UNTIL_STOP_CMD (20 | AT91C_MCI_TRTYP_STREAM| AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 & ~(AT91C_MCI_TRDIR) | AT91C_MCI_TRCMD_START | AT91C_MCI_MAXLAT ) // MMC 136 137//*------------------------------------------------ 138//* Class 4 commands: Block oriented write commands 139//*------------------------------------------------ 140 141#define AT91C_WRITE_BLOCK_CMD (24 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | (AT91C_MCI_TRTYP_BLOCK & ~(AT91C_MCI_TRDIR)) | AT91C_MCI_MAXLAT) 142#define AT91C_WRITE_MULTIPLE_BLOCK_CMD (25 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | (AT91C_MCI_TRTYP_MULTIPLE & ~(AT91C_MCI_TRDIR)) | AT91C_MCI_MAXLAT) 143#define AT91C_PROGRAM_CSD_CMD (27 | AT91C_MCI_RSPTYP_48 ) 144 145 146//*---------------------------------------- 147//* Class 6 commands: Group Write protect 148//*---------------------------------------- 149 150#define AT91C_SET_WRITE_PROT_CMD (28 | AT91C_MCI_RSPTYP_48 ) 151#define AT91C_CLR_WRITE_PROT_CMD (29 | AT91C_MCI_RSPTYP_48 ) 152#define AT91C_SEND_WRITE_PROT_CMD (30 | AT91C_MCI_RSPTYP_48 ) 153 154 155//*---------------------------------------- 156//* Class 5 commands: Erase commands 157//*---------------------------------------- 158 159#define AT91C_TAG_SECTOR_START_CMD (32 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 160#define AT91C_TAG_SECTOR_END_CMD (33 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 161#define AT91C_MMC_UNTAG_SECTOR_CMD (34 | AT91C_MCI_RSPTYP_48 ) 162#define AT91C_MMC_TAG_ERASE_GROUP_START_CMD (35 | AT91C_MCI_RSPTYP_48 ) 163#define AT91C_MMC_TAG_ERASE_GROUP_END_CMD (36 | AT91C_MCI_RSPTYP_48 ) 164#define AT91C_MMC_UNTAG_ERASE_GROUP_CMD (37 | AT91C_MCI_RSPTYP_48 ) 165#define AT91C_ERASE_CMD (38 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT ) 166 167//*---------------------------------------- 168//* Class 7 commands: Lock commands 169//*---------------------------------------- 170 171#define AT91C_LOCK_UNLOCK (42 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) // no tested 172 173//*----------------------------------------------- 174// Class 8 commands: Application specific commands 175//*----------------------------------------------- 176 177#define AT91C_APP_CMD (55 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 178#define AT91C_GEN_CMD (56 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) // no tested 179 180#define AT91C_SDCARD_SET_BUS_WIDTH_CMD (6 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 181#define AT91C_SDCARD_STATUS_CMD (13 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 182#define AT91C_SDCARD_SEND_NUM_WR_BLOCKS_CMD (22 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 183#define AT91C_SDCARD_SET_WR_BLK_ERASE_COUNT_CMD (23 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 184#define AT91C_SDCARD_APP_OP_COND_CMD (41 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO ) 185#define AT91C_SDCARD_SET_CLR_CARD_DETECT_CMD (42 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 186#define AT91C_SDCARD_SEND_SCR_CMD (51 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 187 188#define AT91C_SDCARD_APP_ALL_CMD (AT91C_SDCARD_SET_BUS_WIDTH_CMD +\ 189 AT91C_SDCARD_STATUS_CMD +\ 190 AT91C_SDCARD_SEND_NUM_WR_BLOCKS_CMD +\ 191 AT91C_SDCARD_SET_WR_BLK_ERASE_COUNT_CMD +\ 192 AT91C_SDCARD_APP_OP_COND_CMD +\ 193 AT91C_SDCARD_SET_CLR_CARD_DETECT_CMD +\ 194 AT91C_SDCARD_SEND_SCR_CMD) 195 196//*---------------------------------------- 197//* Class 9 commands: IO Mode commands 198//*---------------------------------------- 199 200#define AT91C_MMC_FAST_IO_CMD (39 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT) 201#define AT91C_MMC_GO_IRQ_STATE_CMD (40 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) 202 203///////////////////////////////////////////////////////////////////////////////////////////////////// 204// Functions returnals 205///////////////////////////////////////////////////////////////////////////////////////////////////// 206#define AT91C_CMD_SEND_OK 0 // Command ok 207#define AT91C_CMD_SEND_ERROR -1 // Command failed 208#define AT91C_INIT_OK 2 // Init Successfull 209#define AT91C_INIT_ERROR 3 // Init Failed 210#define AT91C_READ_OK 4 // Read Successfull 211#define AT91C_READ_ERROR 5 // Read Failed 212#define AT91C_WRITE_OK 6 // Write Successfull 213#define AT91C_WRITE_ERROR 7 // Write Failed 214#define AT91C_ERASE_OK 8 // Erase Successfull 215#define AT91C_ERASE_ERROR 9 // Erase Failed 216#define AT91C_CARD_SELECTED_OK 10 // Card Selection Successfull 217#define AT91C_CARD_SELECTED_ERROR 11 // Card Selection Failed 218 219///////////////////////////////////////////////////////////////////////////////////////////////////// 220// MCI_SR Errors 221///////////////////////////////////////////////////////////////////////////////////////////////////// 222#define AT91C_MCI_SR_ERROR (AT91C_MCI_UNRE |\ 223 AT91C_MCI_OVRE |\ 224 AT91C_MCI_DTOE |\ 225 AT91C_MCI_DCRCE |\ 226 AT91C_MCI_RTOE |\ 227 AT91C_MCI_RENDE |\ 228 AT91C_MCI_RCRCE |\ 229 AT91C_MCI_RDIRE |\ 230 AT91C_MCI_RINDE) 231 232//////////////////////////////////////////////////////////////////////////////////////////////////// 233// OCR Register 234//////////////////////////////////////////////////////////////////////////////////////////////////// 235#define AT91C_VDD_16_17 (1 << 4) 236#define AT91C_VDD_17_18 (1 << 5) 237#define AT91C_VDD_18_19 (1 << 6) 238#define AT91C_VDD_19_20 (1 << 7) 239#define AT91C_VDD_20_21 (1 << 8) 240#define AT91C_VDD_21_22 (1 << 9) 241#define AT91C_VDD_22_23 (1 << 10) 242#define AT91C_VDD_23_24 (1 << 11) 243#define AT91C_VDD_24_25 (1 << 12) 244#define AT91C_VDD_25_26 (1 << 13) 245#define AT91C_VDD_26_27 (1 << 14) 246#define AT91C_VDD_27_28 (1 << 15) 247#define AT91C_VDD_28_29 (1 << 16) 248#define AT91C_VDD_29_30 (1 << 17) 249#define AT91C_VDD_30_31 (1 << 18) 250#define AT91C_VDD_31_32 (1 << 19) 251#define AT91C_VDD_32_33 (1 << 20) 252#define AT91C_VDD_33_34 (1 << 21) 253#define AT91C_VDD_34_35 (1 << 22) 254#define AT91C_VDD_35_36 (1 << 23) 255#define AT91C_CARD_POWER_UP_BUSY (1 << 31) 256 257#define AT91C_MMC_HOST_VOLTAGE_RANGE (AT91C_VDD_27_28 +\ 258 AT91C_VDD_28_29 +\ 259 AT91C_VDD_29_30 +\ 260 AT91C_VDD_30_31 +\ 261 AT91C_VDD_31_32 +\ 262 AT91C_VDD_32_33) 263 264//////////////////////////////////////////////////////////////////////////////////////////////////// 265// CURRENT_STATE & READY_FOR_DATA in SDCard Status Register definition (response type R1) 266//////////////////////////////////////////////////////////////////////////////////////////////////// 267#define AT91C_SR_READY_FOR_DATA (1 << 8) // corresponds to buffer empty signalling on the bus 268#define AT91C_SR_IDLE (0 << 9) 269#define AT91C_SR_READY (1 << 9) 270#define AT91C_SR_IDENT (2 << 9) 271#define AT91C_SR_STBY (3 << 9) 272#define AT91C_SR_TRAN (4 << 9) 273#define AT91C_SR_DATA (5 << 9) 274#define AT91C_SR_RCV (6 << 9) 275#define AT91C_SR_PRG (7 << 9) 276#define AT91C_SR_DIS (8 << 9) 277 278#define AT91C_SR_CARD_SELECTED (AT91C_SR_READY_FOR_DATA + AT91C_SR_TRAN) 279 280///////////////////////////////////////////////////////////////////////////////////////////////////// 281// MMC CSD register header File 282// AT91C_CSD_xxx_S for shift value 283// AT91C_CSD_xxx_M for mask value 284///////////////////////////////////////////////////////////////////////////////////////////////////// 285 286// First Response INT <=> CSD[3] : bits 0 to 31 287#define AT91C_CSD_BIT0_S 0 // [0:0] 288#define AT91C_CSD_BIT0_M 0x01 289#define AT91C_CSD_CRC_S 1 // [7:1] 290#define AT91C_CSD_CRC_M 0x7F 291#define AT91C_CSD_MMC_ECC_S 8 // [9:8] reserved for MMC compatibility 292#define AT91C_CSD_MMC_ECC_M 0x03 293#define AT91C_CSD_FILE_FMT_S 10 // [11:10] 294#define AT91C_CSD_FILE_FMT_M 0x03 295#define AT91C_CSD_TMP_WP_S 12 // [12:12] 296#define AT91C_CSD_TMP_WP_M 0x01 297#define AT91C_CSD_PERM_WP_S 13 // [13:13] 298#define AT91C_CSD_PERM_WP_M 0x01 299#define AT91C_CSD_COPY_S 14 // [14:14] 300#define AT91C_CSD_COPY_M 0x01 301#define AT91C_CSD_FILE_FMT_GRP_S 15 // [15:15] 302#define AT91C_CSD_FILE_FMT_GRP_M 0x01 303// reserved 16 // [20:16] 304// reserved 0x1F 305#define AT91C_CSD_WBLOCK_P_S 21 // [21:21] 306#define AT91C_CSD_WBLOCK_P_M 0x01 307#define AT91C_CSD_WBLEN_S 22 // [25:22] 308#define AT91C_CSD_WBLEN_M 0x0F 309#define AT91C_CSD_R2W_F_S 26 // [28:26] 310#define AT91C_CSD_R2W_F_M 0x07 311#define AT91C_CSD_MMC_DEF_ECC_S 29 // [30:29] reserved for MMC compatibility 312#define AT91C_CSD_MMC_DEF_ECC_M 0x03 313#define AT91C_CSD_WP_GRP_EN_S 31 // [31:31] 314#define AT91C_CSD_WP_GRP_EN_M 0x01 315 316// Seconde Response INT <=> CSD[2] : bits 32 to 63 317#define AT91C_CSD_v21_WP_GRP_SIZE_S 0 // [38:32] 318#define AT91C_CSD_v21_WP_GRP_SIZE_M 0x7F 319#define AT91C_CSD_v21_SECT_SIZE_S 7 // [45:39] 320#define AT91C_CSD_v21_SECT_SIZE_M 0x7F 321#define AT91C_CSD_v21_ER_BLEN_EN_S 14 // [46:46] 322#define AT91C_CSD_v21_ER_BLEN_EN_M 0x01 323 324#define AT91C_CSD_v22_WP_GRP_SIZE_S 0 // [36:32] 325#define AT91C_CSD_v22_WP_GRP_SIZE_M 0x1F 326#define AT91C_CSD_v22_ER_GRP_SIZE_S 5 // [41:37] 327#define AT91C_CSD_v22_ER_GRP_SIZE_M 0x1F 328#define AT91C_CSD_v22_SECT_SIZE_S 10 // [46:42] 329#define AT91C_CSD_v22_SECT_SIZE_M 0x1F 330 331#define AT91C_CSD_C_SIZE_M_S 15 // [49:47] 332#define AT91C_CSD_C_SIZE_M_M 0x07 333#define AT91C_CSD_VDD_WMAX_S 18 // [52:50] 334#define AT91C_CSD_VDD_WMAX_M 0x07 335#define AT91C_CSD_VDD_WMIN_S 21 // [55:53] 336#define AT91C_CSD_VDD_WMIN_M 0x07 337#define AT91C_CSD_RCUR_MAX_S 24 // [58:56] 338#define AT91C_CSD_RCUR_MAX_M 0x07 339#define AT91C_CSD_RCUR_MIN_S 27 // [61:59] 340#define AT91C_CSD_RCUR_MIN_M 0x07 341#define AT91C_CSD_CSIZE_L_S 30 // [63:62] <=> 2 LSB of CSIZE 342#define AT91C_CSD_CSIZE_L_M 0x03 343 344// Third Response INT <=> CSD[1] : bits 64 to 95 345#define AT91C_CSD_CSIZE_H_S 0 // [73:64] <=> 10 MSB of CSIZE 346#define AT91C_CSD_CSIZE_H_M 0x03FF 347// reserved 10 // [75:74] 348// reserved 0x03 349#define AT91C_CSD_DSR_I_S 12 // [76:76] 350#define AT91C_CSD_DSR_I_M 0x01 351#define AT91C_CSD_RD_B_MIS_S 13 // [77:77] 352#define AT91C_CSD_RD_B_MIS_M 0x01 353#define AT91C_CSD_WR_B_MIS_S 14 // [78:78] 354#define AT91C_CSD_WR_B_MIS_M 0x01 355#define AT91C_CSD_RD_B_PAR_S 15 // [79:79] 356#define AT91C_CSD_RD_B_PAR_M 0x01 357#define AT91C_CSD_RD_B_LEN_S 16 // [83:80] 358#define AT91C_CSD_RD_B_LEN_M 0x0F 359#define AT91C_CSD_CCC_S 20 // [95:84] 360#define AT91C_CSD_CCC_M 0x0FFF 361 362// Fourth Response INT <=> CSD[0] : bits 96 to 127 363#define AT91C_CSD_TRANS_SPEED_S 0 // [103:96] 364#define AT91C_CSD_TRANS_SPEED_M 0xFF 365#define AT91C_CSD_NSAC_S 8 // [111:104] 366#define AT91C_CSD_NSAC_M 0xFF 367#define AT91C_CSD_TAAC_S 16 // [119:112] 368#define AT91C_CSD_TAAC_M 0xFF 369// reserved 24 // [121:120] 370// reserved 0x03 371#define AT91C_CSD_MMC_SPEC_VERS_S 26 // [125:122] reserved for MMC compatibility 372#define AT91C_CSD_MMC_SPEC_VERS_M 0x0F 373#define AT91C_CSD_STRUCT_S 30 // [127:126] 374#define AT91C_CSD_STRUCT_M 0x03 375 376///////////////////////////////////////////////////////////////////////////////////////////////////// 377 378#endif 379 380