Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eaa02f75 authored by Andrei Warkentin's avatar Andrei Warkentin Committed by Chris Ball
Browse files

mmc: core: Rename erase_timeout to cmd_timeout_ms.



Renames erase_timeout to cmd_timeout_ms inside struct mmc_command.
First step to making host honor timeouts for non-data-transfer
commands. Cleans up erase timeout code.

Signed-off-by: default avatarAndrei Warkentin <andreiw@motorola.com>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 853c6cac
Loading
Loading
Loading
Loading
+21 −18
Original line number Diff line number Diff line
@@ -1187,8 +1187,7 @@ void mmc_init_erase(struct mmc_card *card)
	}
}

static void mmc_set_mmc_erase_timeout(struct mmc_card *card,
				      struct mmc_command *cmd,
static unsigned int mmc_mmc_erase_timeout(struct mmc_card *card,
				          unsigned int arg, unsigned int qty)
{
	unsigned int erase_timeout;
@@ -1246,38 +1245,42 @@ static void mmc_set_mmc_erase_timeout(struct mmc_card *card,
	if (mmc_host_is_spi(card->host) && erase_timeout < 1000)
		erase_timeout = 1000;

	cmd->erase_timeout = erase_timeout;
	return erase_timeout;
}

static void mmc_set_sd_erase_timeout(struct mmc_card *card,
				     struct mmc_command *cmd, unsigned int arg,
static unsigned int mmc_sd_erase_timeout(struct mmc_card *card,
					 unsigned int arg,
					 unsigned int qty)
{
	unsigned int erase_timeout;

	if (card->ssr.erase_timeout) {
		/* Erase timeout specified in SD Status Register (SSR) */
		cmd->erase_timeout = card->ssr.erase_timeout * qty +
		erase_timeout = card->ssr.erase_timeout * qty +
				card->ssr.erase_offset;
	} else {
		/*
		 * Erase timeout not specified in SD Status Register (SSR) so
		 * use 250ms per write block.
		 */
		cmd->erase_timeout = 250 * qty;
		erase_timeout = 250 * qty;
	}

	/* Must not be less than 1 second */
	if (cmd->erase_timeout < 1000)
		cmd->erase_timeout = 1000;
	if (erase_timeout < 1000)
		erase_timeout = 1000;

	return erase_timeout;
}

static void mmc_set_erase_timeout(struct mmc_card *card,
				  struct mmc_command *cmd, unsigned int arg,
static unsigned int mmc_erase_timeout(struct mmc_card *card,
				      unsigned int arg,
				      unsigned int qty)
{
	if (mmc_card_sd(card))
		mmc_set_sd_erase_timeout(card, cmd, arg, qty);
		return mmc_sd_erase_timeout(card, arg, qty);
	else
		mmc_set_mmc_erase_timeout(card, cmd, arg, qty);
		return mmc_mmc_erase_timeout(card, arg, qty);
}

static int mmc_do_erase(struct mmc_card *card, unsigned int from,
@@ -1351,7 +1354,7 @@ static int mmc_do_erase(struct mmc_card *card, unsigned int from,
	cmd.opcode = MMC_ERASE;
	cmd.arg = arg;
	cmd.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
	mmc_set_erase_timeout(card, &cmd, arg, qty);
	cmd.cmd_timeout_ms = mmc_erase_timeout(card, arg, qty);
	err = mmc_wait_for_cmd(card->host, &cmd, 0);
	if (err) {
		printk(KERN_ERR "mmc_erase: erase error %d, status %#x\n",
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ struct mmc_command {
 *              actively failing requests
 */

	unsigned int		erase_timeout;	/* in milliseconds */
	unsigned int		cmd_timeout_ms;	/* in milliseconds */

	struct mmc_data		*data;		/* data segment associated with cmd */
	struct mmc_request	*mrq;		/* associated request */