Sadly, due to HW bugs, we need a callback to work around issues just
before completing the request.

Signed-off-by: Wolfram Sang <[email protected]>
---
 drivers/mmc/host/tmio_mmc.h      | 1 +
 drivers/mmc/host/tmio_mmc_core.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index c5ba13fae399..be9d62e30817 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -178,6 +178,7 @@ struct tmio_mmc_host {
        void (*hw_reset)(struct tmio_mmc_host *host);
        void (*prepare_tuning)(struct tmio_mmc_host *host, unsigned long tap);
        bool (*check_scc_error)(struct tmio_mmc_host *host);
+       void (*fixup_request)(struct tmio_mmc_host *host, struct mmc_request 
*mrq);
 
        /*
         * Mandatory callback for tuning to occur which is optional for SDR50
diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
index 2cb3f951c3e2..31ffcc32c580 100644
--- a/drivers/mmc/host/tmio_mmc_core.c
+++ b/drivers/mmc/host/tmio_mmc_core.c
@@ -852,6 +852,9 @@ static void tmio_mmc_finish_request(struct tmio_mmc_host 
*host)
                return;
        }
 
+       if (host->fixup_request)
+               host->fixup_request(host, mrq);
+
        mmc_request_done(host->mmc, mrq);
 }
 
-- 
2.20.1

Reply via email to