blob: e3cbbf2fe1a4312a932dfdd32a132a718de73e3d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
|
/* SPDX-License-Identifier: GPL-2.0-only */
/* Driver for Realtek PCI-Express card reader
*
* Copyright(c) 2018-2019 Realtek Semiconductor Corp. All rights reserved.
*
* Author:
* Ricky Wu <ricky_wu@realtek.com>
*/
#ifndef RTS5264_H
#define RTS5264_H
/*New add*/
#define rts5264_vendor_setting_valid(reg) ((reg) & 0x010000)
#define rts5264_reg_to_aspm(reg) \
(((~(reg) >> 28) & 0x02) | (((reg) >> 28) & 0x01))
#define rts5264_reg_check_reverse_socket(reg) ((reg) & 0x04)
#define rts5264_reg_to_sd30_drive_sel_1v8(reg) (((reg) >> 22) & 0x03)
#define rts5264_reg_to_sd30_drive_sel_3v3(reg) (((reg) >> 16) & 0x03)
#define rts5264_reg_to_rtd3(reg) ((reg) & 0x08)
#define RTS5264_AUTOLOAD_CFG0 0xFF7B
#define RTS5264_AUTOLOAD_CFG1 0xFF7C
#define RTS5264_AUTOLOAD_CFG3 0xFF7E
#define RTS5264_AUTOLOAD_CFG4 0xFF7F
#define RTS5264_FORCE_PRSNT_LOW (1 << 6)
#define RTS5264_AUX_CLK_16M_EN (1 << 5)
#define RTS5264_F_HIGH_RC_MASK (1 << 4)
#define RTS5264_F_HIGH_RC_1_6M (1 << 4)
#define RTS5264_F_HIGH_RC_400K (0 << 4)
/* SSC_CTL2 0xFC12 */
#define RTS5264_SSC_DEPTH_MASK 0x07
#define RTS5264_SSC_DEPTH_DISALBE 0x00
#define RTS5264_SSC_DEPTH_8M 0x01
#define RTS5264_SSC_DEPTH_4M 0x02
#define RTS5264_SSC_DEPTH_2M 0x03
#define RTS5264_SSC_DEPTH_1M 0x04
#define RTS5264_SSC_DEPTH_512K 0x05
#define RTS5264_SSC_DEPTH_256K 0x06
#define RTS5264_SSC_DEPTH_128K 0x07
#define RTS5264_CARD_CLK_SRC2 0xFC2F
#define RTS5264_REG_BIG_KVCO_A 0x20
/* efuse control register*/
#define RTS5264_EFUSE_CTL 0xFC30
#define RTS5264_EFUSE_ENABLE 0x80
/* EFUSE_MODE: 0=READ 1=PROGRAM */
#define RTS5264_EFUSE_MODE_MASK 0x40
#define RTS5264_EFUSE_PROGRAM 0x40
#define RTS5264_EFUSE_ADDR 0xFC31
#define RTS5264_EFUSE_ADDR_MASK 0x3F
#define RTS5264_EFUSE_WRITE_DATA 0xFC32
#define RTS5264_EFUSE_READ_DATA 0xFC34
#define RTS5264_SYS_DUMMY_1 0xFC35
#define RTS5264_REG_BIG_KVCO 0x04
/* DMACTL 0xFE2C */
#define RTS5264_DMA_PACK_SIZE_MASK 0x70
#define RTS5264_FW_CFG1 0xFF55
#define RTS5264_SYS_CLK_SEL_MCU_CLK (0x01<<7)
#define RTS5264_CRC_CLK_SEL_MCU_CLK (0x01<<6)
#define RTS5264_FAKE_MCU_CLOCK_GATING (0x01<<5)
#define RTS5264_MCU_BUS_SEL_MASK (0x01<<4)
/* FW status register */
#define RTS5264_FW_STATUS 0xFF56
#define RTS5264_EXPRESS_LINK_FAIL_MASK (0x01<<7)
/* FW control register */
#define RTS5264_FW_CTL 0xFF5F
#define RTS5264_INFORM_RTD3_COLD (0x01<<5)
#define RTS5264_REG_FPDCTL 0xFF60
#define RTS5264_REG_LDO12_CFG 0xFF6E
#define RTS5264_LDO12_SR_MASK (0x03<<6)
#define RTS5264_LDO12_SR_1_0_MS (0x03<<6)
#define RTS5264_LDO12_SR_0_5_MS (0x02<<6)
#define RTS5264_LDO12_SR_0_2_5_MS (0x01<<6)
#define RTS5264_LDO12_SR_0_0_MS (0x00<<6)
#define RTS5264_LDO12_VO_TUNE_MASK (0x07<<1)
#define RTS5264_LDO12_115 (0x03<<1)
#define RTS5264_LDO12_120 (0x04<<1)
#define RTS5264_LDO12_125 (0x05<<1)
#define RTS5264_LDO12_130 (0x06<<1)
#define RTS5264_LDO12_135 (0x07<<1)
/* LDO control register */
#define RTS5264_CARD_PWR_CTL 0xFD50
#define RTS5264_SD_CLK_ISO (0x01<<7)
#define RTS5264_PAD_SD_DAT_FW_CTRL (0x01<<6)
#define RTS5264_PUPDC (0x01<<5)
#define RTS5264_SD_CMD_ISO (0x01<<4)
#define RTS5264_OCP_VDD3_CTL 0xFD89
#define SD_VDD3_DETECT_EN 0x08
#define SD_VDD3_OCP_INT_EN 0x04
#define SD_VDD3_OCP_INT_CLR 0x02
#define SD_VDD3_OC_CLR 0x01
#define RTS5264_OCP_VDD3_STS 0xFD8A
#define SD_VDD3_OCP_DETECT 0x08
#define SD_VDD3_OC_NOW 0x04
#define SD_VDD3_OC_EVER 0x02
#define RTS5264_OVP_CTL 0xFD8D
#define RTS5264_OVP_TIME_MASK 0xF0
#define RTS5264_OVP_TIME_DFT 0x50
#define RTS5264_OVP_DETECT_EN 0x08
#define RTS5264_OVP_INT_EN 0x04
#define RTS5264_OVP_INT_CLR 0x02
#define RTS5264_OVP_CLR 0x01
#define RTS5264_OVP_STS 0xFD8E
#define RTS5264_OVP_GLTCH_TIME_MASK 0xF0
#define RTS5264_OVP_GLTCH_TIME_DFT 0x50
#define RTS5264_VOVER_DET 0x08
#define RTS5264_OVP_NOW 0x04
#define RTS5264_OVP_EVER 0x02
#define RTS5264_CMD_OE_START_EARLY 0xFDCB
#define RTS5264_CMD_OE_EARLY_LEAVE 0x08
#define RTS5264_CMD_OE_EARLY_CYCLE_MASK 0x06
#define RTS5264_CMD_OE_EARLY_4CYCLE 0x06
#define RTS5264_CMD_OE_EARLY_3CYCLE 0x04
#define RTS5264_CMD_OE_EARLY_2CYCLE 0x02
#define RTS5264_CMD_OE_EARLY_1CYCLE 0x00
#define RTS5264_CMD_OE_EARLY_EN 0x01
#define RTS5264_DAT_OE_START_EARLY 0xFDCC
#define RTS5264_DAT_OE_EARLY_LEAVE 0x08
#define RTS5264_DAT_OE_EARLY_CYCLE_MASK 0x06
#define RTS5264_DAT_OE_EARLY_4CYCLE 0x06
#define RTS5264_DAT_OE_EARLY_3CYCLE 0x04
#define RTS5264_DAT_OE_EARLY_2CYCLE 0x02
#define RTS5264_DAT_OE_EARLY_1CYCLE 0x00
#define RTS5264_DAT_OE_EARLY_EN 0x01
#define RTS5264_LDO1233318_POW_CTL 0xFF70
#define RTS5264_TUNE_REF_LDO3318 (0x03<<6)
#define RTS5264_TUNE_REF_LDO3318_DFT (0x02<<6)
#define RTS5264_LDO3318_POWERON (0x01<<3)
#define RTS5264_LDO3_POWERON (0x01<<2)
#define RTS5264_LDO2_POWERON (0x01<<1)
#define RTS5264_LDO1_POWERON (0x01<<0)
#define RTS5264_LDO_POWERON_MASK (0x0F<<0)
#define RTS5264_DV3318_CFG 0xFF71
#define RTS5264_DV3318_TUNE_MASK (0x07<<4)
#define RTS5264_DV3318_18 (0x02<<4)
#define RTS5264_DV3318_19 (0x04<<4)
#define RTS5264_DV3318_33 (0x07<<4)
#define RTS5264_LDO1_CFG0 0xFF72
#define RTS5264_LDO1_OCP_THD_MASK (0x07 << 5)
#define RTS5264_LDO1_OCP_EN (0x01 << 4)
#define RTS5264_LDO1_OCP_LMT_THD_MASK (0x03 << 2)
#define RTS5264_LDO1_OCP_LMT_EN (0x01 << 1)
#define RTS5264_LDO1_OCP_THD_850 (0x00<<5)
#define RTS5264_LDO1_OCP_THD_950 (0x01<<5)
#define RTS5264_LDO1_OCP_THD_1050 (0x02<<5)
#define RTS5264_LDO1_OCP_THD_1100 (0x03<<5)
#define RTS5264_LDO1_OCP_THD_1150 (0x04<<5)
#define RTS5264_LDO1_OCP_THD_1200 (0x05<<5)
#define RTS5264_LDO1_OCP_THD_1300 (0x06<<5)
#define RTS5264_LDO1_OCP_THD_1350 (0x07<<5)
#define RTS5264_LDO1_LMT_THD_1700 (0x00<<2)
#define RTS5264_LDO1_LMT_THD_1800 (0x01<<2)
#define RTS5264_LDO1_LMT_THD_1900 (0x02<<2)
#define RTS5264_LDO1_LMT_THD_2000 (0x03<<2)
#define RTS5264_LDO1_CFG1 0xFF73
#define RTS5264_LDO1_TUNE_MASK (0x07<<1)
#define RTS5264_LDO1_18 (0x05<<1)
#define RTS5264_LDO1_33 (0x07<<1)
#define RTS5264_LDO1_PWD_MASK (0x01<<0)
#define RTS5264_LDO2_CFG0 0xFF74
#define RTS5264_LDO2_OCP_THD_MASK (0x07<<5)
#define RTS5264_LDO2_OCP_EN (0x01<<4)
#define RTS5264_LDO2_OCP_LMT_THD_MASK (0x03<<2)
#define RTS5264_LDO2_OCP_LMT_EN (0x01<<1)
#define RTS5264_LDO2_OCP_THD_750 (0x00<<5)
#define RTS5264_LDO2_OCP_THD_850 (0x01<<5)
#define RTS5264_LDO2_OCP_THD_900 (0x02<<5)
#define RTS5264_LDO2_OCP_THD_950 (0x03<<5)
#define RTS5264_LDO2_OCP_THD_1050 (0x04<<5)
#define RTS5264_LDO2_OCP_THD_1100 (0x05<<5)
#define RTS5264_LDO2_OCP_THD_1150 (0x06<<5)
#define RTS5264_LDO2_OCP_THD_1200 (0x07<<5)
#define RTS5264_LDO2_LMT_THD_1700 (0x00<<2)
#define RTS5264_LDO2_LMT_THD_1800 (0x01<<2)
#define RTS5264_LDO2_LMT_THD_1900 (0x02<<2)
#define RTS5264_LDO2_LMT_THD_2000 (0x03<<2)
#define RTS5264_LDO2_CFG1 0xFF75
#define RTS5264_LDO2_TUNE_MASK (0x07<<1)
#define RTS5264_LDO2_18 (0x02<<1)
#define RTS5264_LDO2_185 (0x03<<1)
#define RTS5264_LDO2_19 (0x04<<1)
#define RTS5264_LDO2_195 (0x05<<1)
#define RTS5264_LDO2_33 (0x07<<1)
#define RTS5264_LDO2_PWD_MASK (0x01<<0)
#define RTS5264_LDO3_CFG0 0xFF76
#define RTS5264_LDO3_OCP_THD_MASK (0x07<<5)
#define RTS5264_LDO3_OCP_EN (0x01<<4)
#define RTS5264_LDO3_OCP_LMT_THD_MASK (0x03<<2)
#define RTS5264_LDO3_OCP_LMT_EN (0x01<<1)
#define RTS5264_LDO3_OCP_THD_610 (0x00<<5)
#define RTS5264_LDO3_OCP_THD_630 (0x01<<5)
#define RTS5264_LDO3_OCP_THD_670 (0x02<<5)
#define RTS5264_LDO3_OCP_THD_710 (0x03<<5)
#define RTS5264_LDO3_OCP_THD_750 (0x04<<5)
#define RTS5264_LDO3_OCP_THD_770 (0x05<<5)
#define RTS5264_LDO3_OCP_THD_810 (0x06<<5)
#define RTS5264_LDO3_OCP_THD_850 (0x07<<5)
#define RTS5264_LDO3_LMT_THD_1200 (0x00<<2)
#define RTS5264_LDO3_LMT_THD_1300 (0x01<<2)
#define RTS5264_LDO3_LMT_THD_1400 (0x02<<2)
#define RTS5264_LDO3_LMT_THD_1500 (0x03<<2)
#define RTS5264_LDO3_CFG1 0xFF77
#define RTS5264_LDO3_TUNE_MASK (0x07<<1)
#define RTS5264_LDO3_12 (0x02<<1)
#define RTS5264_LDO3_125 (0x03<<1)
#define RTS5264_LDO3_13 (0x04<<1)
#define RTS5264_LDO3_135 (0x05<<1)
#define RTS5264_LDO3_33 (0x07<<1)
#define RTS5264_LDO3_PWD_MASK (0x01<<0)
#define RTS5264_REG_PME_FORCE_CTL 0xFF78
#define FORCE_PM_CONTROL 0x20
#define FORCE_PM_VALUE 0x10
#define REG_EFUSE_BYPASS 0x08
#define REG_EFUSE_POR 0x04
#define REG_EFUSE_POWER_MASK 0x03
#define REG_EFUSE_POWERON 0x03
#define REG_EFUSE_POWEROFF 0x00
#define RTS5264_PWR_CUT 0xFF81
#define RTS5264_CFG_MEM_PD 0xF0
#define RTS5264_OVP_DET 0xFF8A
#define RTS5264_POW_VDET 0x04
#define RTS5264_TUNE_VROV_MASK 0x03
#define RTS5264_TUNE_VROV_2V 0x03
#define RTS5264_TUNE_VROV_1V8 0x02
#define RTS5264_TUNE_VROV_1V6 0x01
#define RTS5264_TUNE_VROV_1V4 0x00
#define RTS5264_CKMUX_MBIAS_PWR 0xFF8B
#define RTS5264_NON_XTAL_SEL 0x80
#define RTS5264_POW_CKMUX 0x40
#define RTS5264_LVD_MASK 0x04
#define RTS5264_POW_PSW_MASK 0x03
#define RTS5264_POW_PSW_DFT 0x03
/* Single LUN, support SD/SD EXPRESS */
#define DEFAULT_SINGLE 0
#define SD_LUN 1
#define SD_EXPRESS_LUN 2
int rts5264_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock,
u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk);
#endif /* RTS5264_H */
|