spl: dm_mmc: Initialize only the required mmc device
authorLokesh Vutla <lokeshvutla@ti.com>
Mon, 9 Sep 2019 09:10:36 +0000 (14:40 +0530)
committerPeng Fan <peng.fan@nxp.com>
Thu, 10 Oct 2019 02:59:48 +0000 (10:59 +0800)
commit80f02019ee6901a7fb0979677030f33fb9b1fa69
tree41d71e2e3ef6f3faaa9e3c746852944898c585ad
parent548aefa5b9e5c31681e0a8bd78e96b66eedd1137
spl: dm_mmc: Initialize only the required mmc device

In SPL, all the available mmc devices gets initialized during boot.
This might not work in cases where clocks are not available for
certain mmc devices(other than boot device) and the support for
enabling device might not be ready.

Texas Instruments' K3 J721E device having a central system controller
(dmsc) is one such example falling in this category. Below is the
sequence for the failing scenario:
- ROM comes up in SD mode and loads SPL by just initialing SD card.
- SPL loads dmsc firmware from SD Card.
Since ROM has enabled SD, SPL need not enable the SD, just need
to re initialize the card. But SPL is trying to initialize other MMC
instances which are in disabled state. Since dmsc firmware is not yet
available, devices cannot be enabled. So in SPL, initialize only the
mmc device that is needed.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
common/spl/spl_mmc.c
drivers/mmc/mmc.c
include/mmc.h