mmc: sdio: Check the return value of sdio_enable_4bit_bus
authorShawn Lin <shawn.lin@rock-chips.com>
Tue, 27 Feb 2018 01:26:34 +0000 (09:26 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 15 Mar 2018 08:32:30 +0000 (09:32 +0100)
Since we could move card->host->caps & MMC_CAP_4_BIT_DATA
ahead of mmc_sdio_init_uhs_card, in mmc_host_uhs(). So there
we could save this bit to check that. Also, if the process of
sdio_enable_4bit_bus goes wrong, we should bails out early.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/sdio.c

index cc43687..c599a62 100644 (file)
@@ -518,11 +518,10 @@ static int mmc_sdio_init_uhs_card(struct mmc_card *card)
        if (!card->scr.sda_spec3)
                return 0;
 
-       /*
-        * Switch to wider bus (if supported).
-        */
-       if (card->host->caps & MMC_CAP_4_BIT_DATA)
-               err = sdio_enable_4bit_bus(card);
+       /* Switch to wider bus */
+       err = sdio_enable_4bit_bus(card);
+       if (err)
+               goto out;
 
        /* Set the driver strength for the card */
        sdio_select_driver_type(card);