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