Skip to content

Commit

Permalink
mmc: core: Simplify card drive strength mask
Browse files Browse the repository at this point in the history
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: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
  • Loading branch information
Adrian Hunter authored and Ulf Hansson committed Jun 1, 2015
1 parent b4f30a1 commit fa021ce
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 20 deletions.
12 changes: 2 additions & 10 deletions drivers/mmc/core/sd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
int host_drv_type = SD_DRIVER_TYPE_B;
int card_drv_type = SD_DRIVER_TYPE_B;
int drive_strength, drv_type;
int card_drv_type, drive_strength, drv_type;
int err;

if (!card->host->ops->select_drive_strength)
Expand All @@ -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)
host_drv_type |= SD_DRIVER_TYPE_D;

if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_A)
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;
card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B;

/*
* The drive strength that the hardware can support
Expand Down
12 changes: 2 additions & 10 deletions drivers/mmc/core/sdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
int host_drv_type = SD_DRIVER_TYPE_B;
int card_drv_type = SD_DRIVER_TYPE_B;
int drive_strength, drv_type;
int card_drv_type, drive_strength, drv_type;
unsigned char card_strength;
int err;

Expand All @@ -420,14 +419,7 @@ static void sdio_select_driver_type(struct mmc_card *card)
if (card->host->caps & MMC_CAP_DRIVER_TYPE_D)
host_drv_type |= SD_DRIVER_TYPE_D;

if (card->sw_caps.sd3_drv_type & SD_DRIVER_TYPE_A)
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;
card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B;

/*
* The drive strength that the hardware can support
Expand Down

0 comments on commit fa021ce

Please sign in to comment.