xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/phl/hal_g6/btc/halbtc_action.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /******************************************************************************
2  *
3  * Copyright(c) 2019 Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  *****************************************************************************/
15 #ifndef __INC_BTC_ACTION_H__
16 #define __INC_BTC_ACTION_H__
17 
18 enum {
19 	BTC_PHY_0 = BIT(0),
20 	BTC_PHY_1 = BIT(1),
21 	BTC_PHY_ALL = BIT(0) | BIT(1),
22 };
23 
24 enum btc_cx_state_map {
25 	BTC_WIDLE = 0,
26 	BTC_WBUSY_BNOSCAN,
27 	BTC_WBUSY_BSCAN,
28 	BTC_WSCAN_BNOSCAN,
29 	BTC_WSCAN_BSCAN,
30 	BTC_WLINKING
31 };
32 
33 enum btc_ant_phase {
34 	BTC_ANT_WPOWERON = 0,
35 	BTC_ANT_WINIT,
36 	BTC_ANT_WONLY,
37 	BTC_ANT_WOFF,
38 	BTC_ANT_W2G,
39 	BTC_ANT_W5G,
40 	BTC_ANT_W25G,
41 	BTC_ANT_FREERUN,
42 	BTC_ANT_WRFK,
43 	BTC_ANT_BRFK,
44 	BTC_ANT_MAX
45 };
46 
47 enum {
48 	BTC_PLT_NONE = 0,
49 	BTC_PLT_LTE_RX = BIT(0),
50 	BTC_PLT_GNT_BT_TX = BIT(1),
51 	BTC_PLT_GNT_BT_RX = BIT(2),
52 	BTC_PLT_GNT_WL = BIT(3),
53 	BTC_PLT_BT = BIT(1) | BIT(2),
54 	BTC_PLT_ALL = 0xf
55 };
56 
57 enum btc_cx_poicy_main_type {
58 	BTC_CXP_OFF = 0,
59 	BTC_CXP_OFFB,
60 	BTC_CXP_OFFE,
61 	BTC_CXP_FIX,
62 	BTC_CXP_PFIX,
63 	BTC_CXP_AUTO,
64 	BTC_CXP_PAUTO,
65 	BTC_CXP_AUTO2,
66 	BTC_CXP_PAUTO2,
67 	BTC_CXP_MANUAL,
68 	BTC_CXP_USERDEF0,
69 	BTC_CXP_MAIN_MAX
70 };
71 
72 enum {
73 	BTC_BSLOT_A2DP_HID = 60,
74 	BTC_BSLOT_A2DP = 50,
75 	BTC_BSLOT_INQ = 30,
76 	BTC_BSLOT_IDLE = 20,
77 };
78 
79 enum btc_cx_poicy_type {
80 	/* TDMA off + pri: BT > WL */
81 	BTC_CXP_OFF_BT = (BTC_CXP_OFF << 8) | 0,
82 
83 	/* TDMA off + pri: WL > BT */
84 	BTC_CXP_OFF_WL = (BTC_CXP_OFF << 8) | 1,
85 
86 	/* TDMA off + pri: BT = WL */
87 	BTC_CXP_OFF_EQ0 = (BTC_CXP_OFF << 8) | 2,
88 
89 	/* TDMA off + pri: BT = WL > BT_Lo */
90 	BTC_CXP_OFF_EQ1 = (BTC_CXP_OFF << 8) | 3,
91 
92 	/* TDMA off + pri: WL = BT, BT_Rx > WL_Lo_Tx */
93 	BTC_CXP_OFF_EQ2 = (BTC_CXP_OFF << 8) | 4,
94 
95 	/* TDMA off + pri: WL_Rx = BT, BT_HI > WL_Tx > BT_Lo */
96 	BTC_CXP_OFF_EQ3 = (BTC_CXP_OFF << 8) | 5,
97 
98 	/* TDMA off + pri: BT_Hi > WL > BT_Lo */
99 	BTC_CXP_OFF_BWB0 = (BTC_CXP_OFF << 8) | 6,
100 
101 	/* TDMA off + pri: BT_Hi_Tx = WL_Hi-Tx > BT_Hi_Rx, BT_Hi > WL > BT_Lo */
102 	BTC_CXP_OFF_BWB1 = (BTC_CXP_OFF << 8) | 7,
103 
104 	/* TDMA off + pri: WL_Hi-Tx > BT, BT_Hi > other-WL > BT_Lo */
105 	BTC_CXP_OFF_BWB2 = (BTC_CXP_OFF << 8) | 8,
106 
107 	/* TDMA off+Bcn-Protect + pri: WL_Hi-Tx > BT_Hi_Rx, BT_Hi > WL > BT_Lo*/
108 	BTC_CXP_OFFB_BWB0 = (BTC_CXP_OFFB << 8) | 0,
109 
110 	/* TDMA off + Ext-Ctrl + pri: default */
111 	BTC_CXP_OFFE_2GBWISOB = (BTC_CXP_OFFE << 8) | 0,
112 
113 	/* TDMA off + Ext-Ctrl + pri: E2G-slot block all BT */
114 	BTC_CXP_OFFE_2GISOB = (BTC_CXP_OFFE << 8) | 1,
115 
116 	/* TDMA off + Ext-Ctrl + pri: E2G-slot WL > BT */
117 	BTC_CXP_OFFE_2GBWMIXB = (BTC_CXP_OFFE << 8) | 2,
118 
119 	/* TDMA off + Ext-Ctrl + pri: E2G/EBT-slot WL > BT */
120 	BTC_CXP_OFFE_WL = (BTC_CXP_OFFE << 8) | 3,
121 
122 	/* TDMA off + Ext-Ctrl + pri: default */
123 	BTC_CXP_OFFE_2GBWMIXB2 = (BTC_CXP_OFFE << 8) | 4,
124 
125 	/* TDMA Fix slot-0: W1:B1 = 30:30 */
126 	BTC_CXP_FIX_TD3030 = (BTC_CXP_FIX << 8) | 0,
127 
128 	/* TDMA Fix slot-1: W1:B1 = 50:50 */
129 	BTC_CXP_FIX_TD5050 = (BTC_CXP_FIX << 8) | 1,
130 
131 	/* TDMA Fix slot-2: W1:B1 = 20:30 */
132 	BTC_CXP_FIX_TD2030 = (BTC_CXP_FIX << 8) | 2,
133 
134 	/* TDMA Fix slot-3: W1:B1 = 40:10 */
135 	BTC_CXP_FIX_TD4010 = (BTC_CXP_FIX << 8) | 3,
136 
137 	/* TDMA Fix slot-4: W1:B1 = 70:10 */
138 	BTC_CXP_FIX_TD7010 = (BTC_CXP_FIX << 8) | 4,
139 
140 	/* TDMA Fix slot-5: W1:B1 = 20:60 */
141 	BTC_CXP_FIX_TD2060 = (BTC_CXP_FIX << 8) | 5,
142 
143 	/* TDMA Fix slot-6: W1:B1 = 30:60 */
144 	BTC_CXP_FIX_TD3060 = (BTC_CXP_FIX << 8) | 6,
145 
146 	/* TDMA Fix slot-7: W1:B1 = 20:80 */
147 	BTC_CXP_FIX_TD2080 = (BTC_CXP_FIX << 8) | 7,
148 
149 	/* TDMA Fix slot-8: W1:B1 = user-define */
150 	BTC_CXP_FIX_TDW1B1 = (BTC_CXP_FIX << 8) | 8,
151 
152 	/* TDMA Fix slot-9: W1:B1 = 40:10 */
153 	BTC_CXP_FIX_TD4010ISO = (BTC_CXP_FIX << 8) | 9,
154 
155 	/* PS-TDMA Fix slot-0: W1:B1 = 30:30 */
156 	BTC_CXP_PFIX_TD3030 = (BTC_CXP_PFIX << 8) | 0,
157 
158 	/* PS-TDMA Fix slot-1: W1:B1 = 50:50 */
159 	BTC_CXP_PFIX_TD5050 = (BTC_CXP_PFIX << 8) | 1,
160 
161 	/* PS-TDMA Fix slot-2: W1:B1 = 20:30 */
162 	BTC_CXP_PFIX_TD2030 = (BTC_CXP_PFIX << 8) | 2,
163 
164 	/* PS-TDMA Fix slot-3: W1:B1 = 20:60 */
165 	BTC_CXP_PFIX_TD2060 = (BTC_CXP_PFIX << 8) | 3,
166 
167 	/* PS-TDMA Fix slot-4: W1:B1 = 30:70 */
168 	BTC_CXP_PFIX_TD3070 = (BTC_CXP_PFIX << 8) | 4,
169 
170 	/* PS-TDMA Fix slot-5: W1:B1 = 20:80 */
171 	BTC_CXP_PFIX_TD2080 = (BTC_CXP_PFIX << 8) | 5,
172 
173 	/* PS-TDMA Fix slot-6: W1:B1 = user-define */
174 	BTC_CXP_PFIX_TDW1B1 = (BTC_CXP_PFIX << 8) | 6,
175 
176 	/* TDMA Auto slot-0: W1:B1 = 50:BTC_B1_MAX */
177 	BTC_CXP_AUTO_TD50B1 = (BTC_CXP_AUTO << 8) | 0,
178 
179 	/* TDMA Auto slot-1: W1:B1 = 60:BTC_B1_MAX */
180 	BTC_CXP_AUTO_TD60B1 = (BTC_CXP_AUTO << 8) | 1,
181 
182 	/* TDMA Auto slot-2: W1:B1 = 20:BTC_B1_MAX */
183 	BTC_CXP_AUTO_TD20B1 = (BTC_CXP_AUTO << 8) | 2,
184 
185 	/* TDMA Auto slot-3: W1:B1 = user-define */
186 	BTC_CXP_AUTO_TDW1B1 = (BTC_CXP_AUTO << 8) | 3,
187 
188 	/* PS-TDMA Auto slot-0: W1:B1 = 50:BTC_B1_MAX */
189 	BTC_CXP_PAUTO_TD50B1 = (BTC_CXP_PAUTO << 8) | 0,
190 
191 	/* PS-TDMA Auto slot-1: W1:B1 = 60:BTC_B1_MAX */
192 	BTC_CXP_PAUTO_TD60B1 = (BTC_CXP_PAUTO << 8) | 1,
193 
194 	/* PS-TDMA Auto slot-2: W1:B1 = 20:BTC_B1_MAX */
195 	BTC_CXP_PAUTO_TD20B1 = (BTC_CXP_PAUTO << 8) | 2,
196 
197 	/* PS-TDMA Auto slot-3: W1:B1 = user-define */
198 	BTC_CXP_PAUTO_TDW1B1 = (BTC_CXP_PAUTO << 8) | 3,
199 
200 	/* TDMA Auto slot2-0: W1:B4 = 30:50 */
201 	BTC_CXP_AUTO2_TD3050 = (BTC_CXP_AUTO2 << 8) | 0,
202 
203 	/* TDMA Auto slot2-1: W1:B4 = 30:70 */
204 	BTC_CXP_AUTO2_TD3070 = (BTC_CXP_AUTO2 << 8) | 1,
205 
206 	/* TDMA Auto slot2-2: W1:B4 = 50:50 */
207 	BTC_CXP_AUTO2_TD5050 = (BTC_CXP_AUTO2 << 8) | 2,
208 
209 	/* TDMA Auto slot2-3: W1:B4 = 60:60 */
210 	BTC_CXP_AUTO2_TD6060 = (BTC_CXP_AUTO2 << 8) | 3,
211 
212 	/* TDMA Auto slot2-4: W1:B4 = 20:80 */
213 	BTC_CXP_AUTO2_TD2080 = (BTC_CXP_AUTO2 << 8) | 4,
214 
215 	/* TDMA Auto slot2-5: W1:B4 = user-define */
216 	BTC_CXP_AUTO2_TDW1B4 = (BTC_CXP_AUTO2 << 8) | 5,
217 
218 	/* PS-TDMA Auto slot2-0: W1:B4 = 30:50 */
219 	BTC_CXP_PAUTO2_TD3050 = (BTC_CXP_PAUTO2 << 8) | 0,
220 
221 	/* PS-TDMA Auto slot2-1: W1:B4 = 30:70 */
222 	BTC_CXP_PAUTO2_TD3070 = (BTC_CXP_PAUTO2 << 8) | 1,
223 
224 	/* PS-TDMA Auto slot2-2: W1:B4 = 50:50 */
225 	BTC_CXP_PAUTO2_TD5050 = (BTC_CXP_PAUTO2 << 8) | 2,
226 
227 	/* PS-TDMA Auto slot2-3: W1:B4 = 60:60 */
228 	BTC_CXP_PAUTO2_TD6060 = (BTC_CXP_PAUTO2 << 8) | 3,
229 
230 	/* PS-TDMA Auto slot2-4: W1:B4 = 20:80 */
231 	BTC_CXP_PAUTO2_TD2080 = (BTC_CXP_PAUTO2 << 8) | 4,
232 
233 	/* PS-TDMA Auto slot2-5: W1:B4 = user-define */
234 	BTC_CXP_PAUTO2_TDW1B4 = (BTC_CXP_PAUTO2 << 8) | 5,
235 
236 	BTC_CXP_MAX = 0xffff
237 };
238 
239 void _action_wl_25g_mcc(struct btc_t *btc);
240 void _action_wl_2g_ap(struct btc_t *btc);
241 void _action_wl_2g_go(struct btc_t *btc);
242 void _action_wl_2g_gc(struct btc_t *btc);
243 void _action_wl_2g_nan(struct btc_t *btc);
244 void _action_wl_2g_scc(struct btc_t *btc);
245 void _action_wl_2g_sta(struct btc_t *btc);
246 void _action_wl_scan(struct btc_t *btc);
247 void _action_wl_2g_mcc(struct btc_t *btc);
248 void _action_wl_5g(struct btc_t *btc);
249 void _action_wl_other(struct btc_t *btc);
250 void _action_wl_idle(struct btc_t *btc);
251 void _action_wl_nc(struct btc_t *btc);
252 void _action_wl_rfk(struct btc_t *btc);
253 void _action_wl_init(struct btc_t *btc);
254 void _action_wl_off(struct btc_t *btc);
255 void _action_freerun(struct btc_t *btc);
256 void _action_wl_only(struct btc_t *btc);
257 void _action_bt_off(struct btc_t *btc);
258 void _action_bt_rfk(struct btc_t *btc);
259 void _action_bt_whql(struct btc_t *btc);
260 void _action_common(struct btc_t *btc);
261 //extern const u32 cxtbl[];
262 
263 void _update_btc_state_map(struct btc_t *btc);
264 void _set_bt_ignore_wlan_act(struct btc_t *btc, u8 enable);
265 void _set_wl_tx_power(struct btc_t *btc, u32 level);
266 void _set_wl_rx_gain(struct btc_t *btc, u32 level);
267 void _set_bt_tx_power(struct btc_t *btc, u32 level);
268 void _set_bt_rx_gain(struct btc_t *btc, u32 level);
269 void _set_gnt_wl(struct btc_t *btc, u8 phy_map, u8 state);
270 void _set_gnt_bt(struct btc_t *btc, u8 phy_map, u8 state);
271 
272 extern struct fbtc_tdma t_def[];
273 extern struct fbtc_slot s_def[];
274 
275 #endif
276