diff options
Diffstat (limited to 'EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c')
-rw-r--r-- | EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c b/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c index a2b923270c..1dea7d35fe 100644 --- a/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c +++ b/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c @@ -148,12 +148,23 @@ MmcTransferBlock ( MmcHostInstance = MMC_HOST_INSTANCE_FROM_BLOCK_IO_THIS (This);
MmcHost = MmcHostInstance->MmcHost;
- //Set command argument based on the card access mode (Byte mode or Block mode)
- if ((MmcHostInstance->CardInfo.OCRData.AccessMode & MMC_OCR_ACCESS_MASK) ==
- MMC_OCR_ACCESS_SECTOR) {
- CmdArg = Lba;
+ if (MmcHostInstance->CardInfo.CardType != EMMC_CARD) {
+ //Set command argument based on the card capacity
+ //if 0 : SDSC card
+ //if 1 : SDXC/SDHC
+ if (MmcHostInstance->CardInfo.OCRData.AccessMode & SD_CARD_CAPACITY) {
+ CmdArg = Lba;
+ } else {
+ CmdArg = Lba * This->Media->BlockSize;
+ }
} else {
- CmdArg = Lba * This->Media->BlockSize;
+ //Set command argument based on the card access mode (Byte mode or Block mode)
+ if ((MmcHostInstance->CardInfo.OCRData.AccessMode & MMC_OCR_ACCESS_MASK) ==
+ MMC_OCR_ACCESS_SECTOR) {
+ CmdArg = Lba;
+ } else {
+ CmdArg = Lba * This->Media->BlockSize;
+ }
}
Status = MmcHost->SendCommand (MmcHost, Cmd, CmdArg);
|