[U-Boot] [PATCH 1/8] dm: mmc: Don't re-init when accessing environment

Simon Glass sjg at chromium.org
Sat Apr 29 00:27:02 UTC 2017


Hi Jean-Jacques,

On 24 April 2017 at 02:55, Jean-Jacques Hiblot <jjhiblot at 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 at 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.

>
> Jean-Jacques
>
>
>>         if (mmc_set_env_part(mmc))
>>                 return "!MMC partition switch failed";
>>
>
>

Regards,
Simon


More information about the U-Boot mailing list