• S
    mmc: tegra: use bounce buffer APIs · 19815399
    Stephen Warren 提交于
    Tegra's MMC driver does DMA, and hence needs cache-aligned buffers. In
    some cases (e.g. user load commands) this cannot be guaranteed by callers
    of the MMC APIs. To solve this, modify the Tegra MMC driver to use the
    new bounce_buffer_*() APIs.
    
    Note: Ideally, all U-Boot code will always provide address- and size-
    aligned buffers, so a bounce buffer will only ever be needed for user-
    supplied buffers (e.g. load commands). Ensuring this removes the need
    for performance-sucking bounce buffer cache management and memcpy()s.
    The one known exception at present is the SCR buffer in sd_change_freq(),
    which is only 8 bytes long. Solving this requires enhancing struct
    mmc_data to know the difference between buffer size and transferred data
    size, or forcing all callers of mmc_send_cmd() to have allocated buffers
    using ALLOC_CACHE_ALIGN_BUFFER(), which while true in this case, is not
    enforced in any way at present, and so cannot be assumed by the core MMC
    code.
    Signed-off-by: NStephen Warren <swarren@nvidia.com>
    Acked-by: NSimon Glass <sjg@chromium.org>
    Tested-by: NSimon Glass <sjg@chromium.org>
    Signed-off-by: NAndy Fleming <afleming@freescale.com>
    19815399
tegra_mmc.c 14.6 KB