On Wed, 2 Sep 2020 at 10:18, Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> wrote: > > Some R-Car Gen3 SoCs need corrections after they tuned to HS400. This > series implements that. Please have a look at the patch descriptions for > details. The origins were patches in the BSP from Takeshi Saito. > > Changes since v1: > * correction is now enabled after tuning is complete not when it > is initiated > * rebased to new version of "fix stalled SCC series" which is a > dependency for this > > There is a branch for testing here (with the debug patch on top): > > git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/sdhi/new_manual_calib-for-5.10 > > Current test results (little different to v1): > ---------------------------------------------- > > An SDHI instance with a HS400 capable eMMC connected (R-Car M3-N): > > When preparing HS400 tuning, a calib table is found. So, (potential) old > HS400 tuning gets reset and the manual adjustment gets disabled. Unlike > previous series, the runtime flag is not enabled yet. > > kworker/1:2-139 [001] .... 4.160517: renesas_sdhi_reset_hs400_mode: ee140000.mmc: calib table ffff800010bc15f8 > kworker/1:2-139 [001] .... 4.160522: renesas_sdhi_reset_hs400_mode: ee140000.mmc: adjustment disabled > > Lots of tuning CMDs, runtime flag still disabled: > > kworker/0:1-21 [000] .... 4.160630: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.160725: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.160831: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.160936: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161024: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161122: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161214: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161305: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161407: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161496: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161579: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161669: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161762: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161845: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.161927: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.162011: renesas_sdhi_fixup_request: ee140000.mmc: opcode 21, flag 0 > kworker/0:1-21 [000] .... 4.162074: renesas_sdhi_fixup_request: ee140000.mmc: opcode 6, flag 0 > kworker/0:1-21 [000] .... 4.162612: renesas_sdhi_fixup_request: ee140000.mmc: opcode 13, flag 0 > kworker/0:1-21 [000] .... 4.162671: renesas_sdhi_fixup_request: ee140000.mmc: opcode 6, flag 0 > kworker/0:1-21 [000] .... 4.162722: renesas_sdhi_fixup_request: ee140000.mmc: opcode 13, flag 0 > kworker/0:1-21 [000] .... 4.162778: renesas_sdhi_fixup_request: ee140000.mmc: opcode 6, flag 0 > > Tuning was successful, now the runtime flag gets enabled: > > kworker/1:2-139 [001] .... 4.163274: renesas_sdhi_hs400_complete: ee140000.mmc: flag enabled > > First CMD13 after successful tuning, enable adjustment, clear runtime > flag, show replacement value. The replacement value is now also around > 16 which is what Shimoda-san said to be an expected value at room > temerature. It used to be 31 in v1 of the series. > > kworker/0:1-21 [000] .... 4.163416: renesas_sdhi_fixup_request: ee140000.mmc: opcode 13, flag 1 > kworker/0:1-21 [000] .... 4.163421: renesas_sdhi_fixup_request: ee140000.mmc: adjustment enabled, flag disabled > kworker/0:1-21 [000] .... 4.163422: renesas_sdhi_fixup_request: code 17 replacement 18 > > Normal operation continues. Some switching and block reads: > > kworker/0:1-21 [000] .... 4.163592: renesas_sdhi_fixup_request: ee140000.mmc: opcode 6, flag 0 > kworker/0:1-21 [000] .... 4.163645: renesas_sdhi_fixup_request: ee140000.mmc: opcode 13, flag 0 > kworker/0:1-21 [000] .... 4.163700: renesas_sdhi_fixup_request: ee140000.mmc: opcode 6, flag 0 > kworker/0:1-21 [000] .... 4.163747: renesas_sdhi_fixup_request: ee140000.mmc: opcode 13, flag 0 > kworker/0:1-21 [000] .... 4.217134: renesas_sdhi_fixup_request: ee140000.mmc: opcode 17, flag 0 > kworker/0:1-21 [000] .... 4.217357: renesas_sdhi_fixup_request: ee140000.mmc: opcode 17, flag 0 > ... > > And then checksumming a large file works without performance > regressions. Unlike the previous version, retunes do not happen > occasionally, so the new replacement value is indeed better. > > So, again a lot of text but I want interested parties to verify results. > > Looking forward to comments, although I won't complain if this is the > final version ;) > > Thanks and kind regards, > > Wolfram > > > Wolfram Sang (2): > mmc: tmio: add generic hook to fixup after a completed request > mmc: renesas_sdhi: support manual calibration > > drivers/mmc/host/renesas_sdhi.h | 5 + > drivers/mmc/host/renesas_sdhi_core.c | 152 ++++++++++++++++++++++++++- > drivers/mmc/host/tmio_mmc.h | 1 + > drivers/mmc/host/tmio_mmc_core.c | 3 + > 4 files changed, 159 insertions(+), 2 deletions(-) > > -- > 2.20.1 > Applied for next, thanks! Kind regards Uffe