Hi Wolfram, Thanks for your work. On 2020-01-29 21:37:08 +0100, Wolfram Sang wrote: > TAPs are Renesas SDHI specific. Now that we moved all handling to the > SDHI core, we can also move the definitions from the TMIO struct to the > SDHI one. > > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > --- > drivers/mmc/host/renesas_sdhi.h | 5 ++++ > drivers/mmc/host/renesas_sdhi_core.c | 38 ++++++++++++++-------------- > drivers/mmc/host/tmio_mmc.h | 5 ---- > 3 files changed, 24 insertions(+), 24 deletions(-) > > diff --git a/drivers/mmc/host/renesas_sdhi.h b/drivers/mmc/host/renesas_sdhi.h > index 11a0b2bca3aa..7a1a741547f2 100644 > --- a/drivers/mmc/host/renesas_sdhi.h > +++ b/drivers/mmc/host/renesas_sdhi.h > @@ -58,6 +58,11 @@ struct renesas_sdhi { > u32 scc_tappos; > u32 scc_tappos_hs400; > bool doing_tune; > + > + /* Tuning values: 1 for success, 0 for failure */ > + DECLARE_BITMAP(taps, BITS_PER_BYTE * sizeof(long)); > + unsigned int tap_num; > + unsigned long tap_set; > }; > > #define host_to_priv(host) \ > diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c > index 0c9e5e010bda..22eaabe513d0 100644 > --- a/drivers/mmc/host/renesas_sdhi_core.c > +++ b/drivers/mmc/host/renesas_sdhi_core.c > @@ -354,7 +354,7 @@ static void renesas_sdhi_hs400_complete(struct tmio_mmc_host *host) > > if (priv->quirks && priv->quirks->hs400_4taps) > sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_TAPSET, > - host->tap_set / 2); > + priv->tap_set / 2); > > sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_CKSEL, > SH_MOBILE_SDHI_SCC_CKSEL_DTSEL | > @@ -438,11 +438,11 @@ static int renesas_sdhi_select_tuning(struct tmio_mmc_host *host) > * result requiring the tap to be good in both runs before > * considering it for tuning selection. > */ > - for (i = 0; i < host->tap_num * 2; i++) { > - int offset = host->tap_num * (i < host->tap_num ? 1 : -1); > + for (i = 0; i < priv->tap_num * 2; i++) { > + int offset = priv->tap_num * (i < priv->tap_num ? 1 : -1); > > - if (!test_bit(i, host->taps)) > - clear_bit(i + offset, host->taps); > + if (!test_bit(i, priv->taps)) > + clear_bit(i + offset, priv->taps); > } > > /* > @@ -454,8 +454,8 @@ static int renesas_sdhi_select_tuning(struct tmio_mmc_host *host) > ntap = 0; > tap_start = 0; > tap_end = 0; > - for (i = 0; i < host->tap_num * 2; i++) { > - if (test_bit(i, host->taps)) { > + for (i = 0; i < priv->tap_num * 2; i++) { > + if (test_bit(i, priv->taps)) { > ntap++; > } else { > if (ntap > tap_cnt) { > @@ -474,12 +474,12 @@ static int renesas_sdhi_select_tuning(struct tmio_mmc_host *host) > } > > if (tap_cnt >= SH_MOBILE_SDHI_MAX_TAP) > - host->tap_set = (tap_start + tap_end) / 2 % host->tap_num; > + priv->tap_set = (tap_start + tap_end) / 2 % priv->tap_num; > else > return -EIO; > > /* Set SCC */ > - sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_TAPSET, host->tap_set); > + sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_TAPSET, priv->tap_set); > > /* Enable auto re-tuning */ > sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_RVSCNTL, > @@ -494,27 +494,27 @@ static int renesas_sdhi_execute_tuning(struct tmio_mmc_host *host, u32 opcode) > struct renesas_sdhi *priv = host_to_priv(host); > int i, ret; > > - host->tap_num = renesas_sdhi_init_tuning(host); > - if (!host->tap_num) > + priv->tap_num = renesas_sdhi_init_tuning(host); > + if (!priv->tap_num) > return 0; /* Tuning is not supported */ > > - if (host->tap_num * 2 >= sizeof(host->taps) * BITS_PER_BYTE) { > + if (priv->tap_num * 2 >= sizeof(priv->taps) * BITS_PER_BYTE) { > dev_err(&host->pdev->dev, > "Too many taps, please update 'taps' in tmio_mmc_host!\n"); > return -EINVAL; > } > > priv->doing_tune = true; > - bitmap_zero(host->taps, host->tap_num * 2); > + bitmap_zero(priv->taps, priv->tap_num * 2); > > /* Issue CMD19 twice for each tap */ > - for (i = 0; i < 2 * host->tap_num; i++) { > + for (i = 0; i < 2 * priv->tap_num; i++) { > /* Set sampling clock position */ > - sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_TAPSET, i % host->tap_num); > + sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_TAPSET, i % priv->tap_num); > > ret = mmc_send_tuning(host->mmc, opcode, NULL); > if (ret == 0) > - set_bit(i, host->taps); > + set_bit(i, priv->taps); > } > > return renesas_sdhi_select_tuning(host); > @@ -523,7 +523,7 @@ static int renesas_sdhi_execute_tuning(struct tmio_mmc_host *host, u32 opcode) > static bool renesas_sdhi_manual_correction(struct tmio_mmc_host *host, bool use_4tap) > { > struct renesas_sdhi *priv = host_to_priv(host); > - unsigned long new_tap = host->tap_set; > + unsigned long new_tap = priv->tap_set; > u32 val; > > val = sd_scc_read32(host, priv, SH_MOBILE_SDHI_SCC_RVSREQ); > @@ -560,9 +560,9 @@ static bool renesas_sdhi_manual_correction(struct tmio_mmc_host *host, bool use_ > return false; > } > > - host->tap_set = (new_tap % host->tap_num); > + priv->tap_set = (new_tap % priv->tap_num); > sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_TAPSET, > - host->tap_set / (use_4tap ? 2 : 1)); > + priv->tap_set / (use_4tap ? 2 : 1)); > > return false; > } > diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h > index b6fffd3d2650..b4cf10109162 100644 > --- a/drivers/mmc/host/tmio_mmc.h > +++ b/drivers/mmc/host/tmio_mmc.h > @@ -184,11 +184,6 @@ struct tmio_mmc_host { > */ > int (*execute_tuning)(struct tmio_mmc_host *host, u32 opcode); > > - /* Tuning values: 1 for success, 0 for failure */ > - DECLARE_BITMAP(taps, BITS_PER_BYTE * sizeof(long)); > - unsigned int tap_num; > - unsigned long tap_set; > - > void (*prepare_hs400_tuning)(struct tmio_mmc_host *host); > void (*hs400_downgrade)(struct tmio_mmc_host *host); > void (*hs400_complete)(struct tmio_mmc_host *host); > -- > 2.20.1 > -- Regards, Niklas Söderlund