diff mbox series

[U-Boot,V3,4/6] mmc: tmio: sdhi: Filter out HS400 on certain SoCs

Message ID 20181113234050.7653-4-marek.vasut+renesas@gmail.com
State Accepted
Commit d34bd2deda65f099b47305b4cecbdd58106884fe
Delegated to: Jaehoon Chung
Headers show
Series [U-Boot,V3,1/6] mmc: tmio: Switch to clock framework | expand

Commit Message

Marek Vasut Nov. 13, 2018, 11:40 p.m. UTC
Filter out HS400 support on SoCs where HS400 is not supported yet.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
---
V3: New patch
---
 drivers/mmc/renesas-sdhi.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
diff mbox series

Patch

diff --git a/drivers/mmc/renesas-sdhi.c b/drivers/mmc/renesas-sdhi.c
index f4283d055f..0cc6f27279 100644
--- a/drivers/mmc/renesas-sdhi.c
+++ b/drivers/mmc/renesas-sdhi.c
@@ -363,6 +363,23 @@  static ulong renesas_sdhi_clk_get_rate(struct tmio_sd_priv *priv)
 	return clk_get_rate(&priv->clk);
 }
 
+static void renesas_sdhi_filter_caps(struct udevice *dev)
+{
+	struct tmio_sd_plat *plat = dev_get_platdata(dev);
+	struct tmio_sd_priv *priv = dev_get_priv(dev);
+
+	if (!(priv->caps & TMIO_SD_CAP_RCAR_GEN3))
+		return;
+
+	/* HS400 is not supported on H3 ES1.x and M3W ES1.0,ES1.1 */
+	if (((rmobile_get_cpu_type() == RMOBILE_CPU_TYPE_R8A7795) &&
+	    (rmobile_get_cpu_rev_integer() <= 1)) ||
+	    ((rmobile_get_cpu_type() == RMOBILE_CPU_TYPE_R8A7796) &&
+	    (rmobile_get_cpu_rev_integer() == 1) &&
+	    (rmobile_get_cpu_rev_fraction() <= 1)))
+		plat->cfg.host_caps &= ~MMC_MODE_HS400;
+}
+
 static int renesas_sdhi_probe(struct udevice *dev)
 {
 	struct tmio_sd_priv *priv = dev_get_priv(dev);
@@ -407,6 +424,9 @@  static int renesas_sdhi_probe(struct udevice *dev)
 	}
 
 	ret = tmio_sd_probe(dev, quirks);
+
+	renesas_sdhi_filter_caps(dev);
+
 #if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
 	if (!ret && (priv->caps & TMIO_SD_CAP_RCAR_UHS))
 		renesas_sdhi_reset_tuning(priv);