summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2016-05-06 08:09:20 +0000
committerkettenis <kettenis@openbsd.org>2016-05-06 08:09:20 +0000
commit98dad1744686f589a30a05e45898929bd9fa7ed1 (patch)
tree400b9073c1dcb2c079e026c04dddc8b790bc12d9
parentFix efiboot not to hang with a disk whose block size < 512. (diff)
downloadwireguard-openbsd-98dad1744686f589a30a05e45898929bd9fa7ed1.tar.xz
wireguard-openbsd-98dad1744686f589a30a05e45898929bd9fa7ed1.zip
Fix the DMA transfer code to repect the block size in the sdmmc command.
ok stsp@
-rw-r--r--sys/dev/ic/rtsx.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/ic/rtsx.c b/sys/dev/ic/rtsx.c
index 9d1c379c130..bdb5d50154c 100644
--- a/sys/dev/ic/rtsx.c
+++ b/sys/dev/ic/rtsx.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtsx.c,v 1.14 2016/05/05 11:01:08 kettenis Exp $ */
+/* $OpenBSD: rtsx.c,v 1.15 2016/05/06 08:09:20 kettenis Exp $ */
/*
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -977,9 +977,11 @@ rtsx_xfer(struct rtsx_softc *sc, struct sdmmc_command *cmd, u_int32_t *cmdbuf)
/* Queue commands to configure data transfer size. */
rtsx_hostcmd(cmdbuf, &ncmd,
- RTSX_WRITE_REG_CMD, RTSX_SD_BYTE_CNT_L, 0xff, 0);
+ RTSX_WRITE_REG_CMD, RTSX_SD_BYTE_CNT_L, 0xff,
+ (cmd->c_blklen & 0xff));
rtsx_hostcmd(cmdbuf, &ncmd,
- RTSX_WRITE_REG_CMD, RTSX_SD_BYTE_CNT_H, 0xff, 0x02);
+ RTSX_WRITE_REG_CMD, RTSX_SD_BYTE_CNT_H, 0xff,
+ (cmd->c_blklen >> 8));
rtsx_hostcmd(cmdbuf, &ncmd,
RTSX_WRITE_REG_CMD, RTSX_SD_BLOCK_CNT_L, 0xff,
((cmd->c_datalen / cmd->c_blklen) & 0xff));