mmc: Add option to adjust b_max before long read
authorMarek Vasut <marek.vasut@gmail.com>
Sat, 4 Apr 2020 10:45:05 +0000 (12:45 +0200)
committerPeng Fan <peng.fan@nxp.com>
Wed, 22 Apr 2020 12:41:56 +0000 (20:41 +0800)
commit145429aac05b399c3543ebb86799f4ed753328c4
tree961a177256e8227f7d71d29a0804c0e2bac3a92a
parentd2661d8e9f9e83cb15ab981cb42e84c51bd85c2d
mmc: Add option to adjust b_max before long read

Add getter function which permits adjusting the maximum number of
blocks that could be read in a single sustained read transfer based
on the location of the source/target buffer and length, before such
transfer starts.

This is mainly useful on systems which have various DMA restrictions
for different memory locations, e.g. DMA limited to 32bit addresses,
and where a bounce buffer is used to work around such restrictions.
Since the U-Boot bounce buffer is mallocated, it's size is limited
by the malloc area size, and the read transfer to such a buffer must
also be limited. However, as not all areas are limited equally, the
b_max should be adjusted accordinly as needed to avoid degrading
performance unnecessarily.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
drivers/mmc/mmc-uclass.c
drivers/mmc/mmc.c
include/mmc.h