summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2016-05-06 20:24:35 +0000
committerkettenis <kettenis@openbsd.org>2016-05-06 20:24:35 +0000
commit28809a1c40b0706b9a0b1e8b86f7be038f01fb93 (patch)
treed22e56eacbdbfb2656c91cc9746bde15073ff401
parentRevert the previous commit. There still are bad interactions between the (diff)
downloadwireguard-openbsd-28809a1c40b0706b9a0b1e8b86f7be038f01fb93.tar.xz
wireguard-openbsd-28809a1c40b0706b9a0b1e8b86f7be038f01fb93.zip
Reset the bus width back to 1-bit when resetting the host. Makes imxesdhc(4)
work on the cubox-i, whereu-boot leaves the controller in 4-bit mode.
-rw-r--r--sys/arch/armv7/imx/imxesdhc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/arch/armv7/imx/imxesdhc.c b/sys/arch/armv7/imx/imxesdhc.c
index 43119ef05e0..605946a6776 100644
--- a/sys/arch/armv7/imx/imxesdhc.c
+++ b/sys/arch/armv7/imx/imxesdhc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: imxesdhc.c,v 1.15 2016/05/05 11:01:08 kettenis Exp $ */
+/* $OpenBSD: imxesdhc.c,v 1.16 2016/05/06 20:24:35 kettenis Exp $ */
/*
* Copyright (c) 2009 Dale Rahn <drahn@openbsd.org>
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -124,6 +124,9 @@
#define SDHC_MIX_CTRL_AC12EN (1 << 2)
#define SDHC_MIX_CTRL_DTDSEL (1 << 4)
#define SDHC_MIX_CTRL_MSBSEL (1 << 5)
+#define SDHC_PROT_CTRL_DTW_MASK (0x3 << 1)
+#define SDHC_PROT_CTRL_DTW_4BIT (1 << 1)
+#define SDHC_PROT_CTRL_DTW_8BIT (1 << 2)
#define SDHC_PROT_CTRL_DMASEL_SDMA_MASK (0x3 << 8)
#define SDHC_HOST_CTRL_CAP_MBL_SHIFT 16
#define SDHC_HOST_CTRL_CAP_MBL_MASK 0x7
@@ -410,6 +413,9 @@ imxesdhc_host_reset(sdmmc_chipset_handle_t sch)
HWRITE4(sc, SDHC_PROT_CTRL,
HREAD4(sc, SDHC_PROT_CTRL) & ~SDHC_PROT_CTRL_DMASEL_SDMA_MASK);
+ /* Switch back to 1-bit bus. */
+ HCLR4(sc, SDHC_PROT_CTRL, SDHC_PROT_CTRL_DTW_MASK);
+
splx(s);
return 0;
}