• V
    spi: spi-ti-qspi: Use bounce buffer if read buffer is not DMA'ble · c687c46e
    Vignesh R 提交于
    Flash filesystems like JFFS2, UBIFS and MTD block layer can provide
    vmalloc'd or kmap'd buffers that cannot be mapped using dma_map_sg() and
    can potentially be in memory region above 32bit addressable region(ie
    buffers belonging to memory region backed by LPAE) of DMA, implement
    spi_flash_can_dma() interface to inform SPI core not to map such
    buffers.
    When buffers are not mapped for DMA, then use a pre allocated bounce
    buffer(64K = typical flash erase sector size) to read from flash and
    then do a copy to actual destination buffer. This is approach is much
    faster than using memcpy using CPU and also reduces CPU load.
    
    With this patch, UBIFS read speed is ~18MB/s and CPU utilization <20% on
    DRA74 Rev H EVM. Performance degradation is negligible when compared
    with non bounce buffer case while using UBIFS.
    Signed-off-by: NVignesh R <vigneshr@ti.com>
    Signed-off-by: NMark Brown <broonie@kernel.org>
    c687c46e
spi-ti-qspi.c 19.8 KB