No functional change. Move mmc_sdio_init_card to a separate function (_mmc_sdio_power_restore) and invoke it from mmc_sdio_power_restore. This is in preparation to invoke _mmc_sdio_power_restore from mmc_sdio_runtime_resume so that mmc_claim_host can be invoked before mmc_power_up. Signed-off-by: Kishon Vijay Abraham I <kishon@xxxxxx> --- drivers/mmc/core/sdio.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index b91abed..0cbbfb8 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -970,15 +970,10 @@ static int mmc_sdio_resume(struct mmc_host *host) return err; } -static int mmc_sdio_power_restore(struct mmc_host *host) +static int _mmc_sdio_power_restore(struct mmc_host *host) { int ret; - BUG_ON(!host); - BUG_ON(!host->card); - - mmc_claim_host(host); - /* * Reset the card by performing the same steps that are taken by * mmc_rescan_try_freq() and mmc_attach_sdio() during a "normal" probe. @@ -1002,14 +997,25 @@ static int mmc_sdio_power_restore(struct mmc_host *host) ret = mmc_send_io_op_cond(host, 0, NULL); if (ret) - goto out; + return ret; ret = mmc_sdio_init_card(host, host->card->ocr, host->card, mmc_card_keep_power(host)); if (!ret && host->sdio_irqs) mmc_signal_sdio_irq(host); -out: + return 0; +} + +static int mmc_sdio_power_restore(struct mmc_host *host) +{ + int ret; + + BUG_ON(!host); + BUG_ON(!host->card); + + mmc_claim_host(host); + ret = _mmc_sdio_power_restore(host); mmc_release_host(host); return ret; -- 1.7.9.5 -- 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