Hi Wolfram, Thanks for your patch. On 2020-01-29 21:37:07 +0100, Wolfram Sang wrote: > Currently, select_tuning() is called after RPM resume. But > select_tuning() needs some additional function calls to work correctly. > Instead of reimplementing the whole postprocessing, just enforce > retuning. > > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> > --- > > I couldn't trigger RPM suspend even with debug code. Shimoda-san said > it should only occur with removed cards which is not so easy with > soldered eMMC. For those cases, I think the aproach taken here is fine. > Needs more discussion, though, to make sure... I really like the change so I really wanted to provoke a suspend to be able to provide a tested by tag, but I have so far been unable to do so :-( > > drivers/mmc/host/renesas_sdhi_core.c | 1 - > drivers/mmc/host/tmio_mmc.h | 1 - > drivers/mmc/host/tmio_mmc_core.c | 8 +------- > 3 files changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c > index 24ee8ac1fe21..0c9e5e010bda 100644 > --- a/drivers/mmc/host/renesas_sdhi_core.c > +++ b/drivers/mmc/host/renesas_sdhi_core.c > @@ -898,7 +898,6 @@ int renesas_sdhi_probe(struct platform_device *pdev, > dev_warn(&host->pdev->dev, "Unknown clock rate for tuning\n"); > > host->execute_tuning = renesas_sdhi_execute_tuning; > - host->select_tuning = renesas_sdhi_select_tuning; > host->check_retune = renesas_sdhi_check_scc_error; > host->prepare_hs400_tuning = > renesas_sdhi_prepare_hs400_tuning; > diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h > index bdb9973981ff..b6fffd3d2650 100644 > --- a/drivers/mmc/host/tmio_mmc.h > +++ b/drivers/mmc/host/tmio_mmc.h > @@ -183,7 +183,6 @@ struct tmio_mmc_host { > * and mandatory for SDR104. > */ > int (*execute_tuning)(struct tmio_mmc_host *host, u32 opcode); > - int (*select_tuning)(struct tmio_mmc_host *host); > > /* Tuning values: 1 for success, 0 for failure */ > DECLARE_BITMAP(taps, BITS_PER_BYTE * sizeof(long)); > diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c > index 3cacb516a66e..aeafa1c68ce2 100644 > --- a/drivers/mmc/host/tmio_mmc_core.c > +++ b/drivers/mmc/host/tmio_mmc_core.c > @@ -1302,11 +1302,6 @@ int tmio_mmc_host_runtime_suspend(struct device *dev) > } > EXPORT_SYMBOL_GPL(tmio_mmc_host_runtime_suspend); > > -static bool tmio_mmc_can_retune(struct tmio_mmc_host *host) > -{ > - return host->tap_num && mmc_can_retune(host->mmc); > -} > - > int tmio_mmc_host_runtime_resume(struct device *dev) > { > struct tmio_mmc_host *host = dev_get_drvdata(dev); > @@ -1323,8 +1318,7 @@ int tmio_mmc_host_runtime_resume(struct device *dev) > > tmio_mmc_enable_dma(host, true); > > - if (tmio_mmc_can_retune(host) && host->select_tuning(host)) > - dev_warn(&host->pdev->dev, "Tuning selection failed\n"); > + mmc_retune_needed(host->mmc); > > return 0; > } > -- > 2.20.1 > -- Regards, Niklas Söderlund