Skip to content
Snippets Groups Projects
Commit 6dc93e70 authored by Peter Bigot's avatar Peter Bigot Committed by Pantelis Antoniou
Browse files

mmc: restore capacity when switching to partition 0


The capacity and lba for an MMC device with part_num 0 reflects the
whole device.  When mmc_switch_part() successfully switches to a
partition, the capacity is changed to that partition.  As partition 0
does not physically exist, attempts to switch back to the whole device
will indicate an error, but the capacity setting for the whole device
must still be restored to match the partition.

Signed-off-by: default avatarPeter A. Bigot <pab@pabigot.com>
Tested-by: default avatarTom Rini <trini@ti.com>
Acked-by: default avatarPantelis Antoniou <panto@antoniou-consulting.com>
parent 021a8055
No related branches found
No related tags found
No related merge requests found
......@@ -594,10 +594,15 @@ int mmc_switch_part(int dev_num, unsigned int part_num)
ret = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
(mmc->part_config & ~PART_ACCESS_MASK)
| (part_num & PART_ACCESS_MASK));
if (ret)
return ret;
return mmc_set_capacity(mmc, part_num);
/*
* Set the capacity if the switch succeeded or was intended
* to return to representing the raw device.
*/
if ((ret == 0) || ((ret == -ENODEV) && (part_num == 0)))
ret = mmc_set_capacity(mmc, part_num);
return ret;
}
int mmc_getcd(struct mmc *mmc)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment