All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Ott <alan@softiron.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] mmc: pic32_sdhci: Complete the transition to driver model
Date: Tue, 20 Jun 2017 23:23:18 -0400	[thread overview]
Message-ID: <20170621032318.31285-1-alan@softiron.com> (raw)

Previously this driver appeared to have been half-way converted to the new
driver model and did not work at all.

Complete the transition to the driver model, adding the necessary
connections.

Signed-off-by: Alan Ott <alan@softiron.com>
---
 configs/pic32mzdask_defconfig |  1 -
 drivers/mmc/Kconfig           |  2 +-
 drivers/mmc/pic32_sdhci.c     | 31 ++++++++++++++++++++++++++-----
 3 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/configs/pic32mzdask_defconfig b/configs/pic32mzdask_defconfig
index 688b989..afb1bdb 100644
--- a/configs/pic32mzdask_defconfig
+++ b/configs/pic32mzdask_defconfig
@@ -25,7 +25,6 @@ CONFIG_CMD_EXT4_WRITE=y
 # CONFIG_EFI_PARTITION is not set
 CONFIG_OF_EMBED=y
 CONFIG_NET_RANDOM_ETHADDR=y
-# CONFIG_BLK is not set
 CONFIG_CLK=y
 CONFIG_DM_GPIO=y
 CONFIG_MMC=y
diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 0dd4443..b70775d 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -274,7 +274,7 @@ config MMC_SDHCI_MV
 
 config MMC_SDHCI_PIC32
 	bool "Microchip PIC32 on-chip SDHCI support"
-	depends on DM_MMC && MACH_PIC32
+	depends on DM_MMC && BLK && DM_MMC_OPS && MACH_PIC32
 	depends on MMC_SDHCI
 	help
 	  Support for Microchip PIC32 SDHCI controller.
diff --git a/drivers/mmc/pic32_sdhci.c b/drivers/mmc/pic32_sdhci.c
index 212e22e..fc6d7f3 100644
--- a/drivers/mmc/pic32_sdhci.c
+++ b/drivers/mmc/pic32_sdhci.c
@@ -15,6 +15,11 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+struct pic32_sdhci_plat {
+	struct mmc_config cfg;
+	struct mmc mmc;
+};
+
 static int pic32_sdhci_get_cd(struct sdhci_host *host)
 {
 	/* PIC32 SDHCI CD errata:
@@ -31,6 +36,8 @@ static const struct sdhci_ops pic32_sdhci_ops = {
 
 static int pic32_sdhci_probe(struct udevice *dev)
 {
+	struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
+	struct pic32_sdhci_plat *plat = dev_get_platdata(dev);
 	struct sdhci_host *host = dev_get_priv(dev);
 	const void *fdt = gd->fdt_blob;
 	u32 f_min_max[2];
@@ -56,14 +63,25 @@ static int pic32_sdhci_probe(struct udevice *dev)
 		return ret;
 	}
 
-	host->max_clk   = f_min_max[1];
-
-	ret = add_sdhci(host, 0, f_min_max[0]);
-	if (ret)
+	ret = sdhci_setup_cfg(&plat->cfg, host, /*max*/0, /*min*/f_min_max[0]);
+	if (ret) {
+		printf("pic32_sdhci: sdhci_setup_cfg() failed\n");
 		return ret;
+	}
+
+	host->mmc = &plat->mmc;
 	host->mmc->dev = dev;
+	host->mmc->priv = host;
+	upriv->mmc = host->mmc;
 
-	return 0;
+	return sdhci_probe(dev);
+}
+
+static int pic32_sdhci_bind(struct udevice *dev)
+{
+	struct pic32_sdhci_plat *plat = dev_get_platdata(dev);
+
+	return sdhci_bind(dev, &plat->mmc, &plat->cfg);
 }
 
 static const struct udevice_id pic32_sdhci_ids[] = {
@@ -75,6 +93,9 @@ U_BOOT_DRIVER(pic32_sdhci_drv) = {
 	.name			= "pic32_sdhci",
 	.id			= UCLASS_MMC,
 	.of_match		= pic32_sdhci_ids,
+	.ops                    = &sdhci_ops,
+	.bind                   = pic32_sdhci_bind,
 	.probe			= pic32_sdhci_probe,
 	.priv_auto_alloc_size	= sizeof(struct sdhci_host),
+	.platdata_auto_alloc_size = sizeof(struct pic32_sdhci_plat),
 };
-- 
2.9.3

             reply	other threads:[~2017-06-21  3:23 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20170621032345epcas2p4cb9c7cfcf97e58d7dc20471faa1e28d0@epcas2p4.samsung.com>
2017-06-21  3:23 ` Alan Ott [this message]
2017-06-30  4:00   ` [U-Boot] [PATCH] mmc: pic32_sdhci: Complete the transition to driver model Jaehoon Chung
2017-06-30  5:51     ` Masahiro Yamada
2017-06-30 21:30     ` Alan Ott
2017-07-02 23:47       ` Jaehoon Chung
2017-07-08 19:58   ` [U-Boot] [PATCH v2] " Alan Ott
2017-07-10  9:17     ` Jaehoon Chung
2017-07-17 11:05       ` Jaehoon Chung

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170621032318.31285-1-alan@softiron.com \
    --to=alan@softiron.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.