We assume that any host controller that doesn't implement execute_tuning will have no issue with HS200 operation. This is likely untrue for most host drivers that we have and it will confuse users: - Enable CONFIG_MCI_TUNING, e.g. for i.MX - devinfo shows HS200 operation - Actually reading blocks will fail with EIO Therefore, let's make execute_tuning mandatory for HS200. If some driver doesn't need it, it can always define an empty stub for it. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- drivers/mci/mci-core.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c index af0980308866..f6565b2b64dd 100644 --- a/drivers/mci/mci-core.c +++ b/drivers/mci/mci-core.c @@ -1349,8 +1349,14 @@ int mci_execute_tuning(struct mci *mci) struct mci_host *host = mci->host; u32 opcode; - if (!host->execute_tuning) - return 0; + if (!host->execute_tuning) { + /* + * For us, implementing ->execute_tuning is mandatory to + * support higher speed modes + */ + dev_warn(&mci->dev, "tuning failed: no host diver support\n"); + return -EOPNOTSUPP; + } /* Tuning is only supported for MMC / HS200 */ if (mmc_card_hs200(mci)) -- 2.39.2