Thread (1 message) 1 message, 1 author, 2016-06-14

Re: [PATCH 09/12] mmc: sdhci-xenon: add initial Xenon eMMC driver

From: Gregory CLEMENT <hidden>
Date: 2016-06-14 08:19:12
Also in: linux-arm-kernel, linux-mmc

Hi Adrian,
 
 On mar., juin 14 2016, Adrian Hunter [off-list ref] wrote:
On 09/06/16 10:10, Gregory CLEMENT wrote:
quoted
From: Victor Gu <redacted>

This path adds the driver for the Marvell Xenon eMMC host controller
which supports eMMC 5.1, SD 3.0.

However this driver supports only up to eMMC 5.0 since the command queue
feature is not included (yet) in the driver.

[gregory.clement@free-electrons.com:
 - reformulate commit log
 - overload the sdhci_set_uhs_signaling function instead of using a quirk
 - fix a kconfig dependency
 - remove dead code]

Signed-off-by: Victor Gu <redacted>
Signed-off-by: Gregory CLEMENT <redacted>
---
 drivers/mmc/host/Kconfig       |   10 +
 drivers/mmc/host/Makefile      |    1 +
 drivers/mmc/host/sdhci-xenon.c | 1164 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1175 insertions(+)
 create mode 100644 drivers/mmc/host/sdhci-xenon.c
<SNIP>
quoted
diff --git a/drivers/mmc/host/sdhci-xenon.c b/drivers/mmc/host/sdhci-xenon.c
new file mode 100644
index 000000000000..43c06db95872
--- /dev/null
+++ b/drivers/mmc/host/sdhci-xenon.c
<SNIP>
quoted
+static int sdhci_xenon_delay_adj_test(struct sdhci_host *host,
+		struct mmc_card *card, unsigned int delay,
+		bool invert, bool phase)
+{
+	int ret;
+	struct mmc_card *oldcard;
+
+	sdhci_xenon_set_fix_delay(host, delay, invert, phase);
+
+	/*
+	 * If the card is not yet associated to the host, we
+	 * temporally do it
+	 */
+	oldcard = card->host->card;
+	if (!oldcard)
+		card->host->card = card;
+	ret =  card_alive(card);
This looks like an abuse of bus_ops->alive().  You will need to get
agreement with Ulf how to handle this.  I will wait for Ulf's comments
before reviewing this patch set further.
Actually I modified this part of the driver to use
bus_ops->alive(). Initially, the alive() code was more or less copied
and paste from the mmc core with ugly include from mmc_ops.h and
sdio_ops.h to make it work. I find it cleaner to directly access the
alive() function.

Could you explain why it is an abuse of  bus_ops->alive()?

Thanks,

Gregory

quoted
+	card->host->card = oldcard;
+	if (ret) {
+		pr_debug("Xenon failed when sampling fix delay %d, inverted %d, phase %d\n",
+			 delay, invert, phase);
+		return -EIO;
+	}
+
+	pr_debug("Xenon succeeded when sampling fixed delay %d, inverted %d, phase %d\n",
+		 delay, invert, phase);
+	return 0;
+}
-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help