[PATCH v2 1/2] mci: drop unused parameter from mci_switch()

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Fri Jan 19 05:28:24 PST 2018


The SWITCH command has two purposes:
 a) switch the command set
 b) Write to the EXT_CSD register

If the access field (bits [25:24]) in the argument are b00, we're in
case a), otherwise in b). As mci_switch() always passes
MMC_SWITCH_MODE_WRITE_BYTE (0b3) in the access field, only case b) is
relevant here. According to the eMMC specification[1] the command set
field is ignored in case b) and so the respective parameter (that is
unused already now) can be dropped.

[1] Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1),
    February 2015; paragraph 6.6.1

Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
---
 commands/mmc_extcsd.c  |  2 +-
 drivers/mci/mci-core.c | 16 ++++++----------
 include/mci.h          |  3 +--
 3 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/commands/mmc_extcsd.c b/commands/mmc_extcsd.c
index 7a6d39075da0..acd23a466bcb 100644
--- a/commands/mmc_extcsd.c
+++ b/commands/mmc_extcsd.c
@@ -2357,7 +2357,7 @@ static void write_field(struct mci *mci, u8 *reg, u16 index, u8 value,
 		break;
 	}
 
-	mci_switch(mci, 0, index, value);
+	mci_switch(mci, index, value);
 
 out:
 	return;
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 07911d43d703..3da96f42aaf9 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -396,8 +396,7 @@ int mci_send_ext_csd(struct mci *mci, char *ext_csd)
  * @param value FIXME
  * @return Transaction status (0 on success)
  */
-int mci_switch(struct mci *mci, unsigned set, unsigned index,
-			unsigned value)
+int mci_switch(struct mci *mci, unsigned index, unsigned value)
 {
 	struct mci_cmd cmd;
 
@@ -471,7 +470,7 @@ static int mmc_change_freq(struct mci *mci)
 
 	cardtype = mci->ext_csd[EXT_CSD_DEVICE_TYPE] & EXT_CSD_CARD_TYPE_MASK;
 
-	err = mci_switch(mci, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, 1);
+	err = mci_switch(mci, EXT_CSD_HS_TIMING, 1);
 
 	if (err) {
 		dev_dbg(&mci->dev, "MMC frequency changing failed: %d\n", err);
@@ -1044,9 +1043,7 @@ static int mci_startup_mmc(struct mci *mci)
 		 * 4bit transfer mode. On success set the corresponding
 		 * bus width on the host.
 		 */
-		err = mci_switch(mci, EXT_CSD_CMD_SET_NORMAL,
-				 EXT_CSD_BUS_WIDTH,
-				 ext_csd_bits[idx]);
+		err = mci_switch(mci, EXT_CSD_BUS_WIDTH, ext_csd_bits[idx]);
 		if (err) {
 			if (idx == 0)
 				dev_warn(&mci->dev, "Changing MMC bus width failed: %d\n", err);
@@ -1253,8 +1250,7 @@ static int mci_blk_part_switch(struct mci_part *part)
 		part_config &= ~EXT_CSD_PART_CONFIG_ACC_MASK;
 		part_config |= part->part_cfg;
 
-		ret = mci_switch(mci, EXT_CSD_CMD_SET_NORMAL,
-				EXT_CSD_PARTITION_CONFIG, part_config);
+		ret = mci_switch(mci, EXT_CSD_PARTITION_CONFIG, part_config);
 		if (ret)
 			return ret;
 
@@ -1568,8 +1564,8 @@ static int mci_set_boot(struct param_d *param, void *priv)
 	mci->ext_csd_part_config &= ~(7 << 3);
 	mci->ext_csd_part_config |= mci->bootpart << 3;
 
-	return mci_switch(mci, EXT_CSD_CMD_SET_NORMAL,
-			EXT_CSD_PARTITION_CONFIG, mci->ext_csd_part_config);
+	return mci_switch(mci,
+			  EXT_CSD_PARTITION_CONFIG, mci->ext_csd_part_config);
 }
 
 static const char *mci_boot_names[] = {
diff --git a/include/mci.h b/include/mci.h
index d3115e8cc68f..827eecd39f8d 100644
--- a/include/mci.h
+++ b/include/mci.h
@@ -477,8 +477,7 @@ void mci_of_parse(struct mci_host *host);
 void mci_of_parse_node(struct mci_host *host, struct device_node *np);
 int mci_detect_card(struct mci_host *);
 int mci_send_ext_csd(struct mci *mci, char *ext_csd);
-int mci_switch(struct mci *mci, unsigned set, unsigned index,
-			unsigned value);
+int mci_switch(struct mci *mci, unsigned index, unsigned value);
 
 static inline int mmc_host_is_spi(struct mci_host *host)
 {
-- 
2.11.0




More information about the barebox mailing list