[U-Boot] [PATCH] mmc: Set the initial clock speed to 400KHz

Jaehoon Chung jh80.chung at samsung.com
Fri May 26 03:37:31 UTC 2017


On 05/25/2017 11:14 PM, Phil Edworthy wrote:
> Hi Jaehoon Chung,
> 
> On 25 May 2017 15:10 Jaehoon Chung wrote:
>> On 05/25/2017 11:02 PM, Phil Edworthy wrote:
>>> On 25 May 2017 14:50 Jaehoon Chung wrote:
>>>> On 05/24/2017 10:54 PM, Phil Edworthy wrote:
>>>>> The code currently defaults to the slowest clock speed that can be
>>>>> achieved, which can be significantly lower than the SD spec.
>>>>
>>>> Is there any problem..As i know, it should be changed from 1 to min_clk.
>>> The only problem is that the initial SD clock can be very slow so it
>>> increases the time to start SD. Admittedly, it's a very small increase
>>> in time, but we should use the correct initial clock speed.
>>
>> Well..i didn't agree yet...
>>
>> If mmc_set_clock(mmc, 400K) and mmc->cfg->f_min is 300K?
>> Initial clock should be always 400K..but spec is mentioned "initial clock is
>> maximum 400K.."
>> It means the clock can be the value under 400K.
> I'm not sure I follow you.
> The spec means that all SD cards must support an initial clock speed of 400KHz, right?

No..clock frequency range shall be 100KHz - 400KHz during initialization sequence.
Some targets should not work fine with 400KHz..So it needs to check f_min value.
otherwise, it needs to find the initial clock value like Linux kernel scheme.

> If so, then there is no harm in setting it to 400KHz.
> 
> Thanks
> Phil
> 
>>>>> Signed-off-by: Phil Edworthy <phil.edworthy at renesas.com>
>>>>> ---
>>>>>  drivers/mmc/mmc.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index
>>>>> 72fc177..dff1be3 100644
>>>>> --- a/drivers/mmc/mmc.c
>>>>> +++ b/drivers/mmc/mmc.c
>>>>> @@ -1676,7 +1676,7 @@ int mmc_start_init(struct mmc *mmc)  #endif
>>>>>  	mmc->ddr_mode = 0;
>>>>>  	mmc_set_bus_width(mmc, 1);
>>>>> -	mmc_set_clock(mmc, 1);
>>>>> +	mmc_set_clock(mmc, 400000);
>>>>>
>>>>>  	/* Reset the Card */
>>>>>  	err = mmc_go_idle(mmc);
>>>>>
>>>
>>>
>>>
>>>
> 
> 
> 
> 



More information about the U-Boot mailing list