diff options
author | 2018-05-25 00:04:11 +0000 | |
---|---|---|
committer | 2018-05-25 00:04:11 +0000 | |
commit | 402f30ee6af40ed77fa536e14bc97a891a41ed29 (patch) | |
tree | 2c7eb07439ac133abdcb7d4106664a51702ddcd5 | |
parent | three forgotten s/-literal/-unfilled/ (diff) | |
download | wireguard-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.c | 6 | ||||
-rw-r--r-- | sys/dev/sdmmc/sdhc.c | 7 |
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 && |