[PATCH 4/4] mmc: host: sdhci: Add virtual command queue support

From: Baolin Wang
Date: Thu Sep 05 2019 - 23:53:10 EST


Add cqhci_virt_finalize_request() to help to complete a request
from virtual command queue.

Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxx>
---
drivers/mmc/host/sdhci.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 4e9ebc8..fb5983e 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -32,6 +32,7 @@
#include <linux/mmc/slot-gpio.h>

#include "sdhci.h"
+#include "cqhci.h"

#define DRIVER_NAME "sdhci"

@@ -2710,7 +2711,8 @@ static bool sdhci_request_done(struct sdhci_host *host)

spin_unlock_irqrestore(&host->lock, flags);

- mmc_request_done(host->mmc, mrq);
+ if (!cqhci_virt_finalize_request(host->mmc, mrq))
+ mmc_request_done(host->mmc, mrq);

return false;
}
@@ -3133,7 +3135,8 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)

/* Process mrqs ready for immediate completion */
for (i = 0; i < SDHCI_MAX_MRQS; i++) {
- if (mrqs_done[i])
+ if (mrqs_done[i] &&
+ !cqhci_virt_finalize_request(host->mmc, mrqs_done[i]))
mmc_request_done(host->mmc, mrqs_done[i]);
}

--
1.7.9.5