On 23/08/18 11:48, Yinbo Zhu wrote: > This patch is to add tuning error codes to > judge tuning state > > Signed-off-by: Yinbo Zhu <yinbo.zhu@xxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > drivers/mmc/host/sdhci.c | 9 +++++---- > drivers/mmc/host/sdhci.h | 1 + > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index 1c828e0..596b375 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -2213,7 +2213,7 @@ static void sdhci_send_tuning(struct sdhci_host *host, u32 opcode) > > } > > -static void __sdhci_execute_tuning(struct sdhci_host *host, u32 opcode) > +static int __sdhci_execute_tuning(struct sdhci_host *host, u32 opcode) > { > int i; > > @@ -2230,13 +2230,13 @@ static void __sdhci_execute_tuning(struct sdhci_host *host, u32 opcode) > pr_info("%s: Tuning timeout, falling back to fixed sampling clock\n", > mmc_hostname(host->mmc)); > sdhci_abort_tuning(host, opcode); > - return; > + return -ETIMEDOUT; > } > > ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); > if (!(ctrl & SDHCI_CTRL_EXEC_TUNING)) { > if (ctrl & SDHCI_CTRL_TUNED_CLK) > - return; /* Success! */ > + return 0; /* Success! */ > break; > } > > @@ -2248,6 +2248,7 @@ static void __sdhci_execute_tuning(struct sdhci_host *host, u32 opcode) > pr_info("%s: Tuning failed, falling back to fixed sampling clock\n", > mmc_hostname(host->mmc)); > sdhci_reset_tuning(host); > + return -EAGAIN; > } > > int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) > @@ -2309,7 +2310,7 @@ int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) > > sdhci_start_tuning(host); > > - __sdhci_execute_tuning(host, opcode); > + host->tuning_err = __sdhci_execute_tuning(host, opcode); > > sdhci_end_tuning(host); > out: > diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h > index 23966f8..6c4ed6d 100644 > --- a/drivers/mmc/host/sdhci.h > +++ b/drivers/mmc/host/sdhci.h > @@ -554,6 +554,7 @@ struct sdhci_host { > > unsigned int tuning_count; /* Timer count for re-tuning */ > unsigned int tuning_mode; /* Re-tuning mode supported by host */ > + unsigned int tuning_err; /* Error code for re-tuning */ > #define SDHCI_TUNING_MODE_1 0 > #define SDHCI_TUNING_MODE_2 1 > #define SDHCI_TUNING_MODE_3 2 >