diff options
author | 2016-05-06 08:09:20 +0000 | |
---|---|---|
committer | 2016-05-06 08:09:20 +0000 | |
commit | 98dad1744686f589a30a05e45898929bd9fa7ed1 (patch) | |
tree | 400b9073c1dcb2c079e026c04dddc8b790bc12d9 | |
parent | Fix efiboot not to hang with a disk whose block size < 512. (diff) | |
download | wireguard-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.c | 8 |
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)); |