[U-Boot] [BUG] snow: mmc: SD card access broken: unable to select a mode

Guillaume Gardet guillaume.gardet at free.fr
Mon Apr 9 16:02:42 UTC 2018



Le 09/04/2018 à 17:18, Jean-Jacques Hiblot a écrit :
>
>
> 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 ?

Yes, it fails too.

Guillaume

>
>> 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