diff options
author | andrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-04-30 19:43:11 +0000 |
---|---|---|
committer | andrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-04-30 19:43:11 +0000 |
commit | 8c6151f2badb91eb735943474e47cf0db221acb6 (patch) | |
tree | c09dbf788b171d1a034f490c8233112f74e11b4f /Omap35xxPkg/MMCHSDxe/MMCHS.h | |
parent | 0a0951ea841a10c5c328b5525827a1490f575cb8 (diff) | |
download | edk2-platforms-8c6151f2badb91eb735943474e47cf0db221acb6.tar.xz |
Updated MMC/SD Card driver to support hot add and remove of the media (SD Cards) and enable write protect of SD Cards. Had to update pads for WP bit as it was not being programmed as a GPIO. I also changed some of the PAD #defins as there were only really 3 states, so OR things in the table in the .c file did not make a lot of sense.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10450 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Omap35xxPkg/MMCHSDxe/MMCHS.h')
-rw-r--r-- | Omap35xxPkg/MMCHSDxe/MMCHS.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/Omap35xxPkg/MMCHSDxe/MMCHS.h b/Omap35xxPkg/MMCHSDxe/MMCHS.h index d5964a97c3..8fa1ba1b67 100644 --- a/Omap35xxPkg/MMCHSDxe/MMCHS.h +++ b/Omap35xxPkg/MMCHSDxe/MMCHS.h @@ -21,16 +21,16 @@ #include <Library/IoLib.h> #include <Library/PcdLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/BaseMemoryLib.h> #include <Protocol/EmbeddedExternalDevice.h>
#include <Protocol/BlockIo.h> -#include <Protocol/Cpu.h> #include <Protocol/DevicePath.h> #include <Omap3530/Omap3530.h>
#include <TPS65950.h>
-#define MAX_RETRY_COUNT 100 +#define MAX_RETRY_COUNT (100*5) #define HCS BIT30 //Host capacity support/1 = Supporting high capacity
#define CCS BIT30 //Card capacity status/1 = High capacity card
@@ -59,18 +59,21 @@ typedef struct { typedef struct {
UINT8 NOT_USED: 1; // Not used, always 1 [0:0]
UINT8 CRC: 7; // CRC [7:1]
+
UINT8 RESERVED_1: 2; // Reserved [9:8]
UINT8 FILE_FORMAT: 2; // File format [11:10]
UINT8 TMP_WRITE_PROTECT: 1; // Temporary write protection [12:12]
UINT8 PERM_WRITE_PROTECT: 1; // Permanent write protection [13:13]
UINT8 COPY: 1; // Copy flag (OTP) [14:14]
UINT8 FILE_FORMAT_GRP: 1; // File format group [15:15]
+
UINT16 RESERVED_2: 5; // Reserved [20:16]
UINT16 WRITE_BL_PARTIAL: 1; // Partial blocks for write allowed [21:21]
UINT16 WRITE_BL_LEN: 4; // Max. write data block length [25:22]
UINT16 R2W_FACTOR: 3; // Write speed factor [28:26]
UINT16 RESERVED_3: 2; // Reserved [30:29]
UINT16 WP_GRP_ENABLE: 1; // Write protect group enable [31:31]
+
UINT32 WP_GRP_SIZE: 7; // Write protect group size [38:32]
UINT32 SECTOR_SIZE: 7; // Erase sector size [45:39]
UINT32 ERASE_BLK_EN: 1; // Erase single block enable [46:46]
@@ -79,8 +82,9 @@ typedef struct { UINT32 VDD_W_CURR_MIN: 3; // Max. write current @ VDD min [55:53]
UINT32 VDD_R_CURR_MAX: 3; // Max. read current @ VDD max [58:56]
UINT32 VDD_R_CURR_MIN: 3; // Max. read current @ VDD min [61:59]
- UINT32 C_SIZELow2: 2; // Device size [73:62]
- UINT32 C_SIZEHigh10: 10;// Device size [73:62]
+ UINT32 C_SIZELow2: 2; // Device size [63:62]
+
+ UINT32 C_SIZEHigh10: 10;// Device size [73:64]
UINT32 RESERVED_4: 2; // Reserved [75:74]
UINT32 DSR_IMP: 1; // DSR implemented [76:76]
UINT32 READ_BLK_MISALIGN: 1; // Read block misalignment [77:77]
@@ -88,9 +92,11 @@ typedef struct { UINT32 READ_BL_PARTIAL: 1; // Partial blocks for read allowed [79:79]
UINT32 READ_BL_LEN: 4; // Max. read data block length [83:80]
UINT32 CCC: 12;// Card command classes [95:84]
+
UINT8 TRAN_SPEED ; // Max. bus clock frequency [103:96]
UINT8 NSAC ; // Data read access-time 2 in CLK cycles (NSAC*100) [111:104]
UINT8 TAAC ; // Data read access-time 1 [119:112]
+
UINT8 RESERVED_5: 6; // Reserved [125:120]
UINT8 CSD_STRUCTURE: 2; // CSD structure [127:126]
}CSD;
@@ -143,8 +149,7 @@ typedef enum { WRITE
} OPERATION_TYPE;
-typedef struct
-{
+typedef struct {
UINT16 RCA;
UINTN BlockSize;
UINTN NumBlocks;
@@ -155,4 +160,11 @@ typedef struct CSD CSDData;
} CARD_INFO;
+EFI_STATUS +DetectCard ( + VOID + );
+
+extern EFI_BLOCK_IO_PROTOCOL gBlockIo;
+
#endif
|