1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
/* $OpenBSD: octmmcreg.h,v 1.3 2017/10/16 14:18:47 visa Exp $ */
/*
* Copyright (c) 2016 Visa Hankala
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _OCTMMCREG_H_
#define _OCTMMCREG_H_
#define MIO_BOOT_CFG 0x00011800000000d0ull
/*
* MMC registers
*/
#define MIO_EMM_CFG 0x00
#define MIO_EMM_SWITCH 0x48
#define MIO_EMM_SWITCH_RES_62_63 0xc000000000000000ull
#define MIO_EMM_SWITCH_BUS_ID 0x3000000000000000ull
#define MIO_EMM_SWITCH_BUS_ID_SHIFT 60
#define MIO_EMM_SWITCH_SWITCH_EXE 0x0800000000000000ull
#define MIO_EMM_SWITCH_SWITCH_ERR0 0x0400000000000000ull
#define MIO_EMM_SWITCH_SWITCH_ERR1 0x0200000000000000ull
#define MIO_EMM_SWITCH_SWITCH_ERR2 0x0100000000000000ull
#define MIO_EMM_SWITCH_RES_49_55 0x00fe000000000000ull
#define MIO_EMM_SWITCH_HS_TIMING 0x0001000000000000ull
#define MIO_EMM_SWITCH_HS_TIMING_SHIFT 48
#define MIO_EMM_SWITCH_RES_43_47 0x0000f80000000000ull
#define MIO_EMM_SWITCH_BUS_WIDTH 0x0000070000000000ull
#define MIO_EMM_SWITCH_BUS_WIDTH_SHIFT 40
#define MIO_EMM_SWITCH_RES_36_39 0x000000f000000000ull
#define MIO_EMM_SWITCH_POWER_CLASS 0x0000000f00000000ull
#define MIO_EMM_SWITCH_POWER_CLASS_SHIFT 32
#define MIO_EMM_SWITCH_CLK_HI 0x00000000ffff0000ull
#define MIO_EMM_SWITCH_CLK_HI_SHIFT 16
#define MIO_EMM_SWITCH_CLK_LO 0x000000000000ffffull
#define MIO_EMM_SWITCH_CLK_LO_SHIFT 0
#define MIO_EMM_SWITCH_CLK_MAX 0xffffu
#define MIO_EMM_DMA 0x50
#define MIO_EMM_DMA_RES_62_63 0xc000000000000000ull
#define MIO_EMM_DMA_BUS_ID 0x3000000000000000ull
#define MIO_EMM_DMA_BUS_ID_SHIFT 60
#define MIO_EMM_DMA_DMA_VAL 0x0800000000000000ull
#define MIO_EMM_DMA_SECTOR 0x0400000000000000ull
#define MIO_EMM_DMA_DAT_NULL 0x0200000000000000ull
#define MIO_EMM_DMA_THRES 0x01f8000000000000ull
#define MIO_EMM_DMA_REL_WR 0x0004000000000000ull
#define MIO_EMM_DMA_RW 0x0002000000000000ull
#define MIO_EMM_DMA_MULTI 0x0001000000000000ull
#define MIO_EMM_DMA_BLOCK_CNT 0x0000ffff00000000ull
#define MIO_EMM_DMA_BLOCK_CNT_SHIFT 32
#define MIO_EMM_DMA_CARD_ADDR 0x00000000ffffffffull
#define MIO_EMM_CMD 0x58
#define MIO_EMM_CMD_RES_62_63 0xc000000000000000ull
#define MIO_EMM_CMD_BUS_ID 0x3000000000000000ull
#define MIO_EMM_CMD_BUS_ID_SHIFT 60
#define MIO_EMM_CMD_CMD_VAL 0x0800000000000000ull
#define MIO_EMM_CMD_RES_56_58 0x0700000000000000ull
#define MIO_EMM_CMD_DBUF 0x0080000000000000ull
#define MIO_EMM_CMD_OFFSET 0x007e000000000000ull
#define MIO_EMM_CMD_RES_43_48 0x0001f80000000000ull
#define MIO_EMM_CMD_CTYPE_XOR 0x0000060000000000ull
#define MIO_EMM_CMD_CTYPE_XOR_SHIFT 41
#define MIO_EMM_CMD_RTYPE_XOR 0x000001c000000000ull
#define MIO_EMM_CMD_RTYPE_XOR_SHIFT 38
#define MIO_EMM_CMD_CMD_IDX 0x0000003f00000000ull
#define MIO_EMM_CMD_CMD_IDX_SHIFT 32
#define MIO_EMM_CMD_ARG 0x00000000ffffffffull
#define MIO_EMM_RSP_STS 0x60
#define MIO_EMM_RSP_STS_RES_62_63 0xc000000000000000ull
#define MIO_EMM_RSP_STS_BUS_ID 0x3000000000000000ull
#define MIO_EMM_RSP_STS_CMD_VAL 0x0800000000000000ull
#define MIO_EMM_RSP_STS_SWITCH_VAL 0x0400000000000000ull
#define MIO_EMM_RSP_STS_DMA_VAL 0x0200000000000000ull
#define MIO_EMM_RSP_STS_DMA_PEND 0x0100000000000000ull
#define MIO_EMM_RSP_STS_RES_29_55 0x00ffffffe0000000ull
#define MIO_EMM_RSP_STS_DBUF_ERR 0x0000000010000000ull
#define MIO_EMM_RSP_STS_RES_24_27 0x000000000f000000ull
#define MIO_EMM_RSP_STS_DBUF 0x0000000000800000ull
#define MIO_EMM_RSP_STS_DBUF_SHIFT 23
#define MIO_EMM_RSP_STS_BLK_TIMEOUT 0x0000000000400000ull
#define MIO_EMM_RSP_STS_BLK_CRC_ERR 0x0000000000200000ull
#define MIO_EMM_RSP_STS_RSP_BUSY 0x0000000000100000ull
#define MIO_EMM_RSP_STS_STP_TIMEOUT 0x0000000000080000ull
#define MIO_EMM_RSP_STS_STP_CRC_ERR 0x0000000000040000ull
#define MIO_EMM_RSP_STS_STP_BAD_STS 0x0000000000020000ull
#define MIO_EMM_RSP_STS_STP_VAL 0x0000000000010000ull
#define MIO_EMM_RSP_STS_RSP_TIMEOUT 0x0000000000008000ull
#define MIO_EMM_RSP_STS_RSP_CRC_ERR 0x0000000000004000ull
#define MIO_EMM_RSP_STS_RSP_BAD_STS 0x0000000000002000ull
#define MIO_EMM_RSP_STS_RSP_VAL 0x0000000000001000ull
#define MIO_EMM_RSP_STS_RSP_TYPE 0x0000000000000e00ull
#define MIO_EMM_RSP_STS_CMD_TYPE 0x0000000000000180ull
#define MIO_EMM_RSP_STS_CMD_IDX 0x000000000000007eull
#define MIO_EMM_RSP_STS_CMD_IDX_SHIFT 1
#define MIO_EMM_RSP_STS_CMD_DONE 0x0000000000000001ull
#define MIO_EMM_RSP_LO 0x68
#define MIO_EMM_RSP_HI 0x70
#define MIO_EMM_INT 0x78
#define MIO_EMM_INT_RES_7_63 0xffffffffffffff80ull
#define MIO_EMM_INT_SWITCH_ERR 0x0000000000000040ull
#define MIO_EMM_INT_SWITCH_DONE 0x0000000000000020ull
#define MIO_EMM_INT_DMA_ERR 0x0000000000000010ull
#define MIO_EMM_INT_CMD_ERR 0x0000000000000008ull
#define MIO_EMM_INT_DMA_DONE 0x0000000000000004ull
#define MIO_EMM_INT_CMD_DONE 0x0000000000000002ull
#define MIO_EMM_INT_BUF_DONE 0x0000000000000001ull
#define MIO_EMM_INT_EN 0x80
#define MIO_EMM_WDOG 0x88
#define MIO_EMM_WDOG_CLK_CNT 0x0000000003ffffffull
#define MIO_EMM_SAMPLE 0x90
#define MIO_EMM_SAMPLE_CMD_CNT 0x0000000003ff0000ull
#define MIO_EMM_SAMPLE_CMD_CNT_SHIFT 16
#define MIO_EMM_SAMPLE_DAT_CNT 0x00000000000003ffull
#define MIO_EMM_SAMPLE_DAT_CNT_SHIFT 0
#define MIO_EMM_STS_MASK 0x98
#define MIO_EMM_RCA 0xa0
#define MIO_EMM_BUF_IDX 0xe0
#define MIO_EMM_BUF_IDX_RES_17_63 0xfffffffffffe0000ull
#define MIO_EMM_BUF_IDX_INC 0x0000000000010000ull
#define MIO_EMM_BUF_IDX_RES_7_15 0x000000000000ff80ull
#define MIO_EMM_BUF_IDX_BUF_NUM 0x0000000000000040ull
#define MIO_EMM_BUF_IDX_BUF_NUM_SHIFT 6
#define MIO_EMM_BUF_IDX_OFFSET 0x000000000000003full
#define MIO_EMM_BUF_DAT 0xe8
/*
* MMC DMA FIFO registers
*/
/* Size of the register space. */
#define MIO_EMM_DMA_FIFO_REGSIZE 0x20
#define MIO_EMM_DMA_FIFO_CFG 0x00
#define MIO_EMM_DMA_FIFO_CFG_CLR 0x0000000000010000ull
#define MIO_EMM_DMA_FIFO_ADR 0x10
#define MIO_EMM_DMA_FIFO_CMD 0x18
#define MIO_EMM_DMA_FIFO_CMD_RW 0x4000000000000000ull
#define MIO_EMM_DMA_FIFO_CMD_INTDIS 0x1000000000000000ull
#define MIO_EMM_DMA_FIFO_CMD_SIZE 0x00fffff000000000ull
#define MIO_EMM_DMA_FIFO_CMD_SIZE_SHIFT 36
/*
* NAND flash DMA registers
*/
#define MIO_NDF_DMA_CFG 0x00
#define MIO_NDF_DMA_CFG_EN 0x8000000000000000ull
#define MIO_NDF_DMA_CFG_RW 0x4000000000000000ull
#define MIO_NDF_DMA_CFG_CLR 0x2000000000000000ull
#define MIO_NDF_DMA_CFG_RES_60_60 0x1000000000000000ull
#define MIO_NDF_DMA_CFG_SWAP32 0x0800000000000000ull
#define MIO_NDF_DMA_CFG_SWAP16 0x0400000000000000ull
#define MIO_NDF_DMA_CFG_SWAP8 0x0200000000000000ull
#define MIO_NDF_DMA_CFG_ENDIAN 0x0100000000000000ull
#define MIO_NDF_DMA_CFG_SIZE 0x00fffff000000000ull
#define MIO_NDF_DMA_CFG_SIZE_SHIFT 36
#define MIO_NDF_DMA_CFG_ADDR 0x0000000fffffffffull
#define MIO_NDF_DMA_ADR 0x08
#endif /* !_OCTMMCREG_H_ */
|