diff --git a/drivers/mmc/host/cmdq_hci.c b/drivers/mmc/host/cmdq_hci.c index dc8e19fd1441..2bf9330399a2 100644 --- a/drivers/mmc/host/cmdq_hci.c +++ b/drivers/mmc/host/cmdq_hci.c @@ -674,6 +674,8 @@ irqreturn_t cmdq_irq(struct mmc_host *mmc, int err) } if (status & CQIS_HAC) { + if (cq_host->ops->post_cqe_halt) + cq_host->ops->post_cqe_halt(mmc); /* halt is completed, wakeup waiting thread */ complete(&cq_host->halt_comp); } diff --git a/drivers/mmc/host/cmdq_hci.h b/drivers/mmc/host/cmdq_hci.h index 05c622c057e8..100b3177e4c7 100644 --- a/drivers/mmc/host/cmdq_hci.h +++ b/drivers/mmc/host/cmdq_hci.h @@ -201,6 +201,7 @@ struct cmdq_host_ops { int (*reset)(struct mmc_host *mmc); int (*crypto_cfg)(struct mmc_host *mmc, struct mmc_request *mrq, u32 slot); + void (*post_cqe_halt)(struct mmc_host *mmc); }; static inline void cmdq_writel(struct cmdq_host *host, u32 val, int reg)