summaryrefslogtreecommitdiff
path: root/drivers/mmc/mmc.c
diff options
context:
space:
mode:
authorJean-Jacques Hiblot <jjhiblot@ti.com>2018-02-09 12:09:27 +0100
committerJaehoon Chung <jh80.chung@samsung.com>2018-02-19 16:59:21 +0900
commita0276f3eeed539cbc5ecba694030519dcd1fe308 (patch)
tree7e111a98370c6852c70608440836b38f9939e710 /drivers/mmc/mmc.c
parent127a6011eead5fb7fbb9c62826034892591bc712 (diff)
mmc: Fix bug in sd_set_card_speed()
After settings the speed of the sd with the switch command, a check is done to make sure that the new speed has been set. The current check has a masking error: speed are encoded on 4 bits only. Fix it by masking the upper bits. This fixes a problem seen with QEmu emulating a vexpress-a15. Reported-by: Jonathan Gray <jsg@jsg.id.au> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> Tested-by: Jonathan Gray <jsg@jsg.id.au>
Diffstat (limited to 'drivers/mmc/mmc.c')
-rw-r--r--drivers/mmc/mmc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 3a2e3b353f..b46e3f6024 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1333,7 +1333,7 @@ static int sd_set_card_speed(struct mmc *mmc, enum bus_mode mode)
if (err)
return err;
- if ((__be32_to_cpu(switch_status[4]) >> 24) != speed)
+ if (((__be32_to_cpu(switch_status[4]) >> 24) & 0xF) != speed)
return -ENOTSUPP;
return 0;