diff options
Diffstat (limited to 'drivers/mmc/core')
-rw-r--r-- | drivers/mmc/core/sd.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index b2b43f624b9e..b0b9e372f5da 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c | |||
@@ -553,13 +553,13 @@ static int sd_set_bus_speed_mode(struct mmc_card *card, u8 *status) | |||
553 | 553 | ||
554 | static int sd_set_current_limit(struct mmc_card *card, u8 *status) | 554 | static int sd_set_current_limit(struct mmc_card *card, u8 *status) |
555 | { | 555 | { |
556 | int current_limit = 0; | 556 | int current_limit = SD_SET_CURRENT_NO_CHANGE; |
557 | int err; | 557 | int err; |
558 | 558 | ||
559 | /* | 559 | /* |
560 | * Current limit switch is only defined for SDR50, SDR104, and DDR50 | 560 | * Current limit switch is only defined for SDR50, SDR104, and DDR50 |
561 | * bus speed modes. For other bus speed modes, we set the default | 561 | * bus speed modes. For other bus speed modes, we do not change the |
562 | * current limit of 200mA. | 562 | * current limit. |
563 | */ | 563 | */ |
564 | if ((card->sd_bus_speed == UHS_SDR50_BUS_SPEED) || | 564 | if ((card->sd_bus_speed == UHS_SDR50_BUS_SPEED) || |
565 | (card->sd_bus_speed == UHS_SDR104_BUS_SPEED) || | 565 | (card->sd_bus_speed == UHS_SDR104_BUS_SPEED) || |
@@ -595,17 +595,18 @@ static int sd_set_current_limit(struct mmc_card *card, u8 *status) | |||
595 | if (card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_200) | 595 | if (card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_200) |
596 | current_limit = SD_SET_CURRENT_LIMIT_200; | 596 | current_limit = SD_SET_CURRENT_LIMIT_200; |
597 | } | 597 | } |
598 | } else | 598 | } |
599 | current_limit = SD_SET_CURRENT_LIMIT_200; | ||
600 | 599 | ||
601 | err = mmc_sd_switch(card, 1, 3, current_limit, status); | 600 | if (current_limit != SD_SET_CURRENT_NO_CHANGE) { |
602 | if (err) | 601 | err = mmc_sd_switch(card, 1, 3, current_limit, status); |
603 | return err; | 602 | if (err) |
603 | return err; | ||
604 | 604 | ||
605 | if (((status[15] >> 4) & 0x0F) != current_limit) | 605 | if (((status[15] >> 4) & 0x0F) != current_limit) |
606 | pr_warning("%s: Problem setting current limit!\n", | 606 | pr_warning("%s: Problem setting current limit!\n", |
607 | mmc_hostname(card->host)); | 607 | mmc_hostname(card->host)); |
608 | 608 | ||
609 | } | ||
609 | return 0; | 610 | return 0; |
610 | } | 611 | } |
611 | 612 | ||