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#ifndef __RTL92E_PWRSEQ_H__
27#define __RTL92E_PWRSEQ_H__
28
29#include "../pwrseqcmd.h"
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53#define RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS 18
54#define RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS 18
55#define RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS 18
56#define RTL8192E_TRANS_SUS_TO_CARDEMU_STEPS 18
57#define RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS 18
58#define RTL8192E_TRANS_PDN_TO_CARDEMU_STEPS 18
59#define RTL8192E_TRANS_ACT_TO_LPS_STEPS 23
60#define RTL8192E_TRANS_LPS_TO_ACT_STEPS 23
61#define RTL8192E_TRANS_END_STEPS 1
62
63#define RTL8192E_TRANS_CARDEMU_TO_ACT \
64 \
65 \
66 \
67 \
68 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
69 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0}, \
70 \
71 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
72 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), 0}, \
73 \
74 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
75 PWR_BASEADDR_MAC , PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0}, \
76 \
77 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
78 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
79 \
80 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
81 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
82 \
83 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
84 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
85 \
86 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
87 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(0), 0},
88
89#define RTL8192E_TRANS_ACT_TO_CARDEMU \
90 \
91 \
92 \
93 \
94 {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
95 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0}, \
96 \
97 {0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
98 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0}, \
99 \
100 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
101 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), BIT(1)}, \
102 \
103 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
104 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(1), 0},
105
106#define RTL8192E_TRANS_CARDEMU_TO_SUS \
107 \
108 \
109 \
110 \
111 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
112 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(4) | BIT(3), (BIT(4) | BIT(3))},\
113 \
114 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
115 PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \
116 PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
117 \
118 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
119 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3) | BIT(4)},\
120 \
121 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
122 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
123 \
124 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
125 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), 0},
126
127#define RTL8192E_TRANS_SUS_TO_CARDEMU \
128 \
129 \
130 \
131 \
132 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
133 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), 0}, \
134 \
135 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
136 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
137 \
138 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
139 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
140
141#define RTL8192E_TRANS_CARDEMU_TO_CARDDIS \
142 \
143 \
144 \
145 \
146 {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
147 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x20}, \
148 \
149 {0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
150 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), BIT(2)}, \
151 \
152 {0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
153 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
154 \
155 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
156 PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \
157 PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
158 \
159 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
160 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), BIT(2)}, \
161 \
162 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
163 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
164 \
165 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
166 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), 0},
167
168#define RTL8192E_TRANS_CARDDIS_TO_CARDEMU \
169 \
170 \
171 \
172 \
173 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
174 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), 0}, \
175 \
176 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
177 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
178 \
179 {0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
180 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
181 \
182 {0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
183 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), 0}, \
184 \
185 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
186 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
187
188#define RTL8192E_TRANS_CARDEMU_TO_PDN \
189 \
190 \
191 \
192 \
193 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
194 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
195 \
196 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
197 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), BIT(7)},
198
199#define RTL8192E_TRANS_PDN_TO_CARDEMU \
200 \
201 \
202 \
203 \
204 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
205 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0},
206
207#define RTL8192E_TRANS_ACT_TO_LPS \
208 \
209 \
210 \
211 \
212 {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
213 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
214 \
215 {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
216 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
217 \
218 {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
219 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
220 \
221 {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
222 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
223 \
224 {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
225 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
226 \
227 {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
228 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
229 \
230 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
231 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
232 \
233 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
234 PWR_BASEADDR_MAC , PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, \
235 \
236 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
237 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), 0}, \
238 \
239 {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
240 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x03}, \
241 \
242 {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
243 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), 0}, \
244 \
245 {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
246 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x00}, \
247 \
248 {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
249 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(5), BIT(5)},
250
251#define RTL8192E_TRANS_LPS_TO_ACT \
252 \
253 \
254 \
255 \
256 {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
257 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, 0xFF, 0x84}, \
258 \
259 {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \
260 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x84}, \
261 \
262 {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
263 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x84}, \
264 \
265 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
266 PWR_BASEADDR_MAC , PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \
267 \
268 {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
269 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(4), 0}, \
270 \
271 {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
272 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(7), 0}, \
273 \
274 {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
275 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), BIT(1)}, \
276 \
277 {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
278 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
279 \
280 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
281 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)},\
282 \
283 {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
284 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0}, \
285 \
286 {0x013D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
287 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF},
288
289#define RTL8192E_TRANS_END \
290 \
291 \
292 \
293 {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
294 0, PWR_CMD_END, 0, 0},
295
296extern struct wlan_pwr_cfg rtl8192E_power_on_flow
297 [RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS +
298 RTL8192E_TRANS_END_STEPS];
299extern struct wlan_pwr_cfg rtl8192E_radio_off_flow
300 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
301 RTL8192E_TRANS_END_STEPS];
302extern struct wlan_pwr_cfg rtl8192E_card_disable_flow
303 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
304 RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
305 RTL8192E_TRANS_END_STEPS];
306extern struct wlan_pwr_cfg rtl8192E_card_enable_flow
307 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
308 RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
309 RTL8192E_TRANS_END_STEPS];
310extern struct wlan_pwr_cfg rtl8192E_suspend_flow
311 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
312 RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS +
313 RTL8192E_TRANS_END_STEPS];
314extern struct wlan_pwr_cfg rtl8192E_resume_flow
315 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
316 RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS +
317 RTL8192E_TRANS_END_STEPS];
318extern struct wlan_pwr_cfg rtl8192E_hwpdn_flow
319 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
320 RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
321 RTL8192E_TRANS_END_STEPS];
322extern struct wlan_pwr_cfg rtl8192E_enter_lps_flow
323 [RTL8192E_TRANS_ACT_TO_LPS_STEPS +
324 RTL8192E_TRANS_END_STEPS];
325extern struct wlan_pwr_cfg rtl8192E_leave_lps_flow
326 [RTL8192E_TRANS_LPS_TO_ACT_STEPS +
327 RTL8192E_TRANS_END_STEPS];
328
329
330#define RTL8192E_NIC_PWR_ON_FLOW rtl8192E_power_on_flow
331#define RTL8192E_NIC_RF_OFF_FLOW rtl8192E_radio_off_flow
332#define RTL8192E_NIC_DISABLE_FLOW rtl8192E_card_disable_flow
333#define RTL8192E_NIC_ENABLE_FLOW rtl8192E_card_enable_flow
334#define RTL8192E_NIC_SUSPEND_FLOW rtl8192E_suspend_flow
335#define RTL8192E_NIC_RESUME_FLOW rtl8192E_resume_flow
336#define RTL8192E_NIC_PDN_FLOW rtl8192E_hwpdn_flow
337#define RTL8192E_NIC_LPS_ENTER_FLOW rtl8192E_enter_lps_flow
338#define RTL8192E_NIC_LPS_LEAVE_FLOW rtl8192E_leave_lps_flow
339
340#endif
341