mmc: sdhci: Simplify sdhci_finish_command() by clearing host->cmd at the start
sdhci_finish_command() is going to set host->cmd to NULL. Simplify the code by using a local variable to hold host->cmd and set host->cmd to NULL at the start. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
64ed8dd46b
commit
e0a5640a99
|
@ -1054,21 +1054,24 @@ EXPORT_SYMBOL_GPL(sdhci_send_command);
|
||||||
|
|
||||||
static void sdhci_finish_command(struct sdhci_host *host)
|
static void sdhci_finish_command(struct sdhci_host *host)
|
||||||
{
|
{
|
||||||
|
struct mmc_command *cmd = host->cmd;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (host->cmd->flags & MMC_RSP_PRESENT) {
|
host->cmd = NULL;
|
||||||
if (host->cmd->flags & MMC_RSP_136) {
|
|
||||||
|
if (cmd->flags & MMC_RSP_PRESENT) {
|
||||||
|
if (cmd->flags & MMC_RSP_136) {
|
||||||
/* CRC is stripped so we need to do some shifting. */
|
/* CRC is stripped so we need to do some shifting. */
|
||||||
for (i = 0;i < 4;i++) {
|
for (i = 0;i < 4;i++) {
|
||||||
host->cmd->resp[i] = sdhci_readl(host,
|
cmd->resp[i] = sdhci_readl(host,
|
||||||
SDHCI_RESPONSE + (3-i)*4) << 8;
|
SDHCI_RESPONSE + (3-i)*4) << 8;
|
||||||
if (i != 3)
|
if (i != 3)
|
||||||
host->cmd->resp[i] |=
|
cmd->resp[i] |=
|
||||||
sdhci_readb(host,
|
sdhci_readb(host,
|
||||||
SDHCI_RESPONSE + (3-i)*4-1);
|
SDHCI_RESPONSE + (3-i)*4-1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
host->cmd->resp[0] = sdhci_readl(host, SDHCI_RESPONSE);
|
cmd->resp[0] = sdhci_readl(host, SDHCI_RESPONSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1082,21 +1085,19 @@ static void sdhci_finish_command(struct sdhci_host *host)
|
||||||
* feature so there might be some problems with older
|
* feature so there might be some problems with older
|
||||||
* controllers.
|
* controllers.
|
||||||
*/
|
*/
|
||||||
if (host->cmd->flags & MMC_RSP_BUSY) {
|
if (cmd->flags & MMC_RSP_BUSY) {
|
||||||
if (host->cmd->data) {
|
if (cmd->data) {
|
||||||
DBG("Cannot wait for busy signal when also doing a data transfer");
|
DBG("Cannot wait for busy signal when also doing a data transfer");
|
||||||
} else if (!(host->quirks & SDHCI_QUIRK_NO_BUSY_IRQ) &&
|
} else if (!(host->quirks & SDHCI_QUIRK_NO_BUSY_IRQ) &&
|
||||||
!host->busy_handle) {
|
!host->busy_handle) {
|
||||||
/* Mark that command complete before busy is ended */
|
/* Mark that command complete before busy is ended */
|
||||||
host->busy_handle = 1;
|
host->busy_handle = 1;
|
||||||
host->cmd = NULL;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Finished CMD23, now send actual command. */
|
/* Finished CMD23, now send actual command. */
|
||||||
if (host->cmd == host->mrq->sbc) {
|
if (cmd == host->mrq->sbc) {
|
||||||
host->cmd = NULL;
|
|
||||||
sdhci_send_command(host, host->mrq->cmd);
|
sdhci_send_command(host, host->mrq->cmd);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -1104,10 +1105,8 @@ static void sdhci_finish_command(struct sdhci_host *host)
|
||||||
if (host->data && host->data_early)
|
if (host->data && host->data_early)
|
||||||
sdhci_finish_data(host);
|
sdhci_finish_data(host);
|
||||||
|
|
||||||
if (!host->cmd->data)
|
if (!cmd->data)
|
||||||
tasklet_schedule(&host->finish_tasklet);
|
tasklet_schedule(&host->finish_tasklet);
|
||||||
|
|
||||||
host->cmd = NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue