tizen 2.4 release
[kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8810 / sdio_reg_v3.h
1 /******************************************************************************
2  ** File Name:    sdio_reg_v3.h                                           *
3  ** Author:       Binggo.Zhou                                               *
4  ** DATE:         02/03/2010                                                  *
5  ** Copyright:    2005 Spreatrum, Incoporated. All Rights Reserved.           *
6  ** Description:                                                              *
7  ******************************************************************************/
8 /******************************************************************************
9  **                   Edit    History                                         *
10  **---------------------------------------------------------------------------*
11  ** DATE          NAME            DESCRIPTION                                 *
12  ** 02/03/2010    Binggo.Zhou     Create.                                     *
13  ******************************************************************************/
14
15
16 #ifndef _SDIO_REG_V3_H_
17 #define _SDIO_REG_V3_H_
18
19
20 //-jason.wu confirm start
21
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)
49
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)
77
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)
105
106
107 #define EMMC_SYS_ADDR          (EMMC_BASE_ADDR+0x0)
108 #define EMMC_BLK_SIZE          (EMMC_BASE_ADDR+0x4)
109 #define EMMC_BLK_CNT           (EMMC_BASE_ADDR+0x6)
110 #define EMMC_ARGU_REG          (EMMC_BASE_ADDR+0x8)
111 #define EMMC_TRANS_MODE        (EMMC_BASE_ADDR+0xc)
112 #define EMMC_CMD_REG           (EMMC_BASE_ADDR+0xE)
113 #define EMMC_RESPONSE_REG      (EMMC_BASE_ADDR+0x10)
114 #define EMMC_BUF_DATA_PORT     (EMMC_BASE_ADDR+0x20)
115 #define EMMC_PRESENT_STATE     (EMMC_BASE_ADDR+0x24)
116 #define EMMC_HC_CTL            (EMMC_BASE_ADDR+0x28)
117 #define EMMC_PWR_CTL           (EMMC_BASE_ADDR+0x29)
118 #define EMMC_BLK_GAP           (EMMC_BASE_ADDR+0x2A)
119 #define EMMC_WAKEUP_CTL        (EMMC_BASE_ADDR+0x2B)
120 #define EMMC_CLK_CTL           (EMMC_BASE_ADDR+0x2C)
121 #define EMMC_TIMEOUT_CTL       (EMMC_BASE_ADDR+0x2E)
122 #define EMMC_SW_RESET          (EMMC_BASE_ADDR+0x2F)
123 #define EMMC_NML_INT_STS       (EMMC_BASE_ADDR+0x30)
124 #define EMMC_ERR_INT_STS       (EMMC_BASE_ADDR+0x32)
125 #define EMMC_NML_INT_STS_EN    (EMMC_BASE_ADDR+0x34)
126 #define EMMC_ERR_INT_STS_EN    (EMMC_BASE_ADDR+0x36)
127 #define EMMC_NML_INT_SIG_EN    (EMMC_BASE_ADDR+0x38)
128 #define EMMC_ERR_INT_SIG_EN    (EMMC_BASE_ADDR+0x3A)
129 #define EMMC_ACMD12_ERRSTS     (EMMC_BASE_ADDR+0x3C)
130 #define EMMC_CAPBILITY_REG     (EMMC_BASE_ADDR+0x40)
131 #define EMMC_MAX_CUR_CAP_REG   (EMMC_BASE_ADDR+0x48)
132 #define EMMC_FORCE_EVENT       (EMMC_BASE_ADDR+0x50)
133 #define EMMC_PRE_VAL_DEF       (EMMC_BASE_ADDR+0x60)
134 #define EMMC_PRE_VAL_HIGH      (EMMC_BASE_ADDR+0x64)
135 #define EMMC_PRE_VAL_SDR50     (EMMC_BASE_ADDR+0x68)
136 #define EMMC_PRE_VAL_DDR50     (EMMC_BASE_ADDR+0x6C)
137 #define EMMC_CLK_WR_DL         (EMMC_BASE_ADDR+0x80)
138 #define EMMC_CLK_RD_POS_DL     (EMMC_BASE_ADDR+0x84)
139 #define EMMC_CLK_RD_NEG_DL     (EMMC_BASE_ADDR+0x88)
140 #define EMMC_SLOT_INT_STS      (EMMC_BASE_ADDR+0xFC)
141 #define EMMC_HC_VER_REG        (EMMC_BASE_ADDR+0xFE)
142
143
144 typedef struct SDIO_REG_CFG_TAG
145 {
146     volatile uint32 DMA_SYS_ADD;
147     volatile uint32 BLK_SIZE_COUNT;
148     volatile uint32 CMD_ARGUMENT;
149     volatile uint32 CMD_TRANSMODE;
150     volatile uint32 RSP0;
151     volatile uint32 RSP1;
152     volatile uint32 RSP2;
153     volatile uint32 RSP3;
154     volatile uint32 BUFFER_PORT;
155     volatile uint32 PRESENT_STAT;
156     volatile uint32 HOST_CTL0;
157     volatile uint32 HOST_CTL1;
158     volatile uint32 INT_STA;
159     volatile uint32 INT_STA_EN;
160     volatile uint32 INT_SIG_EN;
161 #ifdef CONFIG_SC7710G2
162         volatile uint32 HOST_CTL2;
163 #else
164         volatile uint32 CMD12_ERR_STA;
165 #endif
166
167     volatile uint32 CAPBILITY;
168     volatile uint32 CAPBILITY_RES;
169     volatile uint32 CURR_CAPBILITY;
170     volatile uint32 CURR_CAPBILITY_RES;
171 }
172 SDIO_REG_CFG;
173
174
175 //---
176
177 //=====
178 //define transfer mode and command mode...
179 //command mode
180 #define SDIO_CMD_TYPE_ABORT                 (3<<22)
181 #define SDIO_CMD_TYPE_RESUME                    (2<<22)
182 #define SDIO_CMD_TYPE_SUSPEND                   (1<<22)
183 #define SDIO_CMD_TYPE_NML                       (0<<22)
184
185 #define SDIO_CMD_DATA_PRESENT                   BIT_21
186
187 #define SDIO_CMD_INDEX_CHK                  BIT_20
188 #define SDIO_CMD_CRC_CHK                        BIT_19
189 #define SDIO_CMD_NO_RSP                     (0x00<<16)
190 #define SDIO_CMD_RSP_136                        (0x01<<16)
191 #define SDIO_CMD_RSP_48                     (0x02<<16)
192 #define SDIO_CMD_RSP_48_BUSY                    (0x03<<16)
193
194 #define SDIO_NO_RSP     0x0;
195 #define SDIO_R1     ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
196 #define SDIO_R2     ( SDIO_CMD_RSP_136 | SDIO_CMD_CRC_CHK )
197 #define SDIO_R3     SDIO_CMD_RSP_48
198 #define SDIO_R4     SDIO_CMD_RSP_48
199 #define SDIO_R5     ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
200 #define SDIO_R6     ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
201 #define SDIO_R7     ( SDIO_CMD_RSP_48 | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
202 #define SDIO_R1B    ( SDIO_CMD_RSP_48_BUSY | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
203 #define SDIO_R5B    ( SDIO_CMD_RSP_48_BUSY | SDIO_CMD_INDEX_CHK | SDIO_CMD_CRC_CHK )
204 //transfer mode
205 #define SDIO_TRANS_COMP_ATA         BIT_6
206 #define SDIO_TRANS_MULTIBLK         BIT_5
207 #define SDIO_TRANS_DIR_READ         BIT_4
208 #define SDIO_TRANS_AUTO_CMD12_EN        BIT_2
209 #define SDIO_TRANS_BLK_CNT_EN           BIT_1
210 #define SDIO_TRANS_DMA_EN               BIT_0
211
212 //=====
213 //define normal and error sts index...
214 #define SDIO_VENDOR_SPEC_ERR        (BIT_29|BIT_30|BIT_31)
215 #define SDIO_TARGET_RESP_ERR        (BIT_28)
216 #define SDIO_AUTO_CMD12_ERR         (BIT_24)
217 #define SDIO_CURRENT_LMT_ERR        (BIT_23)
218 #define SDIO_DATA_ENDBIT_ERR        (BIT_22)
219 #define SDIO_DATA_CRC_ERR           (BIT_21)
220 #define SDIO_DATA_TMOUT_ERR         (BIT_20)
221 #define SDIO_CMD_INDEX_ERR          (BIT_19)
222 #define SDIO_CMD_ENDBIT_ERR         (BIT_18)
223 #define SDIO_CMD_CRC_ERR            (BIT_17)
224 #define SDIO_CMD_TMOUT_ERR          (BIT_16)
225 #define SDIO_ERROR_INT              (BIT_15)
226 #define SDIO_CARD_INT               (BIT_8)
227 #define SDIO_CARD_REMOVAL           (BIT_7)
228 #define SDIO_CARD_INSERTION         (BIT_6)
229 #define SDIO_BUF_READ_RDY           (BIT_5)
230 #define SDIO_BUF_WRITE_RDY          (BIT_4)
231 #define SDIO_DMA_INT                (BIT_3)
232 #define SDIO_BLK_GAP_EVT            (BIT_2)
233 #define SDIO_TRANSFER_CMPLETE       (BIT_1)
234 #define SDIO_CMD_CMPLETE            (BIT_0)
235
236 //-jason.wu confirm end
237
238
239
240 #endif //_SDIO_REG_V3_H_
241