[U-Boot] [PATCH v2 00/26] mmc: Add support for HS200 and UHS modes
Jean-Jacques Hiblot
jjhiblot at ti.com
Mon Oct 2 09:15:28 UTC 2017
On 22/09/2017 16:42, Jaehoon Chung wrote:
> 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
> I have one question.
>
> Did you test about accessing Boot partition of eMMC?
> As i know, boot partition doesn't support the HS200 mode.
>
> When i checked your patches, there is no the function of mode changing for accessing boot partition.
> If i missed it, let me know, plz.
Yes I did test the boot partitions. HS200 is not used in this case.
The key function is mmc_boot_part_access_chk(). It checks if the current
mode is supported by the partition. If not, it'll reselect a new mode.
Jean-Jacques
>
> 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