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