[...]
>> > +static int tmio_mmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
>> > +{
>> > + struct tmio_mmc_host *host = mmc_priv(mmc);
>> > + unsigned int num;
>> > + int i, ret = 0;
>> > + bool *tap;
>> > +
>> > + if (!host->init_tuning || !host->select_tuning)
>>
>> When defining these callbacks, it would be nice to know which ones are
>> optional and which ones are required.
>
> Would some comments in struct tmio_mmc_host be an appropriate way
> to achieve that?
Yes, that would be nice!
[...]
>> > static int tmio_mmc_init_ocr(struct tmio_mmc_host *host)
>> > @@ -1202,6 +1276,9 @@ int tmio_mmc_host_runtime_suspend(struct device *dev)
>> > struct mmc_host *mmc = dev_get_drvdata(dev);
>> > struct tmio_mmc_host *host = mmc_priv(mmc);
>> >
>> > + mmc_retune_timer_stop(host->mmc);
>> > + mmc_retune_needed(host->mmc);
>>
>> I am wondering whether it would it be possible to keep a cache of the
>> currently used tuning values and then restore these values at
>> runtime_resume?
>>
>> In that way you wouldn't need to force new re-tuning cycle here.
>
> I will check with the hardware people to see if it is practical from
> that POV.
Okay!
>
> From a software POV that ought to be simple enough: a small bitmap ought
> to be sufficient to save the values for the hardware covered by this
> series.
Yes, indeed!
Kind regards
Uffe