On Sun, 12 Apr 2020 at 11:04, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > > Hi > > Here are some patches to reduce maximum time under spinlock in > sdhci_send_command(), but also pave the way for an atomic request > function. > > I haven't tried it, but with these patches, something like below > should work. > > > > static int sdhci_atomic_request(struct mmc_host *mmc, > struct mmc_request *mrq) > { > struct sdhci_host *host = mmc_priv(mmc); > struct mmc_command *cmd; > unsigned long flags; > int ret = 0; > > spin_lock_irqsave(&host->lock, flags); > > if (sdhci_present_error(host, mrq->cmd, true)) > goto out_finish; > > cmd = sdhci_manual_cmd23(host, mrq) ? mrq->sbc : mrq->cmd; > > if (sdhci_send_command(host, cmd)) > sdhci_led_activate(host); > else > ret = -EBUSY; > > spin_unlock_irqrestore(&host->lock, flags); > > return ret; > > out_finish: > sdhci_finish_mrq(host, mrq); > spin_unlock_irqrestore(&host->lock, flags); > return 0; > } > > > > Adrian Hunter (5): > mmc: sdhci: Add helpers for the auto-CMD23 flag > mmc: sdhci: Stop exporting sdhci_send_command() > mmc: sdhci: Remove unneeded forward declaration of sdhci_finish_data() > mmc: sdhci: Tidy sdhci_request() a bit > mmc: sdhci: Reduce maximum time under spinlock in sdhci_send_command() > > drivers/mmc/host/sdhci.c | 182 +++++++++++++++++++++++++++++++++++------------ > drivers/mmc/host/sdhci.h | 2 +- > 2 files changed, 139 insertions(+), 45 deletions(-) > Applied for next, thanks! Kind regards Uffe