public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI
@ 2017-02-20 11:24 ` Andy Shevchenko
  2017-02-20 11:24   ` [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver Andy Shevchenko
  2017-02-28  4:42   ` [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI Jaehoon Chung
  0 siblings, 2 replies; 5+ messages in thread
From: Andy Shevchenko @ 2017-02-20 11:24 UTC (permalink / raw)
  To: u-boot

From: Felipe Balbi <felipe.balbi@linux.intel.com>

We don't want pci_mmc to compile every time x86 compiles, only when
there's a platform that needs it. For that reason, we're adding a new
CONFIG_MMC_PCI which platforms can choose to enable.

Suggested-by: Jaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 configs/bayleybay_defconfig                             | 1 +
 configs/conga-qeval20-qa3-e3845-internal-uart_defconfig | 1 +
 configs/conga-qeval20-qa3-e3845_defconfig               | 1 +
 configs/crownbay_defconfig                              | 1 +
 configs/dfi-bt700-q7x-151_defconfig                     | 1 +
 configs/galileo_defconfig                               | 1 +
 configs/minnowmax_defconfig                             | 1 +
 configs/theadorable-x86-dfi-bt700_defconfig             | 1 +
 drivers/mmc/Kconfig                                     | 8 ++++++++
 drivers/mmc/Makefile                                    | 2 +-
 10 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index c6aa24f9be..d2f9f24a19 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -48,6 +48,7 @@ CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig b/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
index 890d28ce69..d96bfcbe14 100644
--- a/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
+++ b/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
@@ -50,6 +50,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_INTEL=y
 CONFIG_WINBOND_W83627=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/conga-qeval20-qa3-e3845_defconfig b/configs/conga-qeval20-qa3-e3845_defconfig
index 6e4cd843d9..1642bf2926 100644
--- a/configs/conga-qeval20-qa3-e3845_defconfig
+++ b/configs/conga-qeval20-qa3-e3845_defconfig
@@ -49,6 +49,7 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_INTEL=y
 CONFIG_WINBOND_W83627=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
index 13a00c2a17..4a88f5f3c5 100644
--- a/configs/crownbay_defconfig
+++ b/configs/crownbay_defconfig
@@ -37,6 +37,7 @@ CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/dfi-bt700-q7x-151_defconfig b/configs/dfi-bt700-q7x-151_defconfig
index ce447f540a..d5bd66f83c 100644
--- a/configs/dfi-bt700-q7x-151_defconfig
+++ b/configs/dfi-bt700-q7x-151_defconfig
@@ -47,6 +47,7 @@ CONFIG_CPU=y
 CONFIG_DM_I2C=y
 CONFIG_NUVOTON_NCT6102D=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
index 570f9ea810..f60abc3422 100644
--- a/configs/galileo_defconfig
+++ b/configs/galileo_defconfig
@@ -42,6 +42,7 @@ CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index 5f61f2a19c..8dac1d72fb 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -47,6 +47,7 @@ CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CPU=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/theadorable-x86-dfi-bt700_defconfig b/configs/theadorable-x86-dfi-bt700_defconfig
index cde33bbfe1..1703cee841 100644
--- a/configs/theadorable-x86-dfi-bt700_defconfig
+++ b/configs/theadorable-x86-dfi-bt700_defconfig
@@ -47,6 +47,7 @@ CONFIG_CPU=y
 CONFIG_DM_I2C=y
 CONFIG_NUVOTON_NCT6102D=y
 CONFIG_MMC=y
+CONFIG_MMC_PCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 01d1dbfb1b..af8436f337 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -122,6 +122,14 @@ config MMC_MXS
 
 	  If unsure, say N.
 
+config MMC_PCI
+	bool "Support for MMC controllers on PCI"
+	help
+	  This selects PCI-based MMC controllers.
+	  If you have an MMC controller on a PCI bus, say Y here.
+
+	  If unsure, say N.
+
 config MMC_OMAP_HS
 	bool "TI OMAP High Speed Multimedia Card Interface support"
 	help
diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
index 8e922db3f1..9fccac8ead 100644
--- a/drivers/mmc/Makefile
+++ b/drivers/mmc/Makefile
@@ -34,7 +34,7 @@ obj-$(CONFIG_MVEBU_MMC) += mvebu_mmc.o
 obj-$(CONFIG_MMC_OMAP_HS)		+= omap_hsmmc.o
 obj-$(CONFIG_MMC_MXC)			+= mxcmmc.o
 obj-$(CONFIG_MMC_MXS)			+= mxsmmc.o
-obj-$(CONFIG_X86) += pci_mmc.o
+obj-$(CONFIG_MMC_PCI)			+= pci_mmc.o
 obj-$(CONFIG_PXA_MMC_GENERIC) += pxa_mmc_gen.o
 obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
 obj-$(CONFIG_S3C_SDI) += s3c_sdi.o
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver
  2017-02-20 11:24 ` [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI Andy Shevchenko
@ 2017-02-20 11:24   ` Andy Shevchenko
  2017-02-21  1:47     ` Bin Meng
  2017-02-28  4:43     ` Jaehoon Chung
  2017-02-28  4:42   ` [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI Jaehoon Chung
  1 sibling, 2 replies; 5+ messages in thread
From: Andy Shevchenko @ 2017-02-20 11:24 UTC (permalink / raw)
  To: u-boot

From: Felipe Balbi <felipe.balbi@linux.intel.com>

This patch adds Intel Tangier eMMC/SDHCI driver.

Intel Tangier SoC contains a hybrid of PCI and non-PCI devices. SDHCI
controller is one of the devices which are *not* on a PCI and, hence,
cannot be enumerated by standard PCI means. This driver, allows for
SDHCI controller on Tangier SoC to work in U-Boot.

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         | 14 ++++++++
 drivers/mmc/Makefile        |  1 +
 drivers/mmc/tangier_sdhci.c | 81 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 96 insertions(+)
 create mode 100644 drivers/mmc/tangier_sdhci.c

diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index af8436f337..7238aade42 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -318,6 +318,20 @@ config MMC_SDHCI_XENON
 
 	  If unsure, say N.
 
+config MMC_SDHCI_TANGIER
+	bool "Tangier SDHCI controller support"
+	depends on DM_MMC && BLK
+	depends on MMC_SDHCI
+	help
+	  This selects support for SDHCI controller on Tanginer
+	  SoC. Note that this controller does not sit on PCI bus and,
+	  hence, cannot be enumerated by standard PCI means.
+
+	  If you're using an Intel Tangier SoC (available on Intel
+	  Edison board), say Y here.
+
+	  If unsure, say N.
+
 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 9fccac8ead..b210d2c3b3 100644
--- a/drivers/mmc/Makefile
+++ b/drivers/mmc/Makefile
@@ -61,6 +61,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..77b18e75f0
--- /dev/null
+++ b/drivers/mmc/tangier_sdhci.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#include <common.h>
+#include <dm.h>
+#include <dm/device.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+#include <malloc.h>
+#include <mmc.h>
+#include <sdhci.h>
+
+#define SDHCI_TANGIER_FMAX	200000000
+#define SDHCI_TANGIER_FMIN	400000
+
+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_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, SDHCI_TANGIER_FMAX,
+			SDHCI_TANGIER_FMIN);
+	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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver
  2017-02-20 11:24   ` [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver Andy Shevchenko
@ 2017-02-21  1:47     ` Bin Meng
  2017-02-28  4:43     ` Jaehoon Chung
  1 sibling, 0 replies; 5+ messages in thread
From: Bin Meng @ 2017-02-21  1:47 UTC (permalink / raw)
  To: u-boot

On Mon, Feb 20, 2017 at 7:24 PM, Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
> From: Felipe Balbi <felipe.balbi@linux.intel.com>
>
> This patch adds Intel Tangier eMMC/SDHCI driver.
>
> Intel Tangier SoC contains a hybrid of PCI and non-PCI devices. SDHCI
> controller is one of the devices which are *not* on a PCI and, hence,
> cannot be enumerated by standard PCI means. This driver, allows for
> SDHCI controller on Tangier SoC to work in U-Boot.
>
> 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         | 14 ++++++++
>  drivers/mmc/Makefile        |  1 +
>  drivers/mmc/tangier_sdhci.c | 81 +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 96 insertions(+)
>  create mode 100644 drivers/mmc/tangier_sdhci.c
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI
  2017-02-20 11:24 ` [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI Andy Shevchenko
  2017-02-20 11:24   ` [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver Andy Shevchenko
@ 2017-02-28  4:42   ` Jaehoon Chung
  1 sibling, 0 replies; 5+ messages in thread
From: Jaehoon Chung @ 2017-02-28  4:42 UTC (permalink / raw)
  To: u-boot

Hi Andy,

On 02/20/2017 08:24 PM, Andy Shevchenko wrote:
> From: Felipe Balbi <felipe.balbi@linux.intel.com>
> 
> We don't want pci_mmc to compile every time x86 compiles, only when
> there's a platform that needs it. For that reason, we're adding a new
> CONFIG_MMC_PCI which platforms can choose to enable.
> 
> Suggested-by: Jaehoon Chung <jh80.chung@samsung.com>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Applied on u-boot-mmc. Thanks!

Best Regards,
Jaehoon Chung

> ---
>  configs/bayleybay_defconfig                             | 1 +
>  configs/conga-qeval20-qa3-e3845-internal-uart_defconfig | 1 +
>  configs/conga-qeval20-qa3-e3845_defconfig               | 1 +
>  configs/crownbay_defconfig                              | 1 +
>  configs/dfi-bt700-q7x-151_defconfig                     | 1 +
>  configs/galileo_defconfig                               | 1 +
>  configs/minnowmax_defconfig                             | 1 +
>  configs/theadorable-x86-dfi-bt700_defconfig             | 1 +
>  drivers/mmc/Kconfig                                     | 8 ++++++++
>  drivers/mmc/Makefile                                    | 2 +-
>  10 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
> index c6aa24f9be..d2f9f24a19 100644
> --- a/configs/bayleybay_defconfig
> +++ b/configs/bayleybay_defconfig
> @@ -48,6 +48,7 @@ CONFIG_REGMAP=y
>  CONFIG_SYSCON=y
>  CONFIG_CPU=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig b/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
> index 890d28ce69..d96bfcbe14 100644
> --- a/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
> +++ b/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
> @@ -50,6 +50,7 @@ CONFIG_DM_I2C=y
>  CONFIG_SYS_I2C_INTEL=y
>  CONFIG_WINBOND_W83627=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/conga-qeval20-qa3-e3845_defconfig b/configs/conga-qeval20-qa3-e3845_defconfig
> index 6e4cd843d9..1642bf2926 100644
> --- a/configs/conga-qeval20-qa3-e3845_defconfig
> +++ b/configs/conga-qeval20-qa3-e3845_defconfig
> @@ -49,6 +49,7 @@ CONFIG_DM_I2C=y
>  CONFIG_SYS_I2C_INTEL=y
>  CONFIG_WINBOND_W83627=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
> index 13a00c2a17..4a88f5f3c5 100644
> --- a/configs/crownbay_defconfig
> +++ b/configs/crownbay_defconfig
> @@ -37,6 +37,7 @@ CONFIG_REGMAP=y
>  CONFIG_SYSCON=y
>  CONFIG_CPU=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/dfi-bt700-q7x-151_defconfig b/configs/dfi-bt700-q7x-151_defconfig
> index ce447f540a..d5bd66f83c 100644
> --- a/configs/dfi-bt700-q7x-151_defconfig
> +++ b/configs/dfi-bt700-q7x-151_defconfig
> @@ -47,6 +47,7 @@ CONFIG_CPU=y
>  CONFIG_DM_I2C=y
>  CONFIG_NUVOTON_NCT6102D=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
> index 570f9ea810..f60abc3422 100644
> --- a/configs/galileo_defconfig
> +++ b/configs/galileo_defconfig
> @@ -42,6 +42,7 @@ CONFIG_REGMAP=y
>  CONFIG_SYSCON=y
>  CONFIG_CPU=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
> index 5f61f2a19c..8dac1d72fb 100644
> --- a/configs/minnowmax_defconfig
> +++ b/configs/minnowmax_defconfig
> @@ -47,6 +47,7 @@ CONFIG_REGMAP=y
>  CONFIG_SYSCON=y
>  CONFIG_CPU=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/configs/theadorable-x86-dfi-bt700_defconfig b/configs/theadorable-x86-dfi-bt700_defconfig
> index cde33bbfe1..1703cee841 100644
> --- a/configs/theadorable-x86-dfi-bt700_defconfig
> +++ b/configs/theadorable-x86-dfi-bt700_defconfig
> @@ -47,6 +47,7 @@ CONFIG_CPU=y
>  CONFIG_DM_I2C=y
>  CONFIG_NUVOTON_NCT6102D=y
>  CONFIG_MMC=y
> +CONFIG_MMC_PCI=y
>  CONFIG_MMC_SDHCI=y
>  CONFIG_MMC_SDHCI_SDMA=y
>  CONFIG_SPI_FLASH=y
> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
> index 01d1dbfb1b..af8436f337 100644
> --- a/drivers/mmc/Kconfig
> +++ b/drivers/mmc/Kconfig
> @@ -122,6 +122,14 @@ config MMC_MXS
>  
>  	  If unsure, say N.
>  
> +config MMC_PCI
> +	bool "Support for MMC controllers on PCI"
> +	help
> +	  This selects PCI-based MMC controllers.
> +	  If you have an MMC controller on a PCI bus, say Y here.
> +
> +	  If unsure, say N.
> +
>  config MMC_OMAP_HS
>  	bool "TI OMAP High Speed Multimedia Card Interface support"
>  	help
> diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
> index 8e922db3f1..9fccac8ead 100644
> --- a/drivers/mmc/Makefile
> +++ b/drivers/mmc/Makefile
> @@ -34,7 +34,7 @@ obj-$(CONFIG_MVEBU_MMC) += mvebu_mmc.o
>  obj-$(CONFIG_MMC_OMAP_HS)		+= omap_hsmmc.o
>  obj-$(CONFIG_MMC_MXC)			+= mxcmmc.o
>  obj-$(CONFIG_MMC_MXS)			+= mxsmmc.o
> -obj-$(CONFIG_X86) += pci_mmc.o
> +obj-$(CONFIG_MMC_PCI)			+= pci_mmc.o
>  obj-$(CONFIG_PXA_MMC_GENERIC) += pxa_mmc_gen.o
>  obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
>  obj-$(CONFIG_S3C_SDI) += s3c_sdi.o
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver
  2017-02-20 11:24   ` [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver Andy Shevchenko
  2017-02-21  1:47     ` Bin Meng
@ 2017-02-28  4:43     ` Jaehoon Chung
  1 sibling, 0 replies; 5+ messages in thread
From: Jaehoon Chung @ 2017-02-28  4:43 UTC (permalink / raw)
  To: u-boot

Hi Andy,

On 02/20/2017 08:24 PM, Andy Shevchenko wrote:
> From: Felipe Balbi <felipe.balbi@linux.intel.com>
> 
> This patch adds Intel Tangier eMMC/SDHCI driver.
> 
> Intel Tangier SoC contains a hybrid of PCI and non-PCI devices. SDHCI
> controller is one of the devices which are *not* on a PCI and, hence,
> cannot be enumerated by standard PCI means. This driver, allows for
> SDHCI controller on Tangier SoC to work in U-Boot.
> 
> 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>

Applied on u-boot-mmc. Thanks!

Best Regards,
Jaehoon Chung

> ---
>  drivers/mmc/Kconfig         | 14 ++++++++
>  drivers/mmc/Makefile        |  1 +
>  drivers/mmc/tangier_sdhci.c | 81 +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 96 insertions(+)
>  create mode 100644 drivers/mmc/tangier_sdhci.c
> 
> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
> index af8436f337..7238aade42 100644
> --- a/drivers/mmc/Kconfig
> +++ b/drivers/mmc/Kconfig
> @@ -318,6 +318,20 @@ config MMC_SDHCI_XENON
>  
>  	  If unsure, say N.
>  
> +config MMC_SDHCI_TANGIER
> +	bool "Tangier SDHCI controller support"
> +	depends on DM_MMC && BLK
> +	depends on MMC_SDHCI
> +	help
> +	  This selects support for SDHCI controller on Tanginer
> +	  SoC. Note that this controller does not sit on PCI bus and,
> +	  hence, cannot be enumerated by standard PCI means.
> +
> +	  If you're using an Intel Tangier SoC (available on Intel
> +	  Edison board), say Y here.
> +
> +	  If unsure, say N.
> +
>  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 9fccac8ead..b210d2c3b3 100644
> --- a/drivers/mmc/Makefile
> +++ b/drivers/mmc/Makefile
> @@ -61,6 +61,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..77b18e75f0
> --- /dev/null
> +++ b/drivers/mmc/tangier_sdhci.c
> @@ -0,0 +1,81 @@
> +/*
> + * Copyright (c) 2017 Intel Corporation
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +#include <common.h>
> +#include <dm.h>
> +#include <dm/device.h>
> +#include <linux/io.h>
> +#include <linux/sizes.h>
> +#include <malloc.h>
> +#include <mmc.h>
> +#include <sdhci.h>
> +
> +#define SDHCI_TANGIER_FMAX	200000000
> +#define SDHCI_TANGIER_FMIN	400000
> +
> +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_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, SDHCI_TANGIER_FMAX,
> +			SDHCI_TANGIER_FMIN);
> +	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),
> +};
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-02-28  4:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20170220112537epcas3p381df74bee869824821737be5727d73bf@epcas3p3.samsung.com>
2017-02-20 11:24 ` [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI Andy Shevchenko
2017-02-20 11:24   ` [U-Boot] [PATCH v3 2/2] mmc: tangier: Add Intel Tangier eMMC/SDHCI driver Andy Shevchenko
2017-02-21  1:47     ` Bin Meng
2017-02-28  4:43     ` Jaehoon Chung
2017-02-28  4:42   ` [U-Boot] [PATCH v3 1/2] mmc: pci: Add CONFIG_MMC_PCI Jaehoon Chung

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox