]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mmc: sdio: Fix to support any block size optimally
authorStefan Nilsson XK <stefan.xk.nilsson@stericsson.com>
Wed, 26 Oct 2011 08:52:17 +0000 (10:52 +0200)
committerChris Ball <cjb@laptop.org>
Sat, 12 Nov 2011 00:47:13 +0000 (19:47 -0500)
commit6b852f44d00c48a5d5603d33cac07863531935a2
tree844a0f028c52585ad7184af2d3256aa09d605c78
parent3ce1a5d1e6d7fe24ca1751c8675fc38dedeae636
mmc: sdio: Fix to support any block size optimally

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: Stefan Nilsson XK <stefan.xk.nilsson@stericsson.com>
Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/sdio_io.c
drivers/mmc/core/sdio_ops.c