mmc: retry a few times if a partition switch failed

This operation may fail. Retry it a few times before giving up and report
a failure.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
Jean-Jacques Hiblot 2019-07-02 10:53:58 +02:00 committed by Peng Fan
parent 9bc5666c8a
commit 0538477c53

View file

@ -958,10 +958,14 @@ static int mmc_set_capacity(struct mmc *mmc, int part_num)
int mmc_switch_part(struct mmc *mmc, unsigned int part_num)
{
int ret;
int retry = 3;
ret = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
(mmc->part_config & ~PART_ACCESS_MASK)
| (part_num & PART_ACCESS_MASK));
do {
ret = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL,
EXT_CSD_PART_CONF,
(mmc->part_config & ~PART_ACCESS_MASK)
| (part_num & PART_ACCESS_MASK));
} while (ret && retry--);
/*
* Set the capacity if the switch succeeded or was intended