mmc: host: sdhci: Add request_done ops for struct sdhci_ops
Add request_done ops for struct sdhci_ops as a preparation in case some host controllers have different method to complete one request, such as supporting request completion of MMC software queue. Suggested-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Baolin Wang <baolin.wang7@gmail.com> Link: https://lore.kernel.org/r/1539c801c8bbdbcd1d86f8c2dab375f5803c765a.1581478568.git.baolin.wang7@gmail.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
045d705dc1
commit
1774b00214
|
@ -2944,7 +2944,10 @@ static bool sdhci_request_done(struct sdhci_host *host)
|
||||||
|
|
||||||
spin_unlock_irqrestore(&host->lock, flags);
|
spin_unlock_irqrestore(&host->lock, flags);
|
||||||
|
|
||||||
mmc_request_done(host->mmc, mrq);
|
if (host->ops->request_done)
|
||||||
|
host->ops->request_done(host, mrq);
|
||||||
|
else
|
||||||
|
mmc_request_done(host->mmc, mrq);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -3372,7 +3375,12 @@ out:
|
||||||
|
|
||||||
/* Process mrqs ready for immediate completion */
|
/* Process mrqs ready for immediate completion */
|
||||||
for (i = 0; i < SDHCI_MAX_MRQS; i++) {
|
for (i = 0; i < SDHCI_MAX_MRQS; i++) {
|
||||||
if (mrqs_done[i])
|
if (!mrqs_done[i])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (host->ops->request_done)
|
||||||
|
host->ops->request_done(host, mrqs_done[i]);
|
||||||
|
else
|
||||||
mmc_request_done(host->mmc, mrqs_done[i]);
|
mmc_request_done(host->mmc, mrqs_done[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -654,6 +654,8 @@ struct sdhci_ops {
|
||||||
void (*voltage_switch)(struct sdhci_host *host);
|
void (*voltage_switch)(struct sdhci_host *host);
|
||||||
void (*adma_write_desc)(struct sdhci_host *host, void **desc,
|
void (*adma_write_desc)(struct sdhci_host *host, void **desc,
|
||||||
dma_addr_t addr, int len, unsigned int cmd);
|
dma_addr_t addr, int len, unsigned int cmd);
|
||||||
|
void (*request_done)(struct sdhci_host *host,
|
||||||
|
struct mmc_request *mrq);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
|
#ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
|
||||||
|
|
Loading…
Reference in New Issue