Skip to content
Snippets Groups Projects
Forked from Reform / reform-boundary-uboot
Source project has a limited visibility.
  • Markus Niebel's avatar
    ab71188c
    mmc: add setdsr support · ab71188c
    Markus Niebel authored
    
    The eMMC and the SD-Card specifications describe the optional SET_DSR command.
    During measurements at our lab we found that some cards implementing this feature
    having really strong driver strengts per default. This can lead to voltage peaks
    above the specification of the host on signal edges for data sent from a card to
    the host.
    
    Since availability of a given card type may be shorter than the time a certain
    hardware will be produced it is useful to have support for this command (Alternative
    would be changing termination resistors and adapting the driver strength of the
    host to the used card.)
    
    Following proposal for an implementation:
    
    - new field that reflects CSD field DSR_IMP in struct mmc
    - new field for design specific DSR value in struct mmc
    - board code can set DSR value in mmc struct just after registering an controller
    - mmc_startup sends the the stored DSR value before selecting a card, if DSR_IMP is set
    
    Additionally the mmc command is extended to make is possible to play around with different
    DSR values.
    
    The concept was tested on a i.MX53 based platform using a Micron eMMC card where the default
    DSR is 0x0400 (12mA) but in our design 0x0100 (0x0100) were enough. To use this feature for
    instance on a mx53loco one have to add a call to mmc_set_dsr() in board_mmc_init() after
    calling fsl_esdhc_initialize() for the eMMC.
    
    Signed-off-by: default avatarMarkus Niebel <Markus.Niebel@tqs.de>
    Acked-by: default avatarPantelis Antoniou <panto@antoniou-consulting.com>
    ab71188c
    History
    mmc: add setdsr support
    Markus Niebel authored
    
    The eMMC and the SD-Card specifications describe the optional SET_DSR command.
    During measurements at our lab we found that some cards implementing this feature
    having really strong driver strengts per default. This can lead to voltage peaks
    above the specification of the host on signal edges for data sent from a card to
    the host.
    
    Since availability of a given card type may be shorter than the time a certain
    hardware will be produced it is useful to have support for this command (Alternative
    would be changing termination resistors and adapting the driver strength of the
    host to the used card.)
    
    Following proposal for an implementation:
    
    - new field that reflects CSD field DSR_IMP in struct mmc
    - new field for design specific DSR value in struct mmc
    - board code can set DSR value in mmc struct just after registering an controller
    - mmc_startup sends the the stored DSR value before selecting a card, if DSR_IMP is set
    
    Additionally the mmc command is extended to make is possible to play around with different
    DSR values.
    
    The concept was tested on a i.MX53 based platform using a Micron eMMC card where the default
    DSR is 0x0400 (12mA) but in our design 0x0100 (0x0100) were enough. To use this feature for
    instance on a mx53loco one have to add a call to mmc_set_dsr() in board_mmc_init() after
    calling fsl_esdhc_initialize() for the eMMC.
    
    Signed-off-by: default avatarMarkus Niebel <Markus.Niebel@tqs.de>
    Acked-by: default avatarPantelis Antoniou <panto@antoniou-consulting.com>