[U-Boot] [PATCH 1/8] dm: mmc: Don't re-init when accessing environment
Simon Glass
sjg at chromium.org
Wed May 3 02:35:25 UTC 2017
Hi,
On 28 April 2017 at 18:27, Simon Glass <sjg at chromium.org> wrote:
> 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.
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
More information about the U-Boot
mailing list