Commit fa021cef authored by Adrian Hunter's avatar Adrian Hunter Committed by Ulf Hansson

mmc: core: Simplify card drive strength mask

Card drive strength selection uses a callback to
which a mask of supported drive strengths is passed.
Currently, the bits are checked against the values
in the SD specifications. That is not necessary
because the callback will anyway match the mask
against a valid value. Simplify by taking the mask
as is but still ensuring that the default mandatory
value (type B) is always supported.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent b4f30a17
...@@ -387,8 +387,7 @@ int mmc_sd_switch_hs(struct mmc_card *card) ...@@ -387,8 +387,7 @@ int mmc_sd_switch_hs(struct mmc_card *card)
static int sd_select_driver_type(struct mmc_card *card, u8 *status) static int sd_select_driver_type(struct mmc_card *card, u8 *status)
{ {
int host_drv_type = SD_DRIVER_TYPE_B; int host_drv_type = SD_DRIVER_TYPE_B;
int card_drv_type = SD_DRIVER_TYPE_B; int card_drv_type, drive_strength, drv_type;
int drive_strength, drv_type;
int err; int err;
if (!card->host->ops->select_drive_strength) if (!card->host->ops->select_drive_strength)
...@@ -403,14 +402,7 @@ static int sd_select_driver_type(struct mmc_card *card, u8 *status) ...@@ -403,14 +402,7 @@ static int sd_select_driver_type(struct mmc_card *card, u8 *status)
if (card->host->caps & MMC_CAP_DRIVER_TYPE_D) if (card->host->caps & MMC_CAP_DRIVER_TYPE_D)
host_drv_type |= SD_DRIVER_TYPE_D; host_drv_type |= SD_DRIVER_TYPE_D;
if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_A) card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B;
card_drv_type |= SD_DRIVER_TYPE_A;
if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_C)
card_drv_type |= SD_DRIVER_TYPE_C;
if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_D)
card_drv_type |= SD_DRIVER_TYPE_D;
/* /*
* The drive strength that the hardware can support * The drive strength that the hardware can support
......
...@@ -403,8 +403,7 @@ static unsigned char host_drive_to_sdio_drive(int host_strength) ...@@ -403,8 +403,7 @@ static unsigned char host_drive_to_sdio_drive(int host_strength)
static void sdio_select_driver_type(struct mmc_card *card) static void sdio_select_driver_type(struct mmc_card *card)
{ {
int host_drv_type = SD_DRIVER_TYPE_B; int host_drv_type = SD_DRIVER_TYPE_B;
int card_drv_type = SD_DRIVER_TYPE_B; int card_drv_type, drive_strength, drv_type;
int drive_strength, drv_type;
unsigned char card_strength; unsigned char card_strength;
int err; int err;
...@@ -420,14 +419,7 @@ static void sdio_select_driver_type(struct mmc_card *card) ...@@ -420,14 +419,7 @@ static void sdio_select_driver_type(struct mmc_card *card)
if (card->host->caps & MMC_CAP_DRIVER_TYPE_D) if (card->host->caps & MMC_CAP_DRIVER_TYPE_D)
host_drv_type |= SD_DRIVER_TYPE_D; host_drv_type |= SD_DRIVER_TYPE_D;
if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_A) card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B;
card_drv_type |= SD_DRIVER_TYPE_A;
if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_C)
card_drv_type |= SD_DRIVER_TYPE_C;
if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_D)
card_drv_type |= SD_DRIVER_TYPE_D;
/* /*
* The drive strength that the hardware can support * The drive strength that the hardware can support
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment