mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
mmc: mmc_spi: Read R2 response for send status command - CMD13
Send status command (CMD13) will send R1 response under SD mode but R2 response under SPI mode. R2 response is 2 bytes long, so read 2 bytes for mmc SPI mode Signed-off-by: Pragnesh Patel <pragnesh.patel@sifive.com> Reviewed-by: Bin Meng <bin.meng@windriver.com> Tested-by: Bin Meng <bin.meng@windriver.com>
This commit is contained in:
parent
810bc13803
commit
70f176ae82
1 changed files with 8 additions and 3 deletions
|
@ -266,7 +266,7 @@ static int dm_mmc_spi_request(struct udevice *dev, struct mmc_cmd *cmd,
|
|||
u8 *resp = NULL;
|
||||
u32 resp_size = 0;
|
||||
bool resp_match = false;
|
||||
u8 resp8 = 0, resp40[5] = { 0 }, resp_match_value = 0;
|
||||
u8 resp8 = 0, resp16[2] = { 0 }, resp40[5] = { 0 }, resp_match_value = 0;
|
||||
|
||||
dm_spi_claim_bus(dev);
|
||||
|
||||
|
@ -291,6 +291,9 @@ static int dm_mmc_spi_request(struct udevice *dev, struct mmc_cmd *cmd,
|
|||
resp_size = sizeof(resp40);
|
||||
break;
|
||||
case MMC_CMD_SEND_STATUS:
|
||||
resp = (u8 *)&resp16[0];
|
||||
resp_size = sizeof(resp16);
|
||||
break;
|
||||
case MMC_CMD_SET_BLOCKLEN:
|
||||
case MMC_CMD_SPI_CRC_ON_OFF:
|
||||
case MMC_CMD_STOP_TRANSMISSION:
|
||||
|
@ -335,8 +338,10 @@ static int dm_mmc_spi_request(struct udevice *dev, struct mmc_cmd *cmd,
|
|||
cmd->response[0] |= (uint)resp40[1] << 24;
|
||||
break;
|
||||
case MMC_CMD_SEND_STATUS:
|
||||
cmd->response[0] = (resp8 & 0xff) ?
|
||||
MMC_STATUS_ERROR : MMC_STATUS_RDY_FOR_DATA;
|
||||
if (resp16[0] || resp16[1])
|
||||
cmd->response[0] = MMC_STATUS_ERROR;
|
||||
else
|
||||
cmd->response[0] = MMC_STATUS_RDY_FOR_DATA;
|
||||
break;
|
||||
case MMC_CMD_SEND_CID:
|
||||
case MMC_CMD_SEND_CSD:
|
||||
|
|
Loading…
Reference in a new issue