1 /******************************************************************************
2 ** File Name: sdio_reg_v3.h *
3 ** Author: Binggo.Zhou *
5 ** Copyright: 2005 Spreatrum, Incoporated. All Rights Reserved. *
7 ******************************************************************************/
8 /******************************************************************************
10 **---------------------------------------------------------------------------*
11 ** DATE NAME DESCRIPTION *
12 ** 02/03/2010 Binggo.Zhou Create. *
13 ******************************************************************************/
16 #ifndef _SDIO_REG_V3_H_
17 #define _SDIO_REG_V3_H_
20 //-jason.wu confirm start
22 #define SDIO0_SYS_ADDR (SDIO0_BASE_ADDR+0x0)
23 #define SDIO0_BLK_SIZE (SDIO0_BASE_ADDR+0x4)
24 #define SDIO0_BLK_CNT (SDIO0_BASE_ADDR+0x6)
25 #define SDIO0_ARGU_REG (SDIO0_BASE_ADDR+0x8)
26 #define SDIO0_TRANS_MODE (SDIO0_BASE_ADDR+0xc)
27 #define SDIO0_CMD_REG (SDIO0_BASE_ADDR+0xE)
28 #define SDIO0_RESPONSE_REG (SDIO0_BASE_ADDR+0x10)
29 #define SDIO0_BUF_DATA_PORT (SDIO0_BASE_ADDR+0x20)
30 #define SDIO0_PRESENT_STATE (SDIO0_BASE_ADDR+0x24)
31 #define SDIO0_HC_CTL (SDIO0_BASE_ADDR+0x28)
32 #define SDIO0_PWR_CTL (SDIO0_BASE_ADDR+0x29)
33 #define SDIO0_BLK_GAP (SDIO0_BASE_ADDR+0x2A)
34 #define SDIO0_WAKEUP_CTL (SDIO0_BASE_ADDR+0x2B)
35 #define SDIO0_CLK_CTL (SDIO0_BASE_ADDR+0x2C)
36 #define SDIO0_TIMEOUT_CTL (SDIO0_BASE_ADDR+0x2E)
37 #define SDIO0_SW_RESET (SDIO0_BASE_ADDR+0x2F)
38 #define SDIO0_NML_INT_STS (SDIO0_BASE_ADDR+0x30)
39 #define SDIO0_ERR_INT_STS (SDIO0_BASE_ADDR+0x32)
40 #define SDIO0_NML_INT_STS_EN (SDIO0_BASE_ADDR+0x34)
41 #define SDIO0_ERR_INT_STS_EN (SDIO0_BASE_ADDR+0x36)
42 #define SDIO0_NML_INT_SIG_EN (SDIO0_BASE_ADDR+0x38)
43 #define SDIO0_ERR_INT_SIG_EN (SDIO0_BASE_ADDR+0x3A)
44 #define SDIO0_ACMD12_ERRSTS (SDIO0_BASE_ADDR+0x3C)
45 #define SDIO0_CAPBILITY_REG (SDIO0_BASE_ADDR+0x40)
46 #define SDIO0_MAX_CUR_CAP_REG (SDIO0_BASE_ADDR+0x48)
47 #define SDIO0_SLOT_INT_STS (SDIO0_BASE_ADDR+0xFC)
48 #define SDIO0_HC_VER_REG (SDIO0_BASE_ADDR+0xFE)
50 #define SDIO1_SYS_ADDR (SDIO1_BASE_ADDR+0x0)
51 #define SDIO1_BLK_SIZE (SDIO1_BASE_ADDR+0x4)
52 #define SDIO1_BLK_CNT (SDIO1_BASE_ADDR+0x6)
53 #define SDIO1_ARGU_REG (SDIO1_BASE_ADDR+0x8)
54 #define SDIO1_TRANS_MODE (SDIO1_BASE_ADDR+0xc)
55 #define SDIO1_CMD_REG (SDIO1_BASE_ADDR+0xE)
56 #define SDIO1_RESPONSE_REG (SDIO1_BASE_ADDR+0x10)
57 #define SDIO1_BUF_DATA_PORT (SDIO1_BASE_ADDR+0x20)
58 #define SDIO1_PRESENT_STATE (SDIO1_BASE_ADDR+0x24)
59 #define SDIO1_HC_CTL (SDIO1_BASE_ADDR+0x28)
60 #define SDIO1_PWR_CTL (SDIO1_BASE_ADDR+0x29)
61 #define SDIO1_BLK_GAP (SDIO1_BASE_ADDR+0x2A)
62 #define SDIO1_WAKEUP_CTL (SDIO1_BASE_ADDR+0x2B)
63 #define SDIO1_CLK_CTL (SDIO1_BASE_ADDR+0x2C)
64 #define SDIO1_TIMEOUT_CTL (SDIO1_BASE_ADDR+0x2E)
65 #define SDIO1_SW_RESET (SDIO1_BASE_ADDR+0x2F)
66 #define SDIO1_NML_INT_STS (SDIO1_BASE_ADDR+0x30)
67 #define SDIO1_ERR_INT_STS (SDIO1_BASE_ADDR+0x32)
68 #define SDIO1_NML_INT_STS_EN (SDIO1_BASE_ADDR+0x34)
69 #define SDIO1_ERR_INT_STS_EN (SDIO1_BASE_ADDR+0x36)
70 #define SDIO1_NML_INT_SIG_EN (SDIO1_BASE_ADDR+0x38)
71 #define SDIO1_ERR_INT_SIG_EN (SDIO1_BASE_ADDR+0x3A)
72 #define SDIO1_ACMD12_ERRSTS (SDIO1_BASE_ADDR+0x3C)
73 #define SDIO1_CAPBILITY_REG (SDIO1_BASE_ADDR+0x40)
74 #define SDIO1_MAX_CUR_CAP_REG (SDIO1_BASE_ADDR+0x48)
75 #define SDIO1_SLOT_INT_STS (SDIO1_BASE_ADDR+0xFC)
76 #define SDIO1_HC_VER_REG (SDIO1_BASE_ADDR+0xFE)
78 #define SDIO2_SYS_ADDR (SDIO2_BASE_ADDR+0x0)
79 #define SDIO2_BLK_SIZE (SDIO2_BASE_ADDR+0x4)
80 #define SDIO2_BLK_CNT (SDIO2_BASE_ADDR+0x6)
81 #define SDIO2_ARGU_REG (SDIO2_BASE_ADDR+0x8)
82 #define SDIO2_TRANS_MODE (SDIO2_BASE_ADDR+0xc)
83 #define SDIO2_CMD_REG (SDIO2_BASE_ADDR+0xE)
84 #define SDIO2_RESPONSE_REG (SDIO2_BASE_ADDR+0x10)
85 #define SDIO2_BUF_DATA_PORT (SDIO2_BASE_ADDR+0x20)
86 #define SDIO2_PRESENT_STATE (SDIO2_BASE_ADDR+0x24)
87 #define SDIO2_HC_CTL (SDIO2_BASE_ADDR+0x28)
88 #define SDIO2_PWR_CTL (SDIO2_BASE_ADDR+0x29)
89 #define SDIO2_BLK_GAP (SDIO2_BASE_ADDR+0x2A)
90 #define SDIO2_WAKEUP_CTL (SDIO2_BASE_ADDR+0x2B)
91 #define SDIO2_CLK_CTL (SDIO2_BASE_ADDR+0x2C)
92 #define SDIO2_TIMEOUT_CTL (SDIO2_BASE_ADDR+0x2E)
93 #define SDIO2_SW_RESET (SDIO2_BASE_ADDR+0x2F)
94 #define SDIO2_NML_INT_STS (SDIO2_BASE_ADDR+0x30)
95 #define SDIO2_ERR_INT_STS (SDIO2_BASE_ADDR+0x32)
96 #define SDIO2_NML_INT_STS_EN (SDIO2_BASE_ADDR+0x34)
97 #define SDIO2_ERR_INT_STS_EN (SDIO2_BASE_ADDR+0x36)
98 #define SDIO2_NML_INT_SIG_EN (SDIO2_BASE_ADDR+0x38)
99 #define SDIO2_ERR_INT_SIG_EN (SDIO2_BASE_ADDR+0x3A)
100 #define SDIO2_ACMD12_ERRSTS (SDIO2_BASE_ADDR+0x3C)
101 #define SDIO2_CAPBILITY_REG (SDIO2_BASE_ADDR+0x40)
102 #define SDIO2_MAX_CUR_CAP_REG (SDIO2_BASE_ADDR+0x48)
103 #define SDIO2_SLOT_INT_STS (SDIO2_BASE_ADDR+0xFC)
104 #define SDIO2_HC_VER_REG (SDIO2_BASE_ADDR+0xFE)
106 #define EMMC_SYS_ADDR (EMMC_BASE_ADDR+0x0)
107 #define EMMC_BLK_SIZE (EMMC_BASE_ADDR+0x4)
108 #define EMMC_BLK_CNT (EMMC_BASE_ADDR+0x6)
109 #define EMMC_ARGU_REG (EMMC_BASE_ADDR+0x8)
110 #define EMMC_TRANS_MODE (EMMC_BASE_ADDR+0xc)
111 #define EMMC_CMD_REG (EMMC_BASE_ADDR+0xE)
112 #define EMMC_RESPONSE_REG (EMMC_BASE_ADDR+0x10)
113 #define EMMC_BUF_DATA_PORT (EMMC_BASE_ADDR+0x20)
114 #define EMMC_PRESENT_STATE (EMMC_BASE_ADDR+0x24)
115 #define EMMC_HC_CTL (EMMC_BASE_ADDR+0x28)
116 #define EMMC_PWR_CTL (EMMC_BASE_ADDR+0x29)
117 #define EMMC_BLK_GAP (EMMC_BASE_ADDR+0x2A)
118 #define EMMC_WAKEUP_CTL (EMMC_BASE_ADDR+0x2B)
119 #define EMMC_CLK_CTL (EMMC_BASE_ADDR+0x2C)
120 #define EMMC_TIMEOUT_CTL (EMMC_BASE_ADDR+0x2E)
121 #define EMMC_SW_RESET (EMMC_BASE_ADDR+0x2F)
122 #define EMMC_NML_INT_STS (EMMC_BASE_ADDR+0x30)
123 #define EMMC_ERR_INT_STS (EMMC_BASE_ADDR+0x32)
124 #define EMMC_NML_INT_STS_EN (EMMC_BASE_ADDR+0x34)
125 #define EMMC_ERR_INT_STS_EN (EMMC_BASE_ADDR+0x36)
126 #define EMMC_NML_INT_SIG_EN (EMMC_BASE_ADDR+0x38)
127 #define EMMC_ERR_INT_SIG_EN (EMMC_BASE_ADDR+0x3A)
128 #define EMMC_ACMD12_ERRSTS (EMMC_BASE_ADDR+0x3C)
129 #define EMMC_CAPBILITY_REG (EMMC_BASE_ADDR+0x40)
130 #define EMMC_MAX_CUR_CAP_REG (EMMC_BASE_ADDR+0x48)
131 #define EMMC_SLOT_INT_STS (EMMC_BASE_ADDR+0xFC)
132 #define EMMC_HC_VER_REG (EMMC_BASE_ADDR+0xFE)
134 typedef struct SDIO_REG_CFG_TAG
136 volatile uint32 DMA_SYS_ADD;
137 volatile uint32 BLK_SIZE_COUNT;
138 volatile uint32 CMD_ARGUMENT;
139 volatile uint32 CMD_TRANSMODE;
140 volatile uint32 RSP0;
141 volatile uint32 RSP1;
142 volatile uint32 RSP2;
143 volatile uint32 RSP3;
144 volatile uint32 BUFFER_PORT;
145 volatile uint32 PRESENT_STAT;
146 volatile uint32 HOST_CTL0;
147 volatile uint32 HOST_CTL1;
148 volatile uint32 INT_STA;
149 volatile uint32 INT_STA_EN;
150 volatile uint32 INT_SIG_EN;
151 volatile uint32 CMD12_ERR_STA;
152 volatile uint32 CAPBILITY;
153 volatile uint32 CAPBILITY_RES;
154 volatile uint32 CURR_CAPBILITY;
155 volatile uint32 CURR_CAPBILITY_RES;
163 //define transfer mode and command mode...
165 #define SDIO_CMD_TYPE_ABORT (3<<22)
166 #define SDIO_CMD_TYPE_RESUME (2<<22)
167 #define SDIO_CMD_TYPE_SUSPEND (1<<22)
168 #define SDIO_CMD_TYPE_NML (0<<22)
170 #define SDIO_CMD_DATA_PRESENT BIT_21
172 #define SDIO_CMD_INDEX_CHK BIT_20
173 #define SDIO_CMD_CRC_CHK BIT_19
174 #define SDIO_CMD_NO_RSP (0x00<<16)
175 #define SDIO_CMD_RSP_136 (0x01<<16)
176 #define SDIO_CMD_RSP_48 (0x02<<16)
177 #define SDIO_CMD_RSP_48_BUSY (0x03<<16)
179 #define SDIO_NO_RSP 0x0;
180 #define SDIO_R1 ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
181 #define SDIO_R2 ( SDIO_CMD_RSP_136 | SDIO_CMD_CRC_CHK )
182 #define SDIO_R3 SDIO_CMD_RSP_48
183 #define SDIO_R4 SDIO_CMD_RSP_48
184 #define SDIO_R5 ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
185 #define SDIO_R6 ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
186 #define SDIO_R7 ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
187 #define SDIO_R1B ( SDIO_CMD_RSP_48_BUSY | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
188 #define SDIO_R5B ( SDIO_CMD_RSP_48_BUSY | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
190 #define SDIO_TRANS_COMP_ATA BIT_6
191 #define SDIO_TRANS_MULTIBLK BIT_5
192 #define SDIO_TRANS_DIR_READ BIT_4
193 #define SDIO_TRANS_AUTO_CMD12_EN BIT_2
194 #define SDIO_TRANS_BLK_CNT_EN BIT_1
195 #define SDIO_TRANS_DMA_EN BIT_0
198 //define normal and error sts index...
199 #define SDIO_VENDOR_SPEC_ERR (BIT_29|BIT_30|BIT_31)
200 #define SDIO_TARGET_RESP_ERR (BIT_28)
201 #define SDIO_AUTO_CMD12_ERR (BIT_24)
202 #define SDIO_CURRENT_LMT_ERR (BIT_23)
203 #define SDIO_DATA_ENDBIT_ERR (BIT_22)
204 #define SDIO_DATA_CRC_ERR (BIT_21)
205 #define SDIO_DATA_TMOUT_ERR (BIT_20)
206 #define SDIO_CMD_INDEX_ERR (BIT_19)
207 #define SDIO_CMD_ENDBIT_ERR (BIT_18)
208 #define SDIO_CMD_CRC_ERR (BIT_17)
209 #define SDIO_CMD_TMOUT_ERR (BIT_16)
210 #define SDIO_ERROR_INT (BIT_15)
211 #define SDIO_CARD_INT (BIT_8)
212 #define SDIO_CARD_REMOVAL (BIT_7)
213 #define SDIO_CARD_INSERTION (BIT_6)
214 #define SDIO_BUF_READ_RDY (BIT_5)
215 #define SDIO_BUF_WRITE_RDY (BIT_4)
216 #define SDIO_DMA_INT (BIT_3)
217 #define SDIO_BLK_GAP_EVT (BIT_2)
218 #define SDIO_TRANSFER_CMPLETE (BIT_1)
219 #define SDIO_CMD_CMPLETE (BIT_0)
221 //-jason.wu confirm end
225 #endif //_SDIO_REG_V3_H_