1
2
3
4
5
6
7
8#ifndef __HAL8188EPWRSEQ_H__
9#define __HAL8188EPWRSEQ_H__
10
11#include "pwrseqcmd.h"
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#define RTL8188E_TRANS_CARDEMU_TO_ACT_STEPS 10
37#define RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS 10
38#define RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS 10
39#define RTL8188E_TRANS_SUS_TO_CARDEMU_STEPS 10
40#define RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS 10
41#define RTL8188E_TRANS_PDN_TO_CARDEMU_STEPS 10
42#define RTL8188E_TRANS_ACT_TO_LPS_STEPS 15
43#define RTL8188E_TRANS_LPS_TO_ACT_STEPS 15
44#define RTL8188E_TRANS_END_STEPS 1
45
46#define RTL8188E_TRANS_CARDEMU_TO_ACT \
47
48
49
50
51 \
52 {0x0006, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, BIT(1), BIT(1)}, \
53 \
54 {0x0002, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(0) | BIT(1), 0}, \
55 \
56 {0x0026, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(7), BIT(7)}, \
57 \
58 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(7), 0}, \
59 \
60 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4) | BIT(3), 0}, \
61 \
62 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(0), BIT(0)}, \
63 \
64 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, BIT(0), 0}, \
65 \
66 {0x0023, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), 0}, \
67
68
69#define RTL8188E_TRANS_ACT_TO_CARDEMU \
70
71
72
73
74 \
75 {0x001F, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0}, \
76 \
77 {0x0023, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), BIT(4)}, \
78 \
79 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(1), BIT(1)}, \
80 \
81 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, BIT(1), 0}, \
82
83
84#define RTL8188E_TRANS_CARDEMU_TO_SUS \
85
86
87
88
89 \
90 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3)}, \
91 \
92 {0x0007, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, BIT(7)}, \
93 \
94 {0x0041, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), 0}, \
95 \
96 {0xfe10, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), BIT(4)}, \
97
98
99#define RTL8188E_TRANS_SUS_TO_CARDEMU \
100
101
102
103
104 \
105 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(3) | BIT(4), 0}, \
106
107
108#define RTL8188E_TRANS_CARDEMU_TO_CARDDIS \
109
110
111
112
113 \
114 {0x0026, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(7), BIT(7)}, \
115 \
116 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3)}, \
117 \
118 {0x0007, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0}, \
119 \
120 {0x0041, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), 0}, \
121 \
122 {0xfe10, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), BIT(4)}, \
123
124
125#define RTL8188E_TRANS_CARDDIS_TO_CARDEMU \
126
127
128
129
130 \
131 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(3) | BIT(4), 0}, \
132
133
134#define RTL8188E_TRANS_CARDEMU_TO_PDN \
135
136
137
138
139 \
140 {0x0006, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(0), 0}, \
141 \
142 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(7), BIT(7)}, \
143
144
145#define RTL8188E_TRANS_PDN_TO_CARDEMU \
146
147
148
149
150 \
151 {0x0005, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(7), 0}, \
152
153
154
155#define RTL8188E_TRANS_ACT_TO_LPS \
156
157
158
159
160 \
161 {0x0522, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0x7F}, \
162 {0x05F8, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, 0xFF, 0}, \
163 \
164 {0x05F9, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, 0xFF, 0}, \
165 \
166 {0x05FA, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, 0xFF, 0}, \
167 \
168 {0x05FB, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, 0xFF, 0}, \
169 \
170 {0x0002, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(0), 0}, \
171 \
172 {0x0002, PWR_CUT_ALL_MSK, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, \
173 \
174 {0x0100, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0x3F}, \
175 \
176 {0x0101, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(1), 0}, \
177 \
178 {0x0553, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(5), BIT(5)}, \
179
180
181#define RTL8188E_TRANS_LPS_TO_ACT \
182
183
184
185
186 \
187 {0xFE58, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0x84}, \
188 \
189 {0x0002, PWR_CUT_ALL_MSK, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \
190 \
191 {0x0008, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(4), 0}, \
192 \
193 {0x0109, PWR_CUT_ALL_MSK, PWR_CMD_POLLING, BIT(7), 0}, \
194 \
195 {0x0029, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(6) | BIT(7), 0}, \
196 \
197 {0x0101, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, BIT(1), BIT(1)}, \
198 \
199 {0x0100, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0xFF}, \
200 \
201 {0x0002, PWR_CUT_ALL_MSK, \
202 PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)}, \
203 \
204 {0x0522, PWR_CUT_ALL_MSK, PWR_CMD_WRITE, 0xFF, 0},
205
206#define RTL8188E_TRANS_END \
207
208
209
210
211 \
212 {0xFFFF, PWR_CUT_ALL_MSK, PWR_CMD_END, 0, 0},
213
214extern struct wl_pwr_cfg rtl8188E_power_on_flow
215 [RTL8188E_TRANS_CARDEMU_TO_ACT_STEPS + RTL8188E_TRANS_END_STEPS];
216extern struct wl_pwr_cfg rtl8188E_radio_off_flow
217 [RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS + RTL8188E_TRANS_END_STEPS];
218extern struct wl_pwr_cfg rtl8188E_card_disable_flow
219 [RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS +
220 RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS +
221 RTL8188E_TRANS_END_STEPS];
222extern struct wl_pwr_cfg rtl8188E_card_enable_flow
223 [RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS +
224 RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS +
225 RTL8188E_TRANS_END_STEPS];
226extern struct wl_pwr_cfg rtl8188E_suspend_flow[
227 RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS +
228 RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS +
229 RTL8188E_TRANS_END_STEPS];
230extern struct wl_pwr_cfg rtl8188E_resume_flow
231 [RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS +
232 RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS +
233 RTL8188E_TRANS_END_STEPS];
234extern struct wl_pwr_cfg rtl8188E_hwpdn_flow
235 [RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS +
236 RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS + RTL8188E_TRANS_END_STEPS];
237extern struct wl_pwr_cfg rtl8188E_enter_lps_flow
238 [RTL8188E_TRANS_ACT_TO_LPS_STEPS + RTL8188E_TRANS_END_STEPS];
239extern struct wl_pwr_cfg rtl8188E_leave_lps_flow
240 [RTL8188E_TRANS_LPS_TO_ACT_STEPS + RTL8188E_TRANS_END_STEPS];
241
242#endif
243