Message ID | 1598520783-25250-2-git-send-email-chun-hung.wu@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mmc: cqhci: Add pre_enable() and post_disable() hook function | expand |
On 27/08/20 12:33 pm, Chun-Hung Wu wrote: > Add pre_enable() and post_disable() for cqhci_host_ops. > Add hook functions before cqhci enable and > after cqhci disable for platforms need them. > > Signed-off-by: Chun-Hung Wu <chun-hung.wu@mediatek.com> Acked-by: Adrian Hunter <adrian.hunter@intel.com> > --- > drivers/mmc/host/cqhci.c | 6 ++++++ > drivers/mmc/host/cqhci.h | 2 ++ > 2 files changed, 8 insertions(+) > > diff --git a/drivers/mmc/host/cqhci.c b/drivers/mmc/host/cqhci.c > index cfa87df..697fe40 100644 > --- a/drivers/mmc/host/cqhci.c > +++ b/drivers/mmc/host/cqhci.c > @@ -376,6 +376,9 @@ static void cqhci_off(struct mmc_host *mmc) > else > pr_debug("%s: cqhci: CQE off\n", mmc_hostname(mmc)); > > + if (cq_host->ops->post_disable) > + cq_host->ops->post_disable(mmc); > + > mmc->cqe_on = false; > } > > @@ -580,6 +583,9 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq) > __cqhci_enable(cq_host); > > if (!mmc->cqe_on) { > + if (cq_host->ops->pre_enable) > + cq_host->ops->pre_enable(mmc); > + > cqhci_writel(cq_host, 0, CQHCI_CTL); > mmc->cqe_on = true; > pr_debug("%s: cqhci: CQE on\n", mmc_hostname(mmc)); > diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h > index 4377001..89bf6ad 100644 > --- a/drivers/mmc/host/cqhci.h > +++ b/drivers/mmc/host/cqhci.h > @@ -206,6 +206,8 @@ struct cqhci_host_ops { > void (*disable)(struct mmc_host *mmc, bool recovery); > void (*update_dcmd_desc)(struct mmc_host *mmc, struct mmc_request *mrq, > u64 *data); > + void (*pre_enable)(struct mmc_host *mmc); > + void (*post_disable)(struct mmc_host *mmc); > }; > > static inline void cqhci_writel(struct cqhci_host *host, u32 val, int reg) >
diff --git a/drivers/mmc/host/cqhci.c b/drivers/mmc/host/cqhci.c index cfa87df..697fe40 100644 --- a/drivers/mmc/host/cqhci.c +++ b/drivers/mmc/host/cqhci.c @@ -376,6 +376,9 @@ static void cqhci_off(struct mmc_host *mmc) else pr_debug("%s: cqhci: CQE off\n", mmc_hostname(mmc)); + if (cq_host->ops->post_disable) + cq_host->ops->post_disable(mmc); + mmc->cqe_on = false; } @@ -580,6 +583,9 @@ static int cqhci_request(struct mmc_host *mmc, struct mmc_request *mrq) __cqhci_enable(cq_host); if (!mmc->cqe_on) { + if (cq_host->ops->pre_enable) + cq_host->ops->pre_enable(mmc); + cqhci_writel(cq_host, 0, CQHCI_CTL); mmc->cqe_on = true; pr_debug("%s: cqhci: CQE on\n", mmc_hostname(mmc)); diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h index 4377001..89bf6ad 100644 --- a/drivers/mmc/host/cqhci.h +++ b/drivers/mmc/host/cqhci.h @@ -206,6 +206,8 @@ struct cqhci_host_ops { void (*disable)(struct mmc_host *mmc, bool recovery); void (*update_dcmd_desc)(struct mmc_host *mmc, struct mmc_request *mrq, u64 *data); + void (*pre_enable)(struct mmc_host *mmc); + void (*post_disable)(struct mmc_host *mmc); }; static inline void cqhci_writel(struct cqhci_host *host, u32 val, int reg)
Add pre_enable() and post_disable() for cqhci_host_ops. Add hook functions before cqhci enable and after cqhci disable for platforms need them. Signed-off-by: Chun-Hung Wu <chun-hung.wu@mediatek.com> --- drivers/mmc/host/cqhci.c | 6 ++++++ drivers/mmc/host/cqhci.h | 2 ++ 2 files changed, 8 insertions(+)