[U-Boot] [PATCH v2 00/26] mmc: Add support for HS200 and UHS modes

Jaehoon Chung jh80.chung at samsung.com
Mon Nov 27 10:13:03 UTC 2017


On 11/23/2017 06:46 PM, Siva Durga Prasad Paladugu wrote:
> Hi Jaehoon,
> 
>> -----Original Message-----
>> From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Jaehoon
>> Chung
>> Sent: Friday, October 20, 2017 5:02 PM
>> To: Jean-Jacques Hiblot <jjhiblot at ti.com>; trini at konsulko.com;
>> kishon at ti.com; sjg at chromium.org
>> Cc: u-boot at lists.denx.de
>> Subject: Re: [U-Boot] [PATCH v2 00/26] mmc: Add support for HS200 and
>> UHS modes
>>
>> Dear JJ
>>
>> On 09/21/2017 11:29 PM, Jean-Jacques Hiblot wrote:
>>> This series brings support for HS200 and UHS modes to the mmc core.
>>> It has been tested with the hsmmc driver on several platforms (DRA7,
>>> AM57x, AM437x, beaglebone black, Atmel SAMA5D3 xplained). Some
>>> modifications are required in the host driver to take advantage of
>>> this (voltage switching, tuning). The changes to the host driver will
>>> be posted a another series as this one is already long enough.
>>>
>>> The series starts with a small refactoring of th sd/mmc startup. The
>>> first 5 commits are mostly moving code around with little or no
>> functionnal change.
>>>
>>> Then the notion of "mode" is introduced. Until now, this information
>>> wasn't kept in struct mmc. Only the clock and a flag for ddr was kept.
>>> Later the mode information will be used to select the clock frequency,
>>> the ddr flag and the tuning procedure. It will be also be check against the
>> host capabilities.
>>>
>>> Then comes the big refactoring job in:
>>> "mmc: refactor MMC startup to make it easier to support new modes"
>> and
>>> "mmc: refactor SD startup to make it easier to support new modes"
>>> Since the number of modes is increasing, it makes sense to try them in
>>> a more organized way. those commits use a list of supported modes and
>>> iterate through them to find the best working one. It also allows to
>>> switch more easilly from one mode to another (switching from HS200 to
>>> DDR52 to access boot partitions for example)
>>>
>>> Then there are a couple of new callback added to:
>>> - send the initialization stream (74 clock cycles)
>>> - wait while the card is busy (used during UHS voltage switching). checking
>> is
>>>   done on dat0.
>>> - select the IO voltage
>>>
>>> Then Power cycle is added. Without power cycle, if a UHS card fails to
>>> enumerate in UHS mode, it can't fall back to high speed mode and card
>> enumeration will fail.
>>> Also in case of a reset (as opposed to a power on), it ensures that
>>> the SDCard is in clean state before re-doing the initialization.
>>>
>>> And finally the last commits add the support for HS200 and UHS.
>>>
>>> With this in place and the required changes in the HSMMC host driver
>>> (including DMA), we observe significant improvements in the
>> performances on a DRA72 evm:
>>> eMMC HS200: 124 MB/s
>>> eMMC DDR52: 78 MB/s
>>> sd   SDR104: 71 MB/s
>>> sd   SDR50: 44 MB/s
>>
>> Applied to u-boot-mmc! Thanks!
>> I will apply the patches relevant to this patchset. Sorry for late applying this.
> 
> I would like to test UHS and HS200 series on ZynqMP platform. 
> Is it the branch " testing-uhs-supporting" that I should be using for testing it?
> Please confirm.

Hi, i applied these patch into u-boot-mmc/master. So if you want to check, just use master branch.
If there are problem, let me know, plz. and send patches, plz.
Then it's useful to me. 

(I will remove the testing-uhs-supporting" branch, because it's already merged into master branch.)

Best Regards,
Jaehoon Chung

> 
> Thanks,
> Siva
> 
>>
>> Best Regards,
>> Jaehoon Chung
>>
>>>
>>> cheers,
>>>
>>> Jean-Jacques
>>>
>>> changes since v1:
>>> Changes take in account all the comment made during the first round of
>> review.
>>> But it also include a rework of the handling of the voltage supplies
>>> and 2 new helper functions that can be used by the host driver during
>>> tuning and dts parsing.
>>>
>>> Here is a detailed list:
>>>  * rebase on u-boot/master.
>>>  * add the description for the new functions/members
>>>  * fix the typos found in the reviews
>>>  * limit the new features to DM_MMC only
>>>  * fix the new checkpatch warnings/errors (is it now more strict ?)
>>>  * get the voltage regulators from dts (main and IO-lines)
>>>  * remove the set_vdd callback and do the job in the mmc core
>>>  * add a send_init_stream callback to perform the 74 clock cycle
>>>    sequence after power up
>>>  * do a full power cycle (if possible) before the initialization. This ensures
>>>    that the sd/MMC is in valid knwon state. Also it allows to check if the
>> power
>>>    cycling works as expected.
>>>  * disable the UHS modes is power cycling is not available/working. This
>> ensures
>>>    that we won't be stuck if the UHS initialization fails.
>>>  * select the appropriate signal voltage when selecting a mode (MMC
>>> only)
>>>  * add a helper function to parse the generic dt bindings
>>>  * add a helper function to send the tuning command
>>>
>>> Jean-Jacques Hiblot (17):
>>>   mmc: dm: get the IO-line and main voltage regulators from the dts
>>>   mmc: split mmc_startup()
>>>   mmc: move the MMC startup for version above v4.0 in a separate
>>>     function
>>>   mmc: make ext_csd part of struct mmc
>>>   mmc: add a function to read and test the ext csd (mmc >= 4)
>>>   mmc: introduce mmc modes
>>>   mmc: Add a function to dump the mmc capabilities
>>>   mmc: use mmc modes to select the correct bus speed
>>>   cmd: mmc: display the mode name and current bus speed in the mmc
>> info
>>>   mmc: refactor SD startup to make it easier to support new modes
>>>   mmc: refactor MMC startup to make it easier to support new modes
>>>   mmc: Add a new callback function to perform the 74 clocks cycle
>>>     sequence
>>>   mmc: Add support for UHS modes
>>>   mmc: disable UHS modes if Vcc cannot be switched on and off
>>>   mmc: Change mode when switching to a boot partition
>>>   mmc: use the right voltage level for MMC DDR and HS200 modes
>>>   mmc: add a library function to send tuning command
>>>
>>> Kishon Vijay Abraham I (9):
>>>   mmc: make mmc_set_ios() return status
>>>   mmc: Enable signal voltage to be selected from mmc core
>>>   mmc: add power cyle support in mmc core
>>>   mmc: add a new mmc parameter to disable mmc clock
>>>   mmc: disable the mmc clock during power off
>>>   mmc: Add a execute_tuning() callback to the mmc operations.
>>>   mmc: add HS200 support in MMC core
>>>   mmc: Retry some MMC cmds on failure
>>>   dm: mmc: Add a library function to parse generic dt binding
>>>
>>>  cmd/mmc.c                |    3 +-
>>>  drivers/mmc/Kconfig      |   23 +
>>>  drivers/mmc/fsl_esdhc.c  |    2 +-
>>>  drivers/mmc/mmc-uclass.c |   87 +++
>>>  drivers/mmc/mmc.c        | 1511
>> ++++++++++++++++++++++++++++++++++------------
>>>  include/mmc.h            |  176 +++++-
>>>  6 files changed, 1417 insertions(+), 385 deletions(-)
>>>
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot



More information about the U-Boot mailing list