
Hi,
On 28 April 2017 at 18:27, Simon Glass sjg@chromium.org wrote:
Hi Jean-Jacques,
On 24 April 2017 at 02:55, Jean-Jacques Hiblot jjhiblot@ti.com wrote:
Hi Simon,
On 24/04/2017 04:02, Simon Glass wrote:
With driver model MMC is probed automatically when needed. We should not re-init MMC each time.
Signed-off-by: Simon Glass sjg@chromium.org
common/env_mmc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/common/env_mmc.c b/common/env_mmc.c index a5d14d448c..1611886e22 100644 --- a/common/env_mmc.c +++ b/common/env_mmc.c @@ -98,9 +98,10 @@ static const char *init_mmc_for_env(struct mmc *mmc) if (!mmc) return "!No MMC card found"; +#ifndef CONFIG_BLK if (mmc_init(mmc)) return "!MMC init failed";
+#endif
I'm not convinced by this. mmc_init() is the starting point of the MMC device initialization process and it must be called somehow before accessing the device and most probe() functions do not call mmc_init(). The sandbox driver does it, but I'm not sure it's the right way because the MMC device initialization process takes a long time. I'd rather have the device initialized only when it's accessed for the first time not when it's probed (especially in the SPL)
Yes I would like that too.
One option is to add an init() method to mmc and call that when the block device is probed.
Do you think that would work? I can try it out in the next version perhaps.
Then we have:
mmc device probe - very fast, just sets up clocks, etc. blk device probe - slow, tries to read card, partition table, etc.
Jean-Jacques
if (mmc_set_env_part(mmc)) return "!MMC partition switch failed";
Regards, Simon