• Philip Langdale's avatar
    mmc: Add support for mmc v4 wide-bus modes · e45a1bd2
    Philip Langdale authored
    This change adds support for the mmc4 4-bit wide-bus mode.
    
    The mmc4 spec defines 8-bit and 4-bit transfer modes. As we do not support
    any 8-bit hardware, this patch only adds support for the 4-bit mode, but
    it can easily be built upon when the time comes.
    
    The 4-bit mode is electrically compatible with SD's 4-bit mode but the
    procedure for turning it on is different. This patch implements only
    the essential parts of the procedure as defined by the spec. Two additional
    steps are recommended but not compulsory. I am documenting them here so
    that there's a record.
    
    1) A bus-test mechanism is implemented using dedicated mmc commands which allow
    for testing the functionality of the data bus at the electrical level. This is
    pretty paranoid and they way the commands work is not compatible with the mmc
    subsystem (they don't set valid CRC values).
    
    2) MMC v4 cards can indicate they would like to draw more than the default
    amount of current in wide-bus modes. We currently will never switch the card
    into a higher draw mode. Supposedly, allowing the card to draw more current
    will let it perform better, but the specs seem to indicate that the card will
    function correctly without the mode change. Empirical testing supports this
    interpretation.
    Signed-off-by: default avatarPhilip Langdale <philipl@overt.org>
    Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
    e45a1bd2
mmc.c 34.3 KB