Re: [PATCH V2 0/2] mmc: sdhci-sprd: Add SD HS mode online tuning

From: Wenchao Chen
Date: Tue Aug 15 2023 - 22:35:01 EST


On Tue, Aug 15, 2023 at 7:19 PM Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
>
> On 15/08/23 13:55, Wenchao Chen wrote:
> > On Tue, Aug 15, 2023 at 6:37 PM Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
> >>
> >> On 15/08/23 13:29, Wenchao Chen wrote:
> >>> On Tue, Aug 15, 2023 at 2:21 PM Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
> >>>>
> >>>> On 15/08/23 04:40, Wenchao Chen wrote:
> >>>>> Change in v2:
> >>>>> - add mmc_sd_switch() and mmc_send_status() to the header file
> >>>>> - split up core changes from host driver changes
> >>>>> - Use pr_debug instead of dev_info and dev_dbg
> >>>>> - Optimize the best sampled value algorithm
> >>>>
> >>>> What about hooking ->set_ios() as Ulf suggested?
> >>>>
> >>>
> >>> I've tried that, but it's not a good way to do it.
> >>> We found that sdhci_runtime_resume_host() calls ->set_ios, but we
> >>> don't want to do that.
> >>
> >> Given that sdhci_sprd_runtime_resume() calls sdhci_runtime_resume_host(),
> >> it should be possible to determine when to tune, right?
> >>
> >
> > You mean like this? For example:
> > static int sdhci_sprd_runtime_resume(struct device *dev)
> > {
> > ...
> > sprd_host->need_hs_tuning = false;
> > sdhci_runtime_resume_host(host, 1);
> > sprd_host->need_hs_tuning = true;
>
> Yes
>

This works, but we found a problem: if sd hs tuning fails, ->set_ios
is of type void with no return value.

> > ...
> > }
> >
> >>> We just need SD HS mode tuning at mmc_sd_init_card().
> >>>
> >>>>>
> >>>>> Wenchao Chen (2):
> >>>>> mmc: core: Add host specific tuning support for SD HS mode
> >>>>> mmc: sdhci-sprd: Add SD HS mode online tuning
> >>>>>
> >>>>> drivers/mmc/core/sd.c | 12 +++
> >>>>> drivers/mmc/core/sd_ops.c | 1 +
> >>>>> drivers/mmc/host/sdhci-sprd.c | 152 ++++++++++++++++++++++++++++++++++
> >>>>> include/linux/mmc/host.h | 8 ++
> >>>>> 4 files changed, 173 insertions(+)
> >>>>>
> >>>>
> >>
>