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

Jean-Jacques Hiblot jjhiblot at ti.com
Fri May 12 18:16:18 UTC 2017


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). 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 4 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:
- enable/disable Vdd
- check if the card is busy (used during UHS voltage switching)
- 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.

And finally the last commits add the support for HS200 and UHS.
I haven't been able to test the UHS SDR104 mode by lack of compatible sdcard.

With this in place and the required changes in the HSMMC (including DAM), we observe significant
improvements in the performances on a DRA7 evm:
eMMC HS200: 130 MB/s
eMMC DDR52: 80 MB/s
sd   SDR50: 80 MB/s

cheers,

Jean-Jacques


Jean-Jacques Hiblot (18):
  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: introduces mmc modes.
  mmc: Add a fonction 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: make mmc_set_ios() return status
  mmc: add power cyle support in mmc core
  mmc: add a new mmc parameter to disable mmc clock
  mmc: Add a execute_tuning() callback to the mmc operations.
  mmc: add HS200 support in MMC core
  mmc: Add a new callback function to check if the card is busy
  mmc: Add support for UHS modes
  mmc: Change mode when switching to a boot partition

Kishon Vijay Abraham I (3):
  mmc: Enable signal voltage to be selected from mmc core
  mmc: Add a new callback function to enable/disable vdd
  mmc: disable the mmc clock during power off

Vignesh R (1):
  mmc: Retry some MMC cmds on failure

 cmd/mmc.c                |    3 +-
 drivers/mmc/fsl_esdhc.c  |    2 +-
 drivers/mmc/mmc-uclass.c |   42 ++
 drivers/mmc/mmc.c        | 1220 +++++++++++++++++++++++++++++++++-------------
 include/mmc.h            |  138 +++++-
 5 files changed, 1058 insertions(+), 347 deletions(-)

-- 
1.9.1



More information about the U-Boot mailing list