[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <974a2a211fa97a885ffbdedbb8d596cd4cb57e80.1578560282.git.benchuanggli@gmail.com>
Date: Thu, 9 Jan 2020 17:14:53 +0800
From: Ben Chuang <benchuanggli@...il.com>
To: adrian.hunter@...el.com, ulf.hansson@...aro.org
Cc: linux-mmc@...r.kernel.org, linux-kernel@...r.kernel.org,
greg.tu@...esyslogic.com.tw, ben.chuang@...esyslogic.com.tw,
Ben Chuang <benchuanggli@...il.com>
Subject: [RFC PATCH v2 4/6] mmc: uhs2: Introduce a uhs2_post_attach_sd function
From: Ben Chuang <ben.chuang@...esyslogic.com.tw>
Introduce a uhs2_post_attach_sd function after attach_sd on
UHS-II mode.
Signed-off-by: Ben Chuang <ben.chuang@...esyslogic.com.tw>
---
drivers/mmc/core/uhs2.c | 5 ++++-
drivers/mmc/host/sdhci-core.c | 9 +++++++++
drivers/mmc/host/sdhci.h | 1 +
include/linux/mmc/host.h | 1 +
4 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/core/uhs2.c b/drivers/mmc/core/uhs2.c
index 43ea155ccc59..99aeeccd88e5 100644
--- a/drivers/mmc/core/uhs2.c
+++ b/drivers/mmc/core/uhs2.c
@@ -935,8 +935,11 @@ int mmc_uhs2_try_frequency(struct mmc_host *host, unsigned int freq)
*/
err = mmc_attach_sd(host, true);
- if (!err)
+ if (!err) {
+ if (host->ops->uhs2_post_attach_sd)
+ host->ops->uhs2_post_attach_sd(host);
return 0;
+ }
init_fail:
mmc_power_off(host);
diff --git a/drivers/mmc/host/sdhci-core.c b/drivers/mmc/host/sdhci-core.c
index 82184684f963..d7b2535a847a 100644
--- a/drivers/mmc/host/sdhci-core.c
+++ b/drivers/mmc/host/sdhci-core.c
@@ -2778,6 +2778,14 @@ void sdhci_uhs2_enable_clk(struct mmc_host *mmc)
}
EXPORT_SYMBOL_GPL(sdhci_uhs2_enable_clk);
+static void sdhci_uhs2_post_attach_sd(struct mmc_host *mmc)
+{
+ struct sdhci_host *host = mmc_priv(mmc);
+
+ if (host->ops && host->ops->uhs2_post_attach_sd)
+ host->ops->uhs2_post_attach_sd(host);
+}
+
static const struct mmc_host_ops sdhci_ops = {
.request = sdhci_request,
.post_req = sdhci_post_req,
@@ -2797,6 +2805,7 @@ static const struct mmc_host_ops sdhci_ops = {
.uhs2_set_reg = sdhci_uhs2_set_reg,
.uhs2_disable_clk = sdhci_uhs2_disable_clk,
.uhs2_enable_clk = sdhci_uhs2_enable_clk,
+ .uhs2_post_attach_sd = sdhci_uhs2_post_attach_sd,
};
/*****************************************************************************\
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 2f7732f4bb75..7f779ac81931 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -906,6 +906,7 @@ struct sdhci_ops {
void (*voltage_switch)(struct sdhci_host *host);
void (*adma_write_desc)(struct sdhci_host *host, void **desc,
dma_addr_t addr, int len, unsigned int cmd);
+ void (*uhs2_post_attach_sd)(struct sdhci_host *host);
};
#ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 3d6a7c9b534f..ed4ebe6bf68a 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -177,6 +177,7 @@ struct mmc_host_ops {
int (*uhs2_set_reg)(struct mmc_host *host, enum uhs2_act act);
void (*uhs2_disable_clk)(struct mmc_host *host);
void (*uhs2_enable_clk)(struct mmc_host *host);
+ void (*uhs2_post_attach_sd)(struct mmc_host *host);
};
struct mmc_cqe_ops {
--
2.24.1
Powered by blists - more mailing lists