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

Jaehoon Chung jh80.chung at samsung.com
Fri Oct 20 11:31:30 UTC 2017


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.

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



More information about the U-Boot mailing list