From 116cffeca6fe4de701d4cd5e2b5bfe5e0f1597a9 Mon Sep 17 00:00:00 2001 From: Sam Protsenko Date: Wed, 14 Aug 2019 22:52:50 +0300 Subject: [PATCH] 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 Reviewed-by: Eugeniu Rosca Tested-by: Eugeniu Rosca Reviewed-by: Peng Fan Tested-by: Igor Opaniuk Reviewed-by: Igor Opaniuk --- drivers/mmc/mmc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index eecc7d687e..e247730ff2 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; -- 2.25.1