[U-Boot] [BUG] snow: mmc: SD card access broken: unable to select a mode
Jean-Jacques Hiblot
jjhiblot at ti.com
Mon Apr 9 15:18:31 UTC 2018
On 09/04/2018 16:46, Guillaume Gardet wrote:
>
>
> Le 09/04/2018 à 16:21, Jean-Jacques Hiblot a écrit :
>>
>>
>> On 09/04/2018 16:03, Guillaume Gardet wrote:
>>>
>>>
>>> Le 09/04/2018 à 15:58, Jean-Jacques Hiblot a écrit :
>>>>
>>>>
>>>> On 09/04/2018 14:02, Guillaume Gardet wrote:
>>>>> Hi Jaehoon,
>>>>>
>>>>> There are problems with SD card access on Samsung Chromebook
>>>>> (snow) with latest master (and also 2018.05-rc1 and 2018.03).
>>>>>
>>>>> eMMC is ok, but SD card access leads to 'unable to select a mode'
>>>>> problem. If I disable HS mode, I can access the SD card without
>>>>> problem:
>>>>> ********************************************************************************
>>>>>
>>>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>>>>> index 23f642980bf..28f4fa0f213 100644
>>>>> --- a/drivers/mmc/dw_mmc.c
>>>>> +++ b/drivers/mmc/dw_mmc.c
>>>>> @@ -508,7 +508,8 @@ void dwmci_setup_cfg(struct mmc_config *cfg,
>>>>> struct dwmci_host *host,
>>>>> cfg->host_caps |= MMC_MODE_4BIT;
>>>>> cfg->host_caps &= ~MMC_MODE_8BIT;
>>>>> }
>>>>> - cfg->host_caps |= MMC_MODE_HS | MMC_MODE_HS_52MHz;
>>>>> + /* Temp workaround for Chromebook snow to avoid the 'unable
>>>>> to select a mode' error */
>>>>> +// cfg->host_caps |= MMC_MODE_HS | MMC_MODE_HS_52MHz;
>>>>>
>>>>> cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
>>>>> }
>>>>> ********************************************************************************
>>>>>
>>>>>
>>>>> Once we try to select HS mode, all access to SD card result in
>>>>> failure, even when trying to setup a lower frequency mode,
>>>>> including SD legacy at 25 MHz.
>>>>>
>>>>> Any idea what is going? Maybe you have fixes pending?
>>>>
>>>> Can try with MMC_MODE_HS | MMC_MODE_HS_52MHz but with a lower
>>>> max-frequency (<25MHz) ? It would be interesting to know if it
>>>> could come from a frequency limitation.
>>>
>>> I already tried to change SD_HS freq (in mmc_mode2freq) from
>>> 50000000 to 25000000 with no difference.
>>>
>>>> Is there some pad configuration to do when using higher frequency?
>>>
>>> I do not think so.
>> Can you enable the debug output and post a log ?
>
> Here is the log from u-boot built from u-boot-mmc (latest commit:
> 21c2ac32b845)
> Yes, I have no serial, so I retyped the messages, so I hope there is
> no typo:
> **********************************************************************
> selecting mode MMC legacy (freq : 0 MHz)
> selecting mode MMC legacy (freq : 25 MHz)
> sd card: widths [4, 1] modes [SD Legacy, SD High SPeed (50MHz)]
> host: widths [4, 1] modes [MMC legacy, SD Legacy, MMC High Speed
> (26MHz), SD High Speed (50MHz), MMC High Speed (52MHz), MMC DDR52
> (52MHz)]
> trying mode SD High Speed (50MHz) width 4 (at 50 MHz)
> selecting mode SD High Speed (50 MHz) (freq : 50 MHz)
> unable to read ssr
> selecting mode SD Legacy (25 MHz) (freq : 25 MHz)
> trying mode SD High Speed (50MHz) width 1 (at 50 MHz)
So it fails either in sd_select_bus_width() or sd_set_card_speed()
Can you try to limit the bus width to 1 ? Does it fail also at 50 MHz ?
> selecting mode SD Legacy (25 MHz) (freq : 25 MHz)
> trying mode SD Legacy (25MHz) width 4 (at 25 MHz)
> selecting mode SD Legacy (25 MHz) (freq : 25 MHz)
> trying mode SD Legacy (25MHz) width 1 (at 25 MHz)
> selecting mode SD Legacy (25 MHz) (freq : 25 MHz)
> unable to select a mode
> mmc_init: -524, time 127
> ** Bad device mmc 1 **
> **********************************************************************
>
> Note that eMMC (on mmc 0) is working fine with MMC DDR52 (52MHz).
>
> Guillaume
>
More information about the U-Boot
mailing list