From 3853a042325e8f497c199020979c4fc824528c6e Mon Sep 17 00:00:00 2001 From: Adrian Hunter Date: Fri, 6 Feb 2015 14:12:56 +0200 Subject: [PATCH] mmc: core: Record card drive strength In preparation for adding drive strength support for eMMC, add drive_strength to struct mmc_card to record the card drive strength for UHS-I modes and HS200 / HS400. For eMMC this will be needed when switching between HS200 and HS400. Signed-off-by: Adrian Hunter Signed-off-by: Ulf Hansson --- drivers/mmc/core/sd.c | 3 +++ drivers/mmc/core/sdio.c | 3 +++ include/linux/mmc/card.h | 1 + 3 files changed, 7 insertions(+) diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index 9771b84db4b3..b99e25b9bcdc 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -389,6 +389,8 @@ static int sd_select_driver_type(struct mmc_card *card, u8 *status) int card_drv_type, drive_strength, drv_type; int err; + card->drive_strength = 0; + card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B; drive_strength = mmc_select_drive_strength(card, @@ -404,6 +406,7 @@ static int sd_select_driver_type(struct mmc_card *card, u8 *status) mmc_hostname(card->host)); return 0; } + card->drive_strength = drive_strength; } if (drv_type) diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index 73b091331c96..b91abedcfdca 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -406,6 +406,8 @@ static void sdio_select_driver_type(struct mmc_card *card) unsigned char card_strength; int err; + card->drive_strength = 0; + card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B; drive_strength = mmc_select_drive_strength(card, @@ -427,6 +429,7 @@ static void sdio_select_driver_type(struct mmc_card *card) card_strength, NULL); if (err) return; + card->drive_strength = drive_strength; } if (drv_type) diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 19f0175c0afa..2f073d555793 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h @@ -305,6 +305,7 @@ struct mmc_card { unsigned int sd_bus_speed; /* Bus Speed Mode set for the card */ unsigned int mmc_avail_type; /* supported device type by both host and card */ + unsigned int drive_strength; /* for UHS-I, HS200 or HS400 */ struct dentry *debugfs_root; struct mmc_part part[MMC_NUM_PHY_PARTITION]; /* physical partitions */ -- 2.20.1