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>
This commit is contained in:
parent
127a6011ee
commit
a0276f3eee
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user