|
@@ -326,11 +326,17 @@ static void mmc_reset_controller_fsm(struct hsmmc *mmc_base, u32 bit)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+#ifndef CONFIG_DM_MMC
|
|
|
static int omap_hsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
|
|
|
struct mmc_data *data)
|
|
|
{
|
|
|
struct omap_hsmmc_data *priv = omap_hsmmc_get_data(mmc);
|
|
|
+#else
|
|
|
+static int omap_hsmmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
|
|
|
+ struct mmc_data *data)
|
|
|
+{
|
|
|
+ struct omap_hsmmc_data *priv = dev_get_priv(dev);
|
|
|
+#endif
|
|
|
struct hsmmc *mmc_base;
|
|
|
unsigned int flags, mmc_stat;
|
|
|
ulong start;
|
|
@@ -558,9 +564,17 @@ static int mmc_write_data(struct hsmmc *mmc_base, const char *buf,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+#ifndef CONFIG_DM_MMC
|
|
|
static int omap_hsmmc_set_ios(struct mmc *mmc)
|
|
|
{
|
|
|
struct omap_hsmmc_data *priv = omap_hsmmc_get_data(mmc);
|
|
|
+#else
|
|
|
+static int omap_hsmmc_set_ios(struct udevice *dev)
|
|
|
+{
|
|
|
+ struct omap_hsmmc_data *priv = dev_get_priv(dev);
|
|
|
+ struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
|
|
|
+ struct mmc *mmc = upriv->mmc;
|
|
|
+#endif
|
|
|
struct hsmmc *mmc_base;
|
|
|
unsigned int dsor = 0;
|
|
|
ulong start;
|
|
@@ -617,9 +631,9 @@ static int omap_hsmmc_set_ios(struct mmc *mmc)
|
|
|
|
|
|
#ifdef OMAP_HSMMC_USE_GPIO
|
|
|
#ifdef CONFIG_DM_MMC
|
|
|
-static int omap_hsmmc_getcd(struct mmc *mmc)
|
|
|
+static int omap_hsmmc_getcd(struct udevice *dev)
|
|
|
{
|
|
|
- struct omap_hsmmc_data *priv = omap_hsmmc_get_data(mmc);
|
|
|
+ struct omap_hsmmc_data *priv = dev_get_priv(dev);
|
|
|
int value;
|
|
|
|
|
|
value = dm_gpio_get_value(&priv->cd_gpio);
|
|
@@ -632,9 +646,9 @@ static int omap_hsmmc_getcd(struct mmc *mmc)
|
|
|
return value;
|
|
|
}
|
|
|
|
|
|
-static int omap_hsmmc_getwp(struct mmc *mmc)
|
|
|
+static int omap_hsmmc_getwp(struct udevice *dev)
|
|
|
{
|
|
|
- struct omap_hsmmc_data *priv = omap_hsmmc_get_data(mmc);
|
|
|
+ struct omap_hsmmc_data *priv = dev_get_priv(dev);
|
|
|
int value;
|
|
|
|
|
|
value = dm_gpio_get_value(&priv->wp_gpio);
|
|
@@ -674,6 +688,16 @@ static int omap_hsmmc_getwp(struct mmc *mmc)
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_DM_MMC
|
|
|
+static const struct dm_mmc_ops omap_hsmmc_ops = {
|
|
|
+ .send_cmd = omap_hsmmc_send_cmd,
|
|
|
+ .set_ios = omap_hsmmc_set_ios,
|
|
|
+#ifdef OMAP_HSMMC_USE_GPIO
|
|
|
+ .get_cd = omap_hsmmc_getcd,
|
|
|
+ .get_wp = omap_hsmmc_getwp,
|
|
|
+#endif
|
|
|
+};
|
|
|
+#else
|
|
|
static const struct mmc_ops omap_hsmmc_ops = {
|
|
|
.send_cmd = omap_hsmmc_send_cmd,
|
|
|
.set_ios = omap_hsmmc_set_ios,
|
|
@@ -683,6 +707,7 @@ static const struct mmc_ops omap_hsmmc_ops = {
|
|
|
.getwp = omap_hsmmc_getwp,
|
|
|
#endif
|
|
|
};
|
|
|
+#endif
|
|
|
|
|
|
#ifndef CONFIG_DM_MMC
|
|
|
int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max, int cd_gpio,
|
|
@@ -835,7 +860,6 @@ static int omap_hsmmc_probe(struct udevice *dev)
|
|
|
struct mmc *mmc;
|
|
|
|
|
|
cfg->name = "OMAP SD/MMC";
|
|
|
- cfg->ops = &omap_hsmmc_ops;
|
|
|
priv->base_addr = plat->base_addr;
|
|
|
#ifdef OMAP_HSMMC_USE_GPIO
|
|
|
priv->cd_inverted = plat->cd_inverted;
|
|
@@ -857,7 +881,7 @@ static int omap_hsmmc_probe(struct udevice *dev)
|
|
|
mmc->dev = dev;
|
|
|
upriv->mmc = mmc;
|
|
|
|
|
|
- return 0;
|
|
|
+ return omap_hsmmc_init_setup(mmc);
|
|
|
}
|
|
|
|
|
|
#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
|
|
@@ -901,6 +925,7 @@ U_BOOT_DRIVER(omap_hsmmc) = {
|
|
|
#ifdef CONFIG_BLK
|
|
|
.bind = omap_hsmmc_bind,
|
|
|
#endif
|
|
|
+ .ops = &omap_hsmmc_ops,
|
|
|
.probe = omap_hsmmc_probe,
|
|
|
.priv_auto_alloc_size = sizeof(struct omap_hsmmc_data),
|
|
|
.flags = DM_FLAG_PRE_RELOC,
|