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 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.