Factor out mmc_hs400_to_hs() and __mmc_hs_to_hs200() so they can be re-used in a later patch. Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> --- drivers/mmc/core/mmc.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index a3fff994e6af..4f771c6088f7 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -1162,7 +1162,7 @@ int mmc_hs200_to_hs400(struct mmc_card *card) return mmc_select_hs400(card); } -int mmc_hs400_to_hs200(struct mmc_card *card) +static int mmc_hs400_to_hs(struct mmc_card *card) { struct mmc_host *host = card->host; bool send_status = true; @@ -1208,6 +1208,24 @@ int mmc_hs400_to_hs200(struct mmc_card *card) goto out_err; } + return 0; + +out_err: + pr_err("%s: %s failed, error %d\n", mmc_hostname(card->host), + __func__, err); + return err; +} + +static int __mmc_hs_to_hs200(struct mmc_card *card) +{ + struct mmc_host *host = card->host; + bool send_status = true; + int err; + u8 val; + + if (host->caps & MMC_CAP_WAIT_WHILE_BUSY) + send_status = false; + /* Switch HS to HS200 */ val = EXT_CSD_TIMING_HS200 | card->drive_strength << EXT_CSD_DRV_STR_SHIFT; @@ -1235,6 +1253,26 @@ out_err: return err; } +int mmc_hs400_to_hs200(struct mmc_card *card) +{ + int err; + + err = mmc_hs400_to_hs(card); + if (err) + goto out_err; + + err = __mmc_hs_to_hs200(card); + if (err) + goto out_err; + + return 0; + +out_err: + pr_err("%s: %s failed, error %d\n", mmc_hostname(card->host), + __func__, err); + return err; +} + static void mmc_select_driver_type(struct mmc_card *card) { int card_drv_type, drive_strength, drv_type; -- 1.9.1 -- 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