From: Masaharu Hayakawa <masaharu.hayakawa.ry@xxxxxxxxxxx> When the result of tuning was different between the first set and the second set, there was a case where the wrong sampling clock position was selected. As a countermeasure, make the two results the same. Signed-off-by: Masaharu Hayakawa <masaharu.hayakawa.ry@xxxxxxxxxxx> [Niklas: update commit message] Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> --- drivers/mmc/host/renesas_sdhi_core.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c index 45c015da2e757c90..85152e73e6386f1c 100644 --- a/drivers/mmc/host/renesas_sdhi_core.c +++ b/drivers/mmc/host/renesas_sdhi_core.c @@ -301,6 +301,15 @@ static int renesas_sdhi_select_tuning(struct tmio_mmc_host *host) /* Clear SCC_RVSREQ */ sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_RVSREQ, 0); + /* Merge the results */ + for (i = 0; i < host->tap_num * 2; i++) { + if (!test_bit(i, host->taps)) { + clear_bit(i % host->tap_num, host->taps); + clear_bit((i % host->tap_num) + host->tap_num, + host->taps); + } + } + /* * Find the longest consecutive run of successful probes. If that * is more than SH_MOBILE_SDHI_MAX_TAP probes long then use the -- 2.17.0