• Haavard Skinnemoen's avatar
    atmel-mci: Initialize BLKR before sending data transfer command · a252e3e3
    Haavard Skinnemoen authored
    The atmel-mci driver sometimes fails data transfers like this:
    
       mmcblk0: error -5 transferring data
       end_request: I/O error, dev mmcblk0, sector 2749769
       end_request: I/O error, dev mmcblk0, sector 2749777
    
    It turns out that this might be caused by the BLKR register (which
    contains the block size and the number of blocks being transfered) being
    initialized too late. This patch moves the initialization of BLKR so
    that it contains the correct value before the block transfer command is
    sent.
    
    This error is difficult to reproduce, but if you insert a long delay
    (mdelay(10) or thereabouts) between the calls to atmci_start_command()
    and atmci_submit_data(), all transfers seem to fail without this patch,
    while I haven't seen any failures with this patch.
    Reported-by: default avatarHein_Tibosch <hein_tibosch@yahoo.es>
    Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
    a252e3e3
atmel-mci.c 27.4 KB