1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 */ 4 #ifndef __SDMMCIP_REG_HW_H 5 #define __SDMMCIP_REG_HW_H 6 7 #include "plat_types.h" 8 9 #define SDMMCIP_REG_CTRL 0x000 10 #define SDMMCIP_REG_PWREN 0x004 11 #define SDMMCIP_REG_CLKDIV 0x008 12 #define SDMMCIP_REG_CLKSRC 0x00C 13 #define SDMMCIP_REG_CLKENA 0x010 14 #define SDMMCIP_REG_TMOUT 0x014 15 #define SDMMCIP_REG_CTYPE 0x018 16 #define SDMMCIP_REG_BLKSIZ 0x01C 17 #define SDMMCIP_REG_BYTCNT 0x020 18 #define SDMMCIP_REG_INTMASK 0x024 19 #define SDMMCIP_REG_CMDARG 0x028 20 #define SDMMCIP_REG_CMD 0x02C 21 #define SDMMCIP_REG_RESP0 0x030 22 #define SDMMCIP_REG_RESP1 0x034 23 #define SDMMCIP_REG_RESP2 0x038 24 #define SDMMCIP_REG_RESP3 0x03C 25 #define SDMMCIP_REG_MINTSTS 0x040 26 #define SDMMCIP_REG_RINTSTS 0x044 27 #define SDMMCIP_REG_STATUS 0x048 28 #define SDMMCIP_REG_FIFOTH 0x04C 29 #define SDMMCIP_REG_CDETECT 0x050 30 #define SDMMCIP_REG_WRTPRT 0x054 31 #define SDMMCIP_REG_GPIO 0x058 32 #define SDMMCIP_REG_TCMCNT 0x05C 33 #define SDMMCIP_REG_TBBCNT 0x060 34 #define SDMMCIP_REG_DEBNCE 0x064 35 #define SDMMCIP_REG_USRID 0x068 36 #define SDMMCIP_REG_VERID 0x06C 37 #define SDMMCIP_REG_HCON 0x070 38 #define SDMMCIP_REG_UHS_REG 0x074 39 #define SDMMCIP_REG_RESET_CARD 0x078 40 #define SDMMCIP_REG_BMOD 0x080 41 #define SDMMCIP_REG_PLDMND 0x084 42 #define SDMMCIP_REG_DBADDR 0x088 43 #define SDMMCIP_REG_IDSTS 0x08C 44 #define SDMMCIP_REG_IDINTEN 0x090 45 #define SDMMCIP_REG_DSCADDR 0x094 46 #define SDMMCIP_REG_BUFADDR 0x098 47 #define SDMMCIP_REG_DATA 0x200 48 49 /* Interrupt Mask register */ 50 #define SDMMCIP_REG_INTMSK_ALL 0xffffffff 51 #define SDMMCIP_REG_INTMSK_CD (1 << 0) 52 #define SDMMCIP_REG_INTMSK_RE (1 << 1) 53 #define SDMMCIP_REG_INTMSK_CDONE (1 << 2) 54 #define SDMMCIP_REG_INTMSK_DTO (1 << 3) 55 #define SDMMCIP_REG_INTMSK_TXDR (1 << 4) 56 #define SDMMCIP_REG_INTMSK_RXDR (1 << 5) 57 #define SDMMCIP_REG_INTMSK_DCRC (1 << 7) 58 #define SDMMCIP_REG_INTMSK_RTO (1 << 8) 59 #define SDMMCIP_REG_INTMSK_DRTO (1 << 9) 60 #define SDMMCIP_REG_INTMSK_HTO (1 << 10) 61 #define SDMMCIP_REG_INTMSK_FRUN (1 << 11) 62 #define SDMMCIP_REG_INTMSK_HLE (1 << 12) 63 #define SDMMCIP_REG_INTMSK_SBE (1 << 13) 64 #define SDMMCIP_REG_INTMSK_ACD (1 << 14) 65 #define SDMMCIP_REG_INTMSK_EBE (1 << 15) 66 67 /* Raw interrupt Regsiter */ 68 #define SDMMCIP_REG_DATA_ERR (SDMMCIP_REG_INTMSK_EBE | SDMMCIP_REG_INTMSK_SBE | SDMMCIP_REG_INTMSK_HLE |\ 69 SDMMCIP_REG_INTMSK_FRUN | SDMMCIP_REG_INTMSK_EBE | SDMMCIP_REG_INTMSK_DCRC) 70 #define SDMMCIP_REG_DATA_TOUT (SDMMCIP_REG_INTMSK_HTO | SDMMCIP_REG_INTMSK_DRTO) 71 /* CTRL register */ 72 #define SDMMCIP_REG_CTRL_RESET (1 << 0) 73 #define SDMMCIP_REG_CTRL_FIFO_RESET (1 << 1) 74 #define SDMMCIP_REG_CTRL_DMA_RESET (1 << 2) 75 #define SDMMCIP_REG_INT_EN (1 << 4) 76 #define SDMMCIP_REG_DMA_EN (1 << 5) 77 #define SDMMCIP_REG_CTRL_SEND_AS_CCSD (1 << 10) 78 #define SDMMCIP_REG_IDMAC_EN (1 << 25) 79 #define SDMMCIP_REG_RESET_ALL (SDMMCIP_REG_CTRL_RESET | SDMMCIP_REG_CTRL_FIFO_RESET |\ 80 SDMMCIP_REG_CTRL_DMA_RESET) 81 82 /* CMD register */ 83 #define SDMMCIP_REG_CMD_RESP_EXP (1 << 6) 84 #define SDMMCIP_REG_CMD_RESP_LENGTH (1 << 7) 85 #define SDMMCIP_REG_CMD_CHECK_CRC (1 << 8) 86 #define SDMMCIP_REG_CMD_DATA_EXP (1 << 9) 87 #define SDMMCIP_REG_CMD_RW (1 << 10) 88 #define SDMMCIP_REG_CMD_SEND_STOP (1 << 12) 89 #define SDMMCIP_REG_CMD_ABORT_STOP (1 << 14) 90 #define SDMMCIP_REG_CMD_PRV_DAT_WAIT (1 << 13) 91 #define SDMMCIP_REG_CMD_UPD_CLK (1 << 21) 92 #define SDMMCIP_REG_CMD_USE_HOLD_REG (1 << 29) 93 #define SDMMCIP_REG_CMD_START (1 << 31) 94 95 /* CLKENA register */ 96 #define SDMMCIP_REG_CLKEN_ENABLE (1 << 0) 97 #define SDMMCIP_REG_CLKEN_LOW_PWR (1 << 16) 98 99 /* Card-type registe */ 100 #define SDMMCIP_REG_CTYPE_1BIT 0 101 #define SDMMCIP_REG_CTYPE_4BIT (1 << 0) 102 #define SDMMCIP_REG_CTYPE_8BIT (1 << 16) 103 104 /* Status Register */ 105 #define SDMMCIP_REG_BUSY (1 << 9) 106 #define SDMMCIP_REG_FIFO_FULL (1 << 3) 107 #define SDMMCIP_REG_FIFO_EMPTY (1 << 2) 108 #define SDMMCIP_REG_FIFO_COUNT_SHIFT (17) 109 #define SDMMCIP_REG_FIFO_COUNT_MASK (0x1fff << SDMMCIP_REG_FIFO_COUNT_SHIFT) 110 111 /* FIFOTH Register */ 112 #define MSIZE(x) ((x) << 28) 113 #define RX_WMARK(x) ((x) << 16) 114 #define TX_WMARK(x) (x) 115 #define RX_WMARK_SHIFT 16 116 #define RX_WMARK_MASK (0xfff << RX_WMARK_SHIFT) 117 118 #define SDMMCIP_REG_IDMAC_OWN (1 << 31) 119 #define SDMMCIP_REG_IDMAC_CH (1 << 4) 120 #define SDMMCIP_REG_IDMAC_FS (1 << 3) 121 #define SDMMCIP_REG_IDMAC_LD (1 << 2) 122 123 /* Bus Mode Register */ 124 #define SDMMCIP_REG_BMOD_IDMAC_RESET (1 << 0) 125 #define SDMMCIP_REG_BMOD_IDMAC_FB (1 << 1) 126 #define SDMMCIP_REG_BMOD_IDMAC_EN (1 << 7) 127 128 /* UHS register */ 129 #define SDMMCIP_REG_DDR_MODE (1 << 16) 130 131 /* quirks */ 132 #define SDMMCIP_REG_QUIRK_DISABLE_SMU (1 << 0) 133 134 /* FIFO Register */ 135 #define SDMMCIP_REG_FIFO_OFFSET 0x200 136 137 #endif /* __SDMMCIP_REG_HW_H */ 138