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