mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-18 02:24:18 +00:00
mmc: st: correct retries management
The retries number should be 3. A warning message is added in mmc_block_read(), and the code is refactored. Change-Id: I577c7dd91c451c7580b1660042cb5fe26ee3fa12 Signed-off-by: Yann Gautier <yann.gautier@st.com>
This commit is contained in:
parent
ea30694561
commit
7d8e1218c2
2 changed files with 22 additions and 15 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -97,14 +97,21 @@ static int mmc_block_seek(io_entity_t *entity, int mode,
|
|||
static int mmc_block_read(io_entity_t *entity, uintptr_t buffer,
|
||||
size_t length, size_t *length_read)
|
||||
{
|
||||
*length_read = mmc_read_blocks(seek_offset / MMC_BLOCK_SIZE,
|
||||
buffer, length);
|
||||
uint8_t retries;
|
||||
|
||||
if (*length_read != length) {
|
||||
return -EIO;
|
||||
for (retries = 0U; retries < 3U; retries++) {
|
||||
*length_read = mmc_read_blocks(seek_offset / MMC_BLOCK_SIZE,
|
||||
buffer, length);
|
||||
|
||||
if (*length_read == length) {
|
||||
return 0;
|
||||
}
|
||||
WARN("%s: length_read = %lu (!= %lu), retry %u\n", __func__,
|
||||
(unsigned long)*length_read, (unsigned long)length,
|
||||
retries + 1U);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
/* Close a file on the mmc device */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2019, STMicroelectronics - All Rights Reserved
|
||||
* Copyright (c) 2018-2020, STMicroelectronics - All Rights Reserved
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -373,15 +373,15 @@ err_exit:
|
|||
|
||||
static int stm32_sdmmc2_send_cmd(struct mmc_cmd *cmd)
|
||||
{
|
||||
int8_t retry;
|
||||
int err = 0;
|
||||
uint8_t retry;
|
||||
int err;
|
||||
|
||||
assert(cmd != NULL);
|
||||
|
||||
for (retry = 0; retry <= 3; retry++) {
|
||||
for (retry = 0U; retry < 3U; retry++) {
|
||||
err = stm32_sdmmc2_send_cmd_req(cmd);
|
||||
if (err == 0) {
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((cmd->cmd_idx == MMC_CMD(1)) ||
|
||||
|
@ -390,12 +390,12 @@ static int stm32_sdmmc2_send_cmd(struct mmc_cmd *cmd)
|
|||
}
|
||||
|
||||
/* Command 8 is expected to fail for eMMC */
|
||||
if (!(cmd->cmd_idx == MMC_CMD(8))) {
|
||||
WARN(" CMD%d, Retry: %d, Error: %d\n",
|
||||
cmd->cmd_idx, retry, err);
|
||||
if (cmd->cmd_idx != MMC_CMD(8)) {
|
||||
WARN(" CMD%u, Retry: %u, Error: %d\n",
|
||||
cmd->cmd_idx, retry + 1U, err);
|
||||
}
|
||||
|
||||
udelay(10);
|
||||
udelay(10U);
|
||||
}
|
||||
|
||||
return err;
|
||||
|
|
Loading…
Add table
Reference in a new issue