aboutsummaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorSam Protsenko <semen.protsenko@linaro.org>2019-08-14 22:52:50 +0300
committerPeng Fan <peng.fan@nxp.com>2019-09-05 15:27:31 +0800
commit116cffeca6fe4de701d4cd5e2b5bfe5e0f1597a9 (patch)
tree25548062290d9694a8f769a7076425a6199a776b /drivers/mmc
parent701a51e1ef6c727e7a4b5a48b8681f42a447072b (diff)
downloadu-boot-116cffeca6fe4de701d4cd5e2b5bfe5e0f1597a9.zip
u-boot-116cffeca6fe4de701d4cd5e2b5bfe5e0f1597a9.tar.gz
u-boot-116cffeca6fe4de701d4cd5e2b5bfe5e0f1597a9.tar.bz2
mmc: Fix timeout values passed to mmc_wait_dat0()
mmc_wait_dat0() expects timeout argument to be in usec units. But some overlying functions operate on timeout in msec units. Convert timeout from msec to usec when passing it to mmc_wait_dat0(). This fixes 'avb' commands on BeagleBoard X15, because next chain was failing: get_partition() -> mmc_switch_part() -> __mmc_switch() -> mmc_wait_dat0() when passing incorrect timeout from __mmc_switch() to mmc_wait_dat0(). Fixes: bb98b8c5c06a ("mmc: During a switch, poll on dat0 if available and check the final status") Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Eugeniu Rosca <rosca.eugeniu@gmail.com> Tested-by: Eugeniu Rosca <rosca.eugeniu@gmail.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> Tested-by: Igor Opaniuk <igor.opaniuk@gmail.com> Reviewed-by: Igor Opaniuk <igor.opaniuk@gmail.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/mmc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index eecc7d6..e247730 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -235,7 +235,7 @@ int mmc_poll_for_busy(struct mmc *mmc, int timeout)
unsigned int status;
int err;
- err = mmc_wait_dat0(mmc, 1, timeout);
+ err = mmc_wait_dat0(mmc, 1, timeout * 1000);
if (err != -ENOSYS)
return err;
@@ -778,7 +778,7 @@ static int __mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value,
start = get_timer(0);
/* poll dat0 for rdy/buys status */
- ret = mmc_wait_dat0(mmc, 1, timeout);
+ ret = mmc_wait_dat0(mmc, 1, timeout * 1000);
if (ret && ret != -ENOSYS)
return ret;