* [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI
@ 2017-10-23 8:57 patrice.chotard at st.com
2017-10-23 8:57 ` [U-Boot] [PATCH v2 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype patrice.chotard at st.com
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: patrice.chotard at st.com @ 2017-10-23 8:57 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
Currently this driver is used by VEXPRESS platform which doesn't support
Driver Model.
ARM_PL180_MMCI IP is embedded on STM32F4 and F7 platforms. In order to add
SD support on these 2 STM32 family SoCs, the following reworks are needed:
_ update arm_pl180_mmci_init() prototype to make this driver working with
DM and none DM platforms
_ addapt driver to driver model
_ add bus_width device tree support
_ add clock support
_ add .get_cd callback support
This series has been tested internally on both STM32F4 and STM32F7 SoCs
family. Future SD support for these 2 platforms will be added soon.
v2: _ add defines for clock min and max value in patch 2
_ remove useless return in bus_width switch case in patch 3
Patrice Chotard (5):
mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype
mmc: arm_pl180_mmci: adapt driver to DM usage
mmc: arm_pl180_mmci: add bus_width DT property support
mmc: arm_pl180_mmci: add clock support
mmc: arm_pl180_mmci: add .getcd callback
board/armltd/vexpress/vexpress_common.c | 3 +-
drivers/mmc/Kconfig | 9 ++
drivers/mmc/arm_pl180_mmci.c | 187 +++++++++++++++++++++++++++++---
drivers/mmc/arm_pl180_mmci.h | 9 +-
4 files changed, 189 insertions(+), 19 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype
2017-10-23 8:57 [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI patrice.chotard at st.com
@ 2017-10-23 8:57 ` patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 2/5] mmc: arm_pl180_mmci: adapt driver to DM usage patrice.chotard at st.com
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: patrice.chotard at st.com @ 2017-10-23 8:57 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
Update arm_pl180_mmci_init() prototype by adding struct mmc**
param. This is needed before converting this driver to driver model
in order to use arm_pl180_mmci_init() in driver model and in none
driver model implementation
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
board/armltd/vexpress/vexpress_common.c | 3 ++-
drivers/mmc/arm_pl180_mmci.c | 10 +++++-----
drivers/mmc/arm_pl180_mmci.h | 2 +-
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/board/armltd/vexpress/vexpress_common.c b/board/armltd/vexpress/vexpress_common.c
index 89ab8f7..37b8d7f 100644
--- a/board/armltd/vexpress/vexpress_common.c
+++ b/board/armltd/vexpress/vexpress_common.c
@@ -76,6 +76,7 @@ int cpu_mmc_init(bd_t *bis)
(void) bis;
#ifdef CONFIG_ARM_PL180_MMCI
struct pl180_mmc_host *host;
+ struct mmc *mmc;
host = malloc(sizeof(struct pl180_mmc_host));
if (!host)
@@ -91,7 +92,7 @@ int cpu_mmc_init(bd_t *bis)
host->clock_in = ARM_MCLK;
host->clock_min = ARM_MCLK / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
host->clock_max = CONFIG_ARM_PL180_MMCI_CLOCK_FREQ;
- rc = arm_pl180_mmci_init(host);
+ rc = arm_pl180_mmci_init(host, &mmc);
#endif
return rc;
}
diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index ddf8383..7898b0d 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -348,9 +348,8 @@ static const struct mmc_ops arm_pl180_mmci_ops = {
* Set initial clock and power for mmc slot.
* Initialize mmc struct and register with mmc framework.
*/
-int arm_pl180_mmci_init(struct pl180_mmc_host *host)
+int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc)
{
- struct mmc *mmc;
u32 sdi_u32;
writel(host->pwr_init, &host->base->power);
@@ -373,11 +372,12 @@ int arm_pl180_mmci_init(struct pl180_mmc_host *host)
else
host->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
- mmc = mmc_create(&host->cfg, host);
- if (mmc == NULL)
+ *mmc = mmc_create(&host->cfg, host);
+ if (!*mmc)
return -1;
- debug("registered mmc interface number is:%d\n", mmc->block_dev.devnum);
+ debug("registered mmc interface number is:%d\n",
+ (*mmc)->block_dev.devnum);
return 0;
}
diff --git a/drivers/mmc/arm_pl180_mmci.h b/drivers/mmc/arm_pl180_mmci.h
index f23bd39..6e232f7 100644
--- a/drivers/mmc/arm_pl180_mmci.h
+++ b/drivers/mmc/arm_pl180_mmci.h
@@ -190,6 +190,6 @@ struct pl180_mmc_host {
struct mmc_config cfg;
};
-int arm_pl180_mmci_init(struct pl180_mmc_host *);
+int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc);
#endif
--
1.9.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 2/5] mmc: arm_pl180_mmci: adapt driver to DM usage
2017-10-23 8:57 [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI patrice.chotard at st.com
2017-10-23 8:57 ` [U-Boot] [PATCH v2 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype patrice.chotard at st.com
@ 2017-10-23 8:57 ` patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 3/5] mmc: arm_pl180_mmci: add bus_width DT property support patrice.chotard at st.com
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: patrice.chotard at st.com @ 2017-10-23 8:57 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
Convert this driver to driver model.
This driver is also used by VEXPRESS platforms which doesn't
use driver model.
Tested on STM32F746 and STM32F769 platforms.
Signed-off-by: Christophe Priouzeau <christophe.priouzeau@st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
v2: _ add defines for clock min and max value
drivers/mmc/Kconfig | 9 +++
drivers/mmc/arm_pl180_mmci.c | 129 +++++++++++++++++++++++++++++++++++++++----
drivers/mmc/arm_pl180_mmci.h | 3 +
3 files changed, 129 insertions(+), 12 deletions(-)
diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 94050836..62ce0af 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -33,6 +33,15 @@ config SPL_DM_MMC
if MMC
+config ARM_PL180_MMCI
+ bool "ARM AMBA Multimedia Card Interface and compatible support"
+ depends on DM_MMC && OF_CONTROL
+ help
+ This selects the ARM(R) AMBA(R) PrimeCell Multimedia Card
+ Interface (PL180, PL181 and compatible) support.
+ If you have an ARM(R) platform with a Multimedia Card slot,
+ say Y or M here.
+
config SPL_MMC_TINY
bool "Tiny MMC framework in SPL"
help
diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index 7898b0d..b3c1f0d 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -12,12 +12,27 @@
/* #define DEBUG */
-#include <asm/io.h>
#include "common.h"
#include <errno.h>
+#include <malloc.h>
#include <mmc.h>
+
#include "arm_pl180_mmci.h"
-#include <malloc.h>
+
+#include <asm/io.h>
+
+#ifdef CONFIG_DM_MMC
+#include <dm.h>
+DECLARE_GLOBAL_DATA_PTR;
+
+#define MMC_CLOCK_MAX 48000000
+#define MMC_CLOCK_MIN 400000
+
+struct arm_pl180_mmc_plat {
+ struct mmc_config cfg;
+ struct mmc mmc;
+};
+#endif
static int wait_for_command_end(struct mmc *dev, struct mmc_cmd *cmd)
{
@@ -265,16 +280,6 @@ static int host_request(struct mmc *dev,
return result;
}
-/* MMC uses open drain drivers in the enumeration phase */
-static int mmc_host_reset(struct mmc *dev)
-{
- struct pl180_mmc_host *host = dev->priv;
-
- writel(host->pwr_init, &host->base->power);
-
- return 0;
-}
-
static int host_set_ios(struct mmc *dev)
{
struct pl180_mmc_host *host = dev->priv;
@@ -337,11 +342,23 @@ static int host_set_ios(struct mmc *dev)
return 0;
}
+#ifndef CONFIG_DM_MMC
+/* MMC uses open drain drivers in the enumeration phase */
+static int mmc_host_reset(struct mmc *dev)
+{
+ struct pl180_mmc_host *host = dev->priv;
+
+ writel(host->pwr_init, &host->base->power);
+
+ return 0;
+}
+
static const struct mmc_ops arm_pl180_mmci_ops = {
.send_cmd = host_request,
.set_ios = host_set_ios,
.init = mmc_host_reset,
};
+#endif
/*
* mmc_host_init - initialize the mmc controller.
@@ -361,7 +378,9 @@ int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc)
writel(sdi_u32, &host->base->mask0);
host->cfg.name = host->name;
+#ifndef CONFIG_DM_MMC
host->cfg.ops = &arm_pl180_mmci_ops;
+#endif
/* TODO remove the duplicates */
host->cfg.host_caps = host->caps;
host->cfg.voltages = host->voltages;
@@ -381,3 +400,89 @@ int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc)
return 0;
}
+
+#ifdef CONFIG_DM_MMC
+static int arm_pl180_mmc_probe(struct udevice *dev)
+{
+ struct arm_pl180_mmc_plat *pdata = dev_get_platdata(dev);
+ struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
+ struct mmc *mmc = &pdata->mmc;
+ struct pl180_mmc_host *host = mmc->priv;
+ int ret;
+
+ strcpy(host->name, "MMC");
+ host->pwr_init = INIT_PWR;
+ host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN |
+ SDI_CLKCR_HWFC_EN;
+ host->voltages = VOLTAGE_WINDOW_SD;
+ host->caps = 0;
+ host->clock_in = MMC_CLOCK_MAX;
+ host->clock_min = MMC_CLOCK_MIN;
+ host->clock_max = dev_read_u32_default(dev, "max-frequency",
+ MMC_CLOCK_MAX);
+ host->version2 = dev_get_driver_data(dev);
+ ret = arm_pl180_mmci_init(host, &mmc);
+ if (ret) {
+ dev_err(dev, "arm_pl180_mmci init failed\n");
+ return ret;
+ }
+
+ mmc->dev = dev;
+ dev->priv = host;
+ upriv->mmc = mmc;
+
+ return 0;
+}
+
+static int dm_host_request(struct udevice *dev, struct mmc_cmd *cmd,
+ struct mmc_data *data)
+{
+ struct mmc *mmc = mmc_get_mmc_dev(dev);
+
+ return host_request(mmc, cmd, data);
+}
+
+static int dm_host_set_ios(struct udevice *dev)
+{
+ struct mmc *mmc = mmc_get_mmc_dev(dev);
+
+ return host_set_ios(mmc);
+}
+
+static const struct dm_mmc_ops arm_pl180_dm_mmc_ops = {
+ .send_cmd = dm_host_request,
+ .set_ios = dm_host_set_ios,
+};
+
+static int arm_pl180_mmc_ofdata_to_platdata(struct udevice *dev)
+{
+ struct arm_pl180_mmc_plat *pdata = dev_get_platdata(dev);
+ struct mmc *mmc = &pdata->mmc;
+ struct pl180_mmc_host *host = mmc->priv;
+ fdt_addr_t addr;
+
+ addr = devfdt_get_addr(dev);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ host->base = (void *)addr;
+
+ return 0;
+}
+
+static const struct udevice_id arm_pl180_mmc_match[] = {
+ { .compatible = "st,stm32f4xx-sdio", .data = VERSION1 },
+ { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(arm_pl180_mmc) = {
+ .name = "arm_pl180_mmc",
+ .id = UCLASS_MMC,
+ .of_match = arm_pl180_mmc_match,
+ .ops = &arm_pl180_dm_mmc_ops,
+ .probe = arm_pl180_mmc_probe,
+ .ofdata_to_platdata = arm_pl180_mmc_ofdata_to_platdata,
+ .priv_auto_alloc_size = sizeof(struct pl180_mmc_host),
+ .platdata_auto_alloc_size = sizeof(struct arm_pl180_mmc_plat),
+};
+#endif
diff --git a/drivers/mmc/arm_pl180_mmci.h b/drivers/mmc/arm_pl180_mmci.h
index 6e232f7..b935288 100644
--- a/drivers/mmc/arm_pl180_mmci.h
+++ b/drivers/mmc/arm_pl180_mmci.h
@@ -142,6 +142,9 @@
#define SDI_FIFO_BURST_SIZE 8
+#define VERSION1 false
+#define VERSION2 true
+
struct sdi_registers {
u32 power; /* 0x00*/
u32 clock; /* 0x04*/
--
1.9.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 3/5] mmc: arm_pl180_mmci: add bus_width DT property support
2017-10-23 8:57 [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI patrice.chotard at st.com
2017-10-23 8:57 ` [U-Boot] [PATCH v2 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype patrice.chotard at st.com
2017-10-23 8:57 ` [U-Boot] [PATCH v2 2/5] mmc: arm_pl180_mmci: adapt driver to DM usage patrice.chotard at st.com
@ 2017-10-23 8:57 ` patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 4/5] mmc: arm_pl180_mmci: add clock support patrice.chotard at st.com
2017-10-23 8:57 ` [U-Boot] [PATCH v2 5/5] mmc: arm_pl180_mmci: add .getcd callback patrice.chotard at st.com
4 siblings, 1 reply; 11+ messages in thread
From: patrice.chotard at st.com @ 2017-10-23 8:57 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
Allow to get "bus-width" property from device tree
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
v2: _ remove useless return in bus_width switch case
drivers/mmc/arm_pl180_mmci.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index b3c1f0d..fd57b55 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -408,6 +408,7 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
struct mmc *mmc = &pdata->mmc;
struct pl180_mmc_host *host = mmc->priv;
+ u32 bus_width;
int ret;
strcpy(host->name, "MMC");
@@ -421,6 +422,21 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
host->clock_max = dev_read_u32_default(dev, "max-frequency",
MMC_CLOCK_MAX);
host->version2 = dev_get_driver_data(dev);
+
+ bus_width = dev_read_u32_default(dev, "bus-width", 1);
+ switch (bus_width) {
+ case 8:
+ host->caps |= MMC_MODE_8BIT;
+ /* Hosts capable of 8-bit transfers can also do 4 bits */
+ case 4:
+ host->caps |= MMC_MODE_4BIT;
+ break;
+ case 1:
+ break;
+ default:
+ dev_err(dev, "Invalid bus-width value %u\n", bus_width);
+ }
+
ret = arm_pl180_mmci_init(host, &mmc);
if (ret) {
dev_err(dev, "arm_pl180_mmci init failed\n");
--
1.9.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 4/5] mmc: arm_pl180_mmci: add clock support
2017-10-23 8:57 [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI patrice.chotard at st.com
` (2 preceding siblings ...)
2017-10-23 8:57 ` [U-Boot] [PATCH v2 3/5] mmc: arm_pl180_mmci: add bus_width DT property support patrice.chotard at st.com
@ 2017-10-23 8:57 ` patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 5/5] mmc: arm_pl180_mmci: add .getcd callback patrice.chotard at st.com
4 siblings, 1 reply; 11+ messages in thread
From: patrice.chotard at st.com @ 2017-10-23 8:57 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
Allow to get and enable MMC related clock
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
drivers/mmc/arm_pl180_mmci.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index fd57b55..3de6b12 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -13,6 +13,7 @@
/* #define DEBUG */
#include "common.h"
+#include <clk.h>
#include <errno.h>
#include <malloc.h>
#include <mmc.h>
@@ -408,17 +409,28 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
struct mmc *mmc = &pdata->mmc;
struct pl180_mmc_host *host = mmc->priv;
+ struct clk clk;
u32 bus_width;
int ret;
+ ret = clk_get_by_index(dev, 0, &clk);
+ if (ret < 0)
+ return ret;
+
+ ret = clk_enable(&clk);
+ if (ret) {
+ dev_err(dev, "failed to enable clock\n");
+ return ret;
+ }
+
strcpy(host->name, "MMC");
host->pwr_init = INIT_PWR;
host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN |
SDI_CLKCR_HWFC_EN;
host->voltages = VOLTAGE_WINDOW_SD;
host->caps = 0;
- host->clock_in = MMC_CLOCK_MAX;
- host->clock_min = MMC_CLOCK_MIN;
+ host->clock_in = clk_get_rate(&clk);
+ host->clock_min = host->clock_in / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
host->clock_max = dev_read_u32_default(dev, "max-frequency",
MMC_CLOCK_MAX);
host->version2 = dev_get_driver_data(dev);
--
1.9.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 5/5] mmc: arm_pl180_mmci: add .getcd callback
2017-10-23 8:57 [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI patrice.chotard at st.com
` (3 preceding siblings ...)
2017-10-23 8:57 ` [U-Boot] [PATCH v2 4/5] mmc: arm_pl180_mmci: add clock support patrice.chotard at st.com
@ 2017-10-23 8:57 ` patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
4 siblings, 1 reply; 11+ messages in thread
From: patrice.chotard at st.com @ 2017-10-23 8:57 UTC (permalink / raw)
To: u-boot
From: Patrice Chotard <patrice.chotard@st.com>
Add .getcd callback to check is MMC card is present
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
drivers/mmc/arm_pl180_mmci.c | 24 ++++++++++++++++++++++--
drivers/mmc/arm_pl180_mmci.h | 4 ++++
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/arm_pl180_mmci.c b/drivers/mmc/arm_pl180_mmci.c
index 3de6b12..89a7c19 100644
--- a/drivers/mmc/arm_pl180_mmci.c
+++ b/drivers/mmc/arm_pl180_mmci.c
@@ -18,9 +18,10 @@
#include <malloc.h>
#include <mmc.h>
-#include "arm_pl180_mmci.h"
-
#include <asm/io.h>
+#include <asm-generic/gpio.h>
+
+#include "arm_pl180_mmci.h"
#ifdef CONFIG_DM_MMC
#include <dm.h>
@@ -435,6 +436,8 @@ static int arm_pl180_mmc_probe(struct udevice *dev)
MMC_CLOCK_MAX);
host->version2 = dev_get_driver_data(dev);
+ gpio_request_by_name(dev, "cd-gpios", 0, &host->cd_gpio, GPIOD_IS_IN);
+
bus_width = dev_read_u32_default(dev, "bus-width", 1);
switch (bus_width) {
case 8:
@@ -477,9 +480,26 @@ static int dm_host_set_ios(struct udevice *dev)
return host_set_ios(mmc);
}
+static int dm_mmc_getcd(struct udevice *dev)
+{
+ struct arm_pl180_mmc_plat *pdata = dev_get_platdata(dev);
+ struct mmc *mmc = &pdata->mmc;
+ struct pl180_mmc_host *host = mmc->priv;
+ int value = 1;
+
+ if (dm_gpio_is_valid(&host->cd_gpio)) {
+ value = dm_gpio_get_value(&host->cd_gpio);
+ if (host->cd_inverted)
+ return !value;
+ }
+
+ return value;
+}
+
static const struct dm_mmc_ops arm_pl180_dm_mmc_ops = {
.send_cmd = dm_host_request,
.set_ios = dm_host_set_ios,
+ .get_cd = dm_mmc_getcd,
};
static int arm_pl180_mmc_ofdata_to_platdata(struct udevice *dev)
diff --git a/drivers/mmc/arm_pl180_mmci.h b/drivers/mmc/arm_pl180_mmci.h
index b935288..9df4b75 100644
--- a/drivers/mmc/arm_pl180_mmci.h
+++ b/drivers/mmc/arm_pl180_mmci.h
@@ -191,6 +191,10 @@ struct pl180_mmc_host {
unsigned int pwr_init;
int version2;
struct mmc_config cfg;
+#ifdef CONFIG_DM_MMC
+ struct gpio_desc cd_gpio;
+ bool cd_inverted;
+#endif
};
int arm_pl180_mmci_init(struct pl180_mmc_host *host, struct mmc **mmc);
--
1.9.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [U-Boot, v2, 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype
2017-10-23 8:57 ` [U-Boot] [PATCH v2 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype patrice.chotard at st.com
@ 2017-11-17 15:44 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2017-11-17 15:44 UTC (permalink / raw)
To: u-boot
On Mon, Oct 23, 2017 at 10:57:30AM +0200, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> Update arm_pl180_mmci_init() prototype by adding struct mmc**
> param. This is needed before converting this driver to driver model
> in order to use arm_pl180_mmci_init() in driver model and in none
> driver model implementation
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171117/1de02634/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [U-Boot, v2, 2/5] mmc: arm_pl180_mmci: adapt driver to DM usage
2017-10-23 8:57 ` [U-Boot] [PATCH v2 2/5] mmc: arm_pl180_mmci: adapt driver to DM usage patrice.chotard at st.com
@ 2017-11-17 15:44 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2017-11-17 15:44 UTC (permalink / raw)
To: u-boot
On Mon, Oct 23, 2017 at 10:57:31AM +0200, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> Convert this driver to driver model.
> This driver is also used by VEXPRESS platforms which doesn't
> use driver model.
>
> Tested on STM32F746 and STM32F769 platforms.
>
> Signed-off-by: Christophe Priouzeau <christophe.priouzeau@st.com>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171117/3134330f/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [U-Boot, v2, 3/5] mmc: arm_pl180_mmci: add bus_width DT property support
2017-10-23 8:57 ` [U-Boot] [PATCH v2 3/5] mmc: arm_pl180_mmci: add bus_width DT property support patrice.chotard at st.com
@ 2017-11-17 15:44 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2017-11-17 15:44 UTC (permalink / raw)
To: u-boot
On Mon, Oct 23, 2017 at 10:57:32AM +0200, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> Allow to get "bus-width" property from device tree
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171117/eb13968a/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [U-Boot, v2, 4/5] mmc: arm_pl180_mmci: add clock support
2017-10-23 8:57 ` [U-Boot] [PATCH v2 4/5] mmc: arm_pl180_mmci: add clock support patrice.chotard at st.com
@ 2017-11-17 15:44 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2017-11-17 15:44 UTC (permalink / raw)
To: u-boot
On Mon, Oct 23, 2017 at 10:57:33AM +0200, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> Allow to get and enable MMC related clock
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171117/66459e23/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [U-Boot, v2, 5/5] mmc: arm_pl180_mmci: add .getcd callback
2017-10-23 8:57 ` [U-Boot] [PATCH v2 5/5] mmc: arm_pl180_mmci: add .getcd callback patrice.chotard at st.com
@ 2017-11-17 15:44 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2017-11-17 15:44 UTC (permalink / raw)
To: u-boot
On Mon, Oct 23, 2017 at 10:57:34AM +0200, patrice.chotard at st.com wrote:
> From: Patrice Chotard <patrice.chotard@st.com>
>
> Add .getcd callback to check is MMC card is present
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171117/c462caa4/attachment.sig>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-11-17 15:44 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-23 8:57 [U-Boot] [PATCH v2 0/5] Extend ARM_PL180_MMCI patrice.chotard at st.com
2017-10-23 8:57 ` [U-Boot] [PATCH v2 1/5] mmc: arm_pl180_mmci: update arm_pl180_mmci_init() prototype patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 2/5] mmc: arm_pl180_mmci: adapt driver to DM usage patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 3/5] mmc: arm_pl180_mmci: add bus_width DT property support patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 4/5] mmc: arm_pl180_mmci: add clock support patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-10-23 8:57 ` [U-Boot] [PATCH v2 5/5] mmc: arm_pl180_mmci: add .getcd callback patrice.chotard at st.com
2017-11-17 15:44 ` [U-Boot] [U-Boot, v2, " Tom Rini
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.