From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver
Date: Tue, 14 Feb 2017 17:18:48 +0300 [thread overview]
Message-ID: <20170214141848.115488-1-andriy.shevchenko@linux.intel.com> (raw)
From: Felipe Balbi <felipe.balbi@linux.intel.com>
This patch adds Intel Tangier eMMC/SDHCI driver.
Signed-off-by: Vincent Tinelli <vincent.tinelli@intel.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/mmc/Kconfig | 5 ++++
drivers/mmc/Makefile | 1 +
drivers/mmc/tangier_sdhci.c | 73 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 79 insertions(+)
create mode 100644 drivers/mmc/tangier_sdhci.c
diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 01d1dbfb1b..42a44f9888 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -310,6 +310,11 @@ config MMC_SDHCI_XENON
If unsure, say N.
+config MMC_SDHCI_TANGIER
+ bool "Tangier SDHCI controller supprt"
+ depends on DM_MMC && BLK && DM_MMC_OPS
+ depends on MMC_SDHCI
+
config MMC_SDHCI_TEGRA
bool "SDHCI platform support for the Tegra SD/MMC Controller"
depends on TEGRA
diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
index ef27d55088..019b587441 100644
--- a/drivers/mmc/Makefile
+++ b/drivers/mmc/Makefile
@@ -63,6 +63,7 @@ obj-$(CONFIG_MMC_SDHCI_PIC32) += pic32_sdhci.o
obj-$(CONFIG_MMC_SDHCI_ROCKCHIP) += rockchip_sdhci.o
obj-$(CONFIG_MMC_SDHCI_S5P) += s5p_sdhci.o
obj-$(CONFIG_MMC_SDHCI_SPEAR) += spear_sdhci.o
+obj-$(CONFIG_MMC_SDHCI_TANGIER) += tangier_sdhci.o
obj-$(CONFIG_MMC_SDHCI_TEGRA) += tegra_mmc.o
obj-$(CONFIG_MMC_SDHCI_XENON) += xenon_sdhci.o
obj-$(CONFIG_MMC_SDHCI_ZYNQ) += zynq_sdhci.o
diff --git a/drivers/mmc/tangier_sdhci.c b/drivers/mmc/tangier_sdhci.c
new file mode 100644
index 0000000000..6a8a6270a9
--- /dev/null
+++ b/drivers/mmc/tangier_sdhci.c
@@ -0,0 +1,73 @@
+#include <common.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+#include <mmc.h>
+#include <dm.h>
+#include <dm/device.h>
+#include <malloc.h>
+#include <sdhci.h>
+
+struct sdhci_tangier_plat {
+ struct mmc_config cfg;
+ struct mmc mmc;
+ void __iomem *ioaddr;
+};
+
+static int sdhci_tangier_bind(struct udevice *dev)
+{
+ struct sdhci_tangier_plat *plat = dev_get_platdata(dev);
+
+ return sdhci_bind(dev, &plat->mmc, &plat->cfg);
+}
+
+static int sdhci_tangier_probe(struct udevice *dev)
+{
+ struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
+ struct sdhci_tangier_plat *plat = dev_get_platdata(dev);
+ struct sdhci_host *host = dev_get_priv(dev);
+ fdt_addr_t base;
+ int ret;
+
+ base = dev_get_addr(dev);
+ if (base == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ plat->ioaddr = devm_ioremap(dev, base, SZ_1K);
+ if (!plat->ioaddr)
+ return -ENOMEM;
+
+ host->name = dev->name;
+ host->ioaddr = plat->ioaddr;
+ host->quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE |
+ SDHCI_QUIRK_BROKEN_R1B | SDHCI_QUIRK_32BIT_DMA_ADDR |
+ SDHCI_QUIRK_WAIT_SEND_CMD;
+
+ /* MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195 */
+ host->voltages = MMC_VDD_165_195;
+
+ ret = sdhci_setup_cfg(&plat->cfg, host, 200000000, 400000);
+ if (ret)
+ return ret;
+
+ upriv->mmc = &plat->mmc;
+ host->mmc = &plat->mmc;
+ host->mmc->priv = host;
+
+ return sdhci_probe(dev);
+}
+
+static const struct udevice_id sdhci_tangier_match[] = {
+ { .compatible = "intel,sdhci-tangier" },
+ { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(sdhci_tangier) = {
+ .name = "sdhci-tangier",
+ .id = UCLASS_MMC,
+ .of_match = sdhci_tangier_match,
+ .bind = sdhci_tangier_bind,
+ .probe = sdhci_tangier_probe,
+ .ops = &sdhci_ops,
+ .priv_auto_alloc_size = sizeof(struct sdhci_host),
+ .platdata_auto_alloc_size = sizeof(struct sdhci_tangier_plat),
+};
--
2.11.0
next reply other threads:[~2017-02-14 14:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20170214142004epcas5p147b304baae093c9fc7244961bbdcc20e@epcas5p1.samsung.com>
2017-02-14 14:18 ` Andy Shevchenko [this message]
2017-02-15 3:59 ` [U-Boot] [PATCH v1] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver Jaehoon Chung
2017-02-15 7:54 ` Felipe Balbi
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=20170214141848.115488-1-andriy.shevchenko@linux.intel.com \
--to=andriy.shevchenko@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox