|
@@ -62,6 +62,7 @@ struct omap_hsmmc_data {
|
|
#if !CONFIG_IS_ENABLED(DM_MMC)
|
|
#if !CONFIG_IS_ENABLED(DM_MMC)
|
|
struct mmc_config cfg;
|
|
struct mmc_config cfg;
|
|
#endif
|
|
#endif
|
|
|
|
+ uint bus_width;
|
|
uint clock;
|
|
uint clock;
|
|
#ifdef OMAP_HSMMC_USE_GPIO
|
|
#ifdef OMAP_HSMMC_USE_GPIO
|
|
#if CONFIG_IS_ENABLED(DM_MMC)
|
|
#if CONFIG_IS_ENABLED(DM_MMC)
|
|
@@ -814,17 +815,9 @@ static void omap_hsmmc_set_clock(struct mmc *mmc)
|
|
omap_hsmmc_start_clock(mmc_base);
|
|
omap_hsmmc_start_clock(mmc_base);
|
|
}
|
|
}
|
|
|
|
|
|
-#if !CONFIG_IS_ENABLED(DM_MMC)
|
|
|
|
-static int omap_hsmmc_set_ios(struct mmc *mmc)
|
|
|
|
|
|
+static void omap_hsmmc_set_bus_width(struct mmc *mmc)
|
|
{
|
|
{
|
|
struct omap_hsmmc_data *priv = omap_hsmmc_get_data(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;
|
|
struct hsmmc *mmc_base;
|
|
|
|
|
|
mmc_base = priv->base_addr;
|
|
mmc_base = priv->base_addr;
|
|
@@ -851,6 +844,24 @@ static int omap_hsmmc_set_ios(struct udevice *dev)
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ priv->bus_width = mmc->bus_width;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#if !CONFIG_IS_ENABLED(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
|
|
|
|
+
|
|
|
|
+ if (priv->bus_width != mmc->bus_width)
|
|
|
|
+ omap_hsmmc_set_bus_width(mmc);
|
|
|
|
+
|
|
if (priv->clock != mmc->clock)
|
|
if (priv->clock != mmc->clock)
|
|
omap_hsmmc_set_clock(mmc);
|
|
omap_hsmmc_set_clock(mmc);
|
|
|
|
|