mbox series

[RFT,0/3] mmc: renesas_sdhi: improve TAP selection if all TAPs are good

Message ID 20200306093159.6155-1-wsa+renesas@sang-engineering.com
Headers show
Series mmc: renesas_sdhi: improve TAP selection if all TAPs are good | expand

Message

Wolfram Sang March 6, 2020, 9:31 a.m. UTC
SDHI (with SCC) has a mechanism to select an optimal TAP even if all
were considered good during the tuning process. This series implements
support for it. Before that, some refactoring of 'best TAP selection' is
done to avoid code duplication and get more understandable code.

This work is based on BSP patches by Masaharu Hayakawa and Takeshi
Saito. It is built on top of mmc/next with two more patches added which
will be applied separately:

"mmc: renesas_sdhi: simplify execute_tuning"
"mmc: renesas_sdhi: Use BITS_PER_LONG helper"

For convenience, a branch is here:

git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/sdhi/new_manual_calib

It has been tested on a Renesas Salvator-XS board (R-Car M3-N). There
were no regressions detected. HS400 could be tuned the same way, and
checksumming large files still works. Note that I couldn't test the 'all
TAPs are good' case without hacking the code. So, maybe the BSP team has
a setup where this happens without tweaking? This is why the series is
marked as 'RFT' still.

And while this series is useful by itself, it is also the last
prerequisite to implement some 'bad tap avoidance' on top which is what
we are originally aiming for.

Note about backporting: The super useful iterator
bitmap_for_each_set_region() is only available since v5.6. If you want
that before, you need to backport the needed bits of e837dfde15a4
("bitmap: genericize percpu bitmap region iterators"), too.

Looking forward to comments,

   Wolfram


Wolfram Sang (3):
  mmc: renesas_sdhi: refactor calculation of best TAP
  mmc: renesas_sdhi: clarify handling of selecting TAPs
  mmc: renesas_sdhi: improve TAP selection if all TAPs are good

 drivers/mmc/host/renesas_sdhi.h      |  2 +
 drivers/mmc/host/renesas_sdhi_core.c | 64 ++++++++++++++--------------
 2 files changed, 34 insertions(+), 32 deletions(-)