summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/dev/mmc/mmcreg.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-09-24 11:05:03 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-11-13 10:47:04 +0100
commita5ddb0ea69f21c16b7697a935d7a0c16bb3cffcf (patch)
treedb091fb0f7d091804482156c9f3f55879ac93d5b /freebsd/sys/dev/mmc/mmcreg.h
parenttest/syscalls01: Fix sporadic test failures (diff)
downloadrtems-libbsd-a5ddb0ea69f21c16b7697a935d7a0c16bb3cffcf.tar.bz2
Update to FreeBSD head 2019-09-24
Git mirror commit 6b0307a0a5184339393f555d5d424190d8a8277a.
Diffstat (limited to 'freebsd/sys/dev/mmc/mmcreg.h')
-rw-r--r--freebsd/sys/dev/mmc/mmcreg.h46
1 files changed, 29 insertions, 17 deletions
diff --git a/freebsd/sys/dev/mmc/mmcreg.h b/freebsd/sys/dev/mmc/mmcreg.h
index 4b1f8a0e..f6031410 100644
--- a/freebsd/sys/dev/mmc/mmcreg.h
+++ b/freebsd/sys/dev/mmc/mmcreg.h
@@ -1,7 +1,7 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
- * Copyright (c) 2006 M. Warner Losh. All rights reserved.
+ * Copyright (c) 2006 M. Warner Losh.
* Copyright (c) 2017 Marius Strobl <marius@FreeBSD.org>
* Copyright (c) 2015-2016 Ilya Bakulin <kibab@FreeBSD.org>
*
@@ -200,7 +200,10 @@ struct mmc_data {
#define MMC_DATA_READ (1UL << 1)
#define MMC_DATA_STREAM (1UL << 2)
#define MMC_DATA_MULTI (1UL << 3)
+#define MMC_DATA_BLOCK_SIZE (1UL << 4)
struct mmc_request *mrq;
+ size_t block_size; /* block size for CMD53 */
+ size_t block_count; /* block count for CMD53 */
};
struct mmc_request {
@@ -554,30 +557,39 @@ struct mmc_request {
#define SD_IO_RW_LEN(x) (((x) & 0xFF) << 0)
#define SD_IOE_RW_LEN(x) (((x) & 0x1FF) << 0)
+#define SD_IOE_RW_ADR(x) (((x) & 0x1FFFF) << 9)
+#define SD_IOE_RW_INCR (1u << 26)
#define SD_IOE_RW_BLK (1u << 27)
+#define SD_IOE_RW_FUNC(x) (((x) & 0x7) << 28)
+#define SD_IOE_RW_WR (1u << 31)
/* Card Common Control Registers (CCCR) */
-#define SD_IO_CCCR_START 0x00000
-#define SD_IO_CCCR_SIZE 0x100
-#define SD_IO_CCCR_FN_ENABLE 0x02
-#define SD_IO_CCCR_FN_READY 0x03
-#define SD_IO_CCCR_INT_ENABLE 0x04
-#define SD_IO_CCCR_INT_PENDING 0x05
-#define SD_IO_CCCR_CTL 0x06
-#define CCCR_CTL_RES (1 << 3)
-#define SD_IO_CCCR_BUS_WIDTH 0x07
+#define SD_IO_CCCR_START 0x00000 /* Offset in F0 address space */
+#define SD_IO_CCCR_SIZE 0x100 /* Total size of CCCR */
+#define SD_IO_CCCR_FN_ENABLE 0x02 /* Enabled functions */
+#define SD_IO_CCCR_FN_READY 0x03 /* Function ready status */
+#define SD_IO_CCCR_INT_ENABLE 0x04 /* Per-function interrupt enable */
+#define SD_IO_CCCR_INT_PENDING 0x05 /* Per-function interrupt pending */
+#define SD_IO_CCCR_CTL 0x06 /* I/O Abort register */
+#define CCCR_CTL_RES (1 << 3) /* Perform SDIO reset */
+#define SD_IO_CCCR_BUS_WIDTH 0x07 /* Bus Width register */
#define CCCR_BUS_WIDTH_4 (1 << 1)
#define CCCR_BUS_WIDTH_1 (1 << 0)
-#define SD_IO_CCCR_CARDCAP 0x08
-#define SD_IO_CCCR_CISPTR 0x09 /* XXX 9-10, 10-11, or 9-12 */
-
+#define SD_IO_CCCR_CARDCAP 0x08 /* SDIO card capabilities */
+#define CCCR_CC_SMB (1 << 1) /* CMD53 block mode support */
+#define SD_IO_CCCR_CISPTR 0x09 /* 0x09 - 0x0B */
+#define SD_IO_CCCR_FN0_BLKSZ 0x10 /* 0x10 - 0x11 */
/* Function Basic Registers (FBR) */
-#define SD_IO_FBR_START 0x00100
-#define SD_IO_FBR_SIZE 0x00700
+#define SD_IO_FBR_START 0x00100 /* Offset in F0 address space */
+#define SD_IO_FBR_SIZE 0x00700 /* Total size of FBR */
+#define SD_IO_FBR_F_SIZE 0x00100 /* Size of each function */
+#define SD_IO_FBR_START_F(n) (SD_IO_FBR_START + (n-1) * SD_IO_FBR_F_SIZE)
+#define SD_IO_FBR_CIS_OFFSET 0x9 /* Offset of this function's info block within CIS area */
+#define SD_IO_FBR_IOBLKSZ 0x10 /* Block size for CMD53 block mode operations */
/* Card Information Structure (CIS) */
-#define SD_IO_CIS_START 0x01000
-#define SD_IO_CIS_SIZE 0x17000
+#define SD_IO_CIS_START 0x01000 /* Offset in F0 address space */
+#define SD_IO_CIS_SIZE 0x17000 /* Total size of CIS */
/* CIS tuple codes (based on PC Card 16) */
#define SD_IO_CISTPL_VERS_1 0x15