• Stefan Nilsson XK's avatar
    mmc: sdio: Fix to support any block size optimally · 052d81da
    Stefan Nilsson XK authored
    This patch allows any block size to be set on the SDIO link,
    and still have an arbitrary sized packet (adjusted in size by
    using sdio_align_size) transferred in an optimal way
    (preferably one transfer).
    
    Previously if the block size was larger than the default of
    512 bytes and the transfer size was exactly one block size
    (possibly thanks to using sdio_align_size to get an optimal
    transfer size), it was sent as a number of byte transfers instead
    of one block transfer. Also if the number of blocks was
    (max_blocks * N) + 1, the tranfer would be conducted with a number
    of blocks and finished off with a number of byte transfers.
    
    When doing this change it was also possible to break out the quirk
    for broken byte mode in a much cleaner way, and collect the logic of
    when to do byte or block transfer in one function instead of two.
    Signed-off-by: default avatarStefan Nilsson XK <stefan.xk.nilsson@stericsson.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@stericsson.com>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarChris Ball <cjb@laptop.org>
    052d81da
sdio_io.c 18.5 KB