• Daniel Drake's avatar
    mmc: alcor: work with multiple-entry sglists · c671b6de
    Daniel Drake authored
    DMA on this hardware is limited to dealing with a 4096 bytes at a
    time. Previously, the driver was set up accordingly to request single-page
    DMA buffers, however that had the effect of generating a large number
    of small MMC requests for data I/O.
    
    Improve the driver to accept multi-entry scatter-gather lists. The size of
    each entry is already capped to 4096 bytes (AU6601_MAX_DMA_BLOCK_SIZE),
    matching the hardware requirements. Existing driver code already iterates
    through remaining sglist entries after each DMA transfer is complete.
    
    Also add some comments to help clarify the situation, and clear up
    some of the confusion I had regarding DMA vs PIO.
    
    Testing with dd, this increases write performance from 2mb/sec to
    10mb/sec, and increases read performance from 4mb/sec to 14mb/sec.
    Signed-off-by: default avatarDaniel Drake <drake@endlessm.com>
    Link: http://lkml.kernel.org/r/CAD8Lp47JYdZzbV9F+asNwvSfLF_po_J7ir6R_Vb-Dab21_=Krw@mail.gmail.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    c671b6de
alcor.c 28.9 KB