summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2018-05-25 00:04:11 +0000
committerpatrick <patrick@openbsd.org>2018-05-25 00:04:11 +0000
commit402f30ee6af40ed77fa536e14bc97a891a41ed29 (patch)
tree2c7eb07439ac133abdcb7d4106664a51702ddcd5
parentthree forgotten s/-literal/-unfilled/ (diff)
downloadwireguard-openbsd-402f30ee6af40ed77fa536e14bc97a891a41ed29.tar.xz
wireguard-openbsd-402f30ee6af40ed77fa536e14bc97a891a41ed29.zip
For SDIO multi-blocks we must not use the AUTO CMD12 feature,
this is only for memory card read/writes. ok kettenis@
-rw-r--r--sys/dev/fdt/imxesdhc.c6
-rw-r--r--sys/dev/sdmmc/sdhc.c7
2 files changed, 8 insertions, 5 deletions
diff --git a/sys/dev/fdt/imxesdhc.c b/sys/dev/fdt/imxesdhc.c
index 97c17aefc78..f6d085132c1 100644
--- a/sys/dev/fdt/imxesdhc.c
+++ b/sys/dev/fdt/imxesdhc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: imxesdhc.c,v 1.4 2018/05/03 11:18:08 patrick Exp $ */
+/* $OpenBSD: imxesdhc.c,v 1.5 2018/05/25 00:04:11 patrick Exp $ */
/*
* Copyright (c) 2009 Dale Rahn <drahn@openbsd.org>
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -30,6 +30,7 @@
#include <dev/sdmmc/sdmmcchip.h>
#include <dev/sdmmc/sdmmcvar.h>
+#include <dev/sdmmc/sdmmc_ioreg.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_clock.h>
@@ -903,7 +904,8 @@ imxesdhc_start_command(struct imxesdhc_softc *sc, struct sdmmc_command *cmd)
command |= SDHC_MIX_CTRL_BCEN;
if (blkcount > 1) {
command |= SDHC_MIX_CTRL_MSBSEL;
- command |= SDHC_MIX_CTRL_AC12EN;
+ if (cmd->c_opcode != SD_IO_RW_EXTENDED)
+ command |= SDHC_MIX_CTRL_AC12EN;
}
}
if (cmd->c_dmamap && cmd->c_datalen > 0 &&
diff --git a/sys/dev/sdmmc/sdhc.c b/sys/dev/sdmmc/sdhc.c
index bfb3596bcc3..b73368cb0c5 100644
--- a/sys/dev/sdmmc/sdhc.c
+++ b/sys/dev/sdmmc/sdhc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sdhc.c,v 1.58 2018/03/20 04:18:40 jmatthew Exp $ */
+/* $OpenBSD: sdhc.c,v 1.59 2018/05/25 00:04:12 patrick Exp $ */
/*
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -33,6 +33,7 @@
#include <dev/sdmmc/sdmmcchip.h>
#include <dev/sdmmc/sdmmcreg.h>
#include <dev/sdmmc/sdmmcvar.h>
+#include <dev/sdmmc/sdmmc_ioreg.h>
#define SDHC_COMMAND_TIMEOUT hz
#define SDHC_BUFFER_TIMEOUT hz
@@ -849,8 +850,8 @@ sdhc_start_command(struct sdhc_host *hp, struct sdmmc_command *cmd)
mode |= SDHC_BLOCK_COUNT_ENABLE;
if (blkcount > 1) {
mode |= SDHC_MULTI_BLOCK_MODE;
- /* XXX only for memory commands? */
- mode |= SDHC_AUTO_CMD12_ENABLE;
+ if (cmd->c_opcode != SD_IO_RW_EXTENDED)
+ mode |= SDHC_AUTO_CMD12_ENABLE;
}
}
if (cmd->c_dmamap && cmd->c_datalen > 0 &&