On 14 December 2016 at 05:17, Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> wrote: > Add new helper function, mmc_sdio_retry_init_card, to be > reused when trying to retry the init sequence. > > Signed-off-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> > --- > > drivers/mmc/core/sdio.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c > index ecbc529..47f824b 100644 > --- a/drivers/mmc/core/sdio.c > +++ b/drivers/mmc/core/sdio.c > @@ -541,6 +541,18 @@ static int mmc_sdio_init_uhs_card(struct mmc_card *card) > return err; > } > > +static void mmc_sdio_retry_init_card(struct mmc_host *host, I suggest renaming this function to mmc_sdio_resend_if_cond() and... > + struct mmc_card *card, > + int *retries) ... remove retries, as I think retries is better handled outside of this function. Looking at patch 2 also confirms this is a good idea. > +{ > + sdio_reset(host); > + mmc_go_idle(host); > + mmc_send_if_cond(host, host->ocr_avail); > + mmc_remove_card(card); > + (*retries)--; > + > +} > + > /* > * Handle the detection and initialisation of a card. > * > @@ -630,11 +642,7 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr, > err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180, > ocr_card); > if (err == -EAGAIN) { > - sdio_reset(host); > - mmc_go_idle(host); > - mmc_send_if_cond(host, host->ocr_avail); > - mmc_remove_card(card); > - retries--; > + mmc_sdio_retry_init_card(host, card, &retries); > goto try_again; > } else if (err) { > ocr &= ~R4_18V_PRESENT; > -- > 1.9.1 > Kind regards Uffe -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html