MmcHostInstance = MMC_HOST_INSTANCE_FROM_BLOCK_IO_THIS (This);\r
MmcHost = MmcHostInstance->MmcHost;\r
\r
- //Set command argument based on the card access mode (Byte mode or Block mode)\r
- if ((MmcHostInstance->CardInfo.OCRData.AccessMode & MMC_OCR_ACCESS_MASK) ==\r
- MMC_OCR_ACCESS_SECTOR) {\r
- CmdArg = Lba;\r
+ if (MmcHostInstance->CardInfo.CardType != EMMC_CARD) {\r
+ //Set command argument based on the card capacity\r
+ //if 0 : SDSC card\r
+ //if 1 : SDXC/SDHC\r
+ if (MmcHostInstance->CardInfo.OCRData.AccessMode & SD_CARD_CAPACITY) {\r
+ CmdArg = Lba;\r
+ } else {\r
+ CmdArg = Lba * This->Media->BlockSize;\r
+ }\r
} else {\r
- CmdArg = Lba * This->Media->BlockSize;\r
+ //Set command argument based on the card access mode (Byte mode or Block mode)\r
+ if ((MmcHostInstance->CardInfo.OCRData.AccessMode & MMC_OCR_ACCESS_MASK) ==\r
+ MMC_OCR_ACCESS_SECTOR) {\r
+ CmdArg = Lba;\r
+ } else {\r
+ CmdArg = Lba * This->Media->BlockSize;\r
+ }\r
}\r
\r
Status = MmcHost->SendCommand (MmcHost, Cmd, CmdArg);\r