aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/core/mmc_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc/core/mmc_ops.c')
-rw-r--r--drivers/mmc/core/mmc_ops.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index f3b22bf89cc..a2bae625332 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -387,7 +387,19 @@ int mmc_spi_set_crc(struct mmc_host *host, int use_crc)
387 return err; 387 return err;
388} 388}
389 389
390int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value) 390/**
391 * mmc_switch - modify EXT_CSD register
392 * @card: the MMC card associated with the data transfer
393 * @set: cmd set values
394 * @index: EXT_CSD register index
395 * @value: value to program into EXT_CSD register
396 * @timeout_ms: timeout (ms) for operation performed by register write,
397 * timeout of zero implies maximum possible timeout
398 *
399 * Modifies the EXT_CSD register for selected card.
400 */
401int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
402 unsigned int timeout_ms)
391{ 403{
392 int err; 404 int err;
393 struct mmc_command cmd; 405 struct mmc_command cmd;
@@ -404,6 +416,7 @@ int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value)
404 (value << 8) | 416 (value << 8) |
405 set; 417 set;
406 cmd.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC; 418 cmd.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
419 cmd.cmd_timeout_ms = timeout_ms;
407 420
408 err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES); 421 err = mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES);
409 if (err) 422 if (err)
@@ -433,6 +446,7 @@ int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value)
433 446
434 return 0; 447 return 0;
435} 448}
449EXPORT_SYMBOL_GPL(mmc_switch);
436 450
437int mmc_send_status(struct mmc_card *card, u32 *status) 451int mmc_send_status(struct mmc_card *card, u32 *status)
438{ 452{