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 #define _HAL_BTC_DEF_C_ 16 #include "../hal_headers_le.h" 17 #include "hal_btc.h" 18 #include "halbtc_fw.h" 19 #include "halbtc_action.h" 20 21 #ifdef CONFIG_BTCOEX 22 23 #define case_role(src) \ 24 case PHL_RTYPE_##src: return #src 25 #define case_mrole(src) \ 26 case BTC_WLMROLE_##src: return #src 27 #define case_slot(src) \ 28 case CXST_##src: return #src 29 #define case_reg(src) \ 30 case REG_##src: return #src 31 #define case_tdma(src) \ 32 case CXTDMA_##src: return #src 33 #define case_trace(src) \ 34 case CXSTEP_##src: return #src 35 #define case_branch(src) \ 36 case BTC_BRANCH_##src: return #src 37 #define case_rxflctrl_(src) \ 38 case CXFLC_##src: return #src 39 #define case_wllink(src) \ 40 case BTC_WLINK_##src: return #src 41 #define case_antpath(src) \ 42 case BTC_ANT_##src: return #src 43 #define case_gdbg(src) \ 44 case BTC_DBG_##src: return #src 45 #define case_chip(src) \ 46 case CHIP_##src: return #src 47 #define case_event(src) \ 48 case CXEVNT_##src: return #src 49 #define case_wlmode(src) \ 50 case WLAN_MD_##src: return #src 51 #define case_wlbw(src) \ 52 case CHANNEL_WIDTH_##src: return #src 53 #define case_cxp(src) \ 54 case BTC_CXP_##src: return #src 55 #define case_rftype(src) \ 56 case RF_##src: return #src 57 #define case_mstate(src) \ 58 case MLME_##src: return #src 59 #define case_rate(src) \ 60 case RTW_DATA_RATE_##src: return #src 61 #define case_polut(src) \ 62 case BTC_PLT_##src: return #src 63 id_to_str(u8 type,u32 id)64const char *id_to_str(u8 type, u32 id) 65 { 66 switch(type) { 67 case BTC_STR_ROLE: 68 switch (id) { 69 case_role(NONE); 70 case_role(STATION); 71 case_role(AP); 72 case_role(VAP); 73 case_role(ADHOC); 74 case_role(ADHOC_MASTER); 75 case_role(MESH); 76 case_role(MONITOR); 77 case_role(P2P_DEVICE); 78 case_role(P2P_GC); 79 case_role(P2P_GO); 80 case_role(NAN); 81 } 82 break; 83 case BTC_STR_MROLE: 84 switch (id) { 85 case_mrole(NONE); 86 case_mrole(STA_GC); 87 case_mrole(STA_GC_NOA); 88 case_mrole(STA_GO); 89 case_mrole(STA_GO_NOA); 90 case_mrole(STA_STA); 91 } 92 break; 93 case BTC_STR_SLOT: 94 switch (id) { 95 case_slot(OFF); 96 case_slot(B2W); 97 case_slot(W1); 98 case_slot(W2); 99 case_slot(W2B); 100 case_slot(B1); 101 case_slot(B2); 102 case_slot(B3); 103 case_slot(B4); 104 case_slot(LK); 105 case_slot(BLK); 106 case_slot(E2G); 107 case_slot(E5G); 108 case_slot(EBT); 109 case_slot(ENULL); 110 case_slot(WLK); 111 case_slot(W1FDD); 112 case_slot(B1FDD); 113 } 114 break; 115 case BTC_STR_REG: 116 switch (id) { 117 case_reg(MAC); 118 case_reg(BB); 119 case_reg(RF); 120 case_reg(BT_RF); 121 case_reg(BT_MODEM); 122 case_reg(BT_BLUEWIZE); 123 case_reg(BT_VENDOR); 124 case_reg(BT_LE); 125 } 126 break; 127 case BTC_STR_TDMA: 128 switch (id) { 129 case_tdma(OFF); 130 case_tdma(FIX); 131 case_tdma(AUTO); 132 case_tdma(AUTO2); 133 } 134 break; 135 case BTC_STR_TRACE: 136 switch (id) { 137 case_trace(NONE); 138 case_trace(EVNT); 139 case_trace(SLOT); 140 } 141 break; 142 case BTC_STR_BRANCH: 143 switch (id) { 144 case_branch(MAIN); 145 case_branch(HP); 146 case_branch(LENOVO); 147 case_branch(HUAWEI); 148 } 149 break; 150 case BTC_STR_RXFLCTRL: 151 switch (id) { 152 case_rxflctrl_(OFF); 153 case_rxflctrl_(NULLP); 154 case_rxflctrl_(QOSNULL); 155 case_rxflctrl_(CTS); 156 } 157 break; 158 case BTC_STR_WLLINK: 159 switch (id) { 160 case_wllink(NOLINK); 161 case_wllink(2G_STA); 162 case_wllink(2G_GO); 163 case_wllink(2G_GC); 164 case_wllink(2G_AP); 165 case_wllink(2G_SCC); 166 case_wllink(2G_MCC); 167 case_wllink(25G_MCC); 168 case_wllink(25G_DBCC); 169 case_wllink(5G); 170 case_wllink(2G_NAN); 171 case_wllink(OTHER); 172 } 173 break; 174 case BTC_STR_ANTPATH: 175 switch (id) { 176 case_antpath(WPOWERON); 177 case_antpath(WINIT); 178 case_antpath(WONLY); 179 case_antpath(WOFF); 180 case_antpath(W2G); 181 case_antpath(W5G); 182 case_antpath(W25G); 183 case_antpath(FREERUN); 184 case_antpath(WRFK); 185 case_antpath(BRFK); 186 } 187 break; 188 case BTC_STR_GDBG: 189 switch (id) { 190 case_gdbg(GNT_BT); 191 case_gdbg(GNT_WL); 192 case_gdbg(BCN_EARLY); 193 case_gdbg(WL_NULL0); 194 case_gdbg(WL_NULL1); 195 case_gdbg(WL_RXISR); 196 case_gdbg(TDMA_ENTRY); 197 case_gdbg(A2DP_EMPTY); 198 case_gdbg(BT_RETRY); 199 case_gdbg(BT_RELINK); 200 case_gdbg(SLOT_WL); 201 case_gdbg(SLOT_BT); 202 case_gdbg(WL_RFK); 203 case_gdbg(BT_RFK); 204 case_gdbg(SLOT_B2W); 205 case_gdbg(SLOT_W1); 206 case_gdbg(SLOT_W2); 207 case_gdbg(SLOT_W2B); 208 case_gdbg(SLOT_B1); 209 case_gdbg(SLOT_B2); 210 case_gdbg(SLOT_B3); 211 case_gdbg(SLOT_B4); 212 case_gdbg(SLOT_LK); 213 case_gdbg(SLOT_E2G); 214 case_gdbg(SLOT_E5G); 215 case_gdbg(SLOT_EBT); 216 case_gdbg(SLOT_ENULL); 217 case_gdbg(SLOT_WLK); 218 case_gdbg(SLOT_W1FDD); 219 case_gdbg(SLOT_B1FDD); 220 case_gdbg(BT_CHANGE); 221 } 222 break; 223 case BTC_STR_CHIPID: 224 switch (id) { 225 case_chip(WIFI6_8852A); 226 case_chip(WIFI6_8852B); 227 case_chip(WIFI6_8852C); 228 } 229 break; 230 case BTC_STR_POLUT: 231 switch (id) { 232 case_polut(NONE); 233 case_polut(GNT_BT_TX); 234 case_polut(GNT_BT_RX); 235 case_polut(GNT_WL); 236 case_polut(BT); 237 case_polut(ALL); 238 } 239 break; 240 case BTC_STR_EVENT: 241 switch(id) { 242 case_event(TDMA_ENTRY); 243 case_event(WL_TMR); 244 case_event(B1_TMR); 245 case_event(B2_TMR); 246 case_event(B3_TMR); 247 case_event(B4_TMR); 248 case_event(W2B_TMR); 249 case_event(B2W_TMR); 250 case_event(BCN_EARLY); 251 case_event(A2DP_EMPTY); 252 case_event(LK_END); 253 case_event(RX_ISR); 254 case_event(RX_FC0); 255 case_event(RX_FC1); 256 case_event(BT_RELINK); 257 case_event(BT_RETRY); 258 case_event(E2G); 259 case_event(E5G); 260 case_event(EBT); 261 case_event(ENULL); 262 case_event(DRV_WLK); 263 case_event(BCN_OK); 264 case_event(BT_CHANGE); 265 case_event(EBT_EXTEND); 266 case_event(E2G_NULL1); 267 } 268 break; 269 case BTC_STR_WLMODE: 270 switch(id) { 271 case_wlmode(INVALID); 272 case_wlmode(11B); 273 case_wlmode(11A); 274 case_wlmode(11G); 275 case_wlmode(11N); 276 case_wlmode(11AC); 277 case_wlmode(11AX); 278 case_wlmode(11BG); 279 case_wlmode(11GN); 280 case_wlmode(11AN); 281 case_wlmode(11BN); 282 case_wlmode(11BGN); 283 case_wlmode(11BGAC); 284 case_wlmode(11BGAX); 285 case_wlmode(11A_AC); 286 case_wlmode(11A_AX); 287 case_wlmode(11AGN); 288 case_wlmode(11ABGN); 289 case_wlmode(24G_MIX); 290 case_wlmode(5G_MIX); 291 case_wlmode(MAX); 292 } 293 break; 294 case BTC_STR_WLBW: 295 switch(id) { 296 case_wlbw(20); 297 case_wlbw(40); 298 case_wlbw(80); 299 case_wlbw(160); 300 case_wlbw(80_80); 301 case_wlbw(5); 302 case_wlbw(10); 303 case_wlbw(MAX); 304 } 305 break; 306 case BTC_STR_RFTYPE: 307 switch(id) { 308 case_rftype(1T1R); 309 case_rftype(1T2R); 310 case_rftype(2T3R); 311 case_rftype(2T4R); 312 case_rftype(3T3R); 313 case_rftype(3T4R); 314 case_rftype(4T4R); 315 } 316 break; 317 case BTC_STR_POLICY: 318 switch(id) { 319 case_cxp(OFF_BT); 320 case_cxp(OFF_WL); 321 case_cxp(OFF_EQ0); 322 case_cxp(OFF_EQ1); 323 case_cxp(OFF_EQ2); 324 case_cxp(OFF_EQ3); 325 case_cxp(OFF_BWB0); 326 case_cxp(OFF_BWB1); 327 case_cxp(OFF_BWB2); 328 case_cxp(OFFB_BWB0); 329 case_cxp(OFFE_2GBWISOB); 330 case_cxp(OFFE_2GISOB); 331 case_cxp(OFFE_2GBWMIXB); 332 case_cxp(OFFE_2GBWMIXB2); 333 case_cxp(OFFE_WL); 334 case_cxp(FIX_TD3030); 335 case_cxp(FIX_TD5050); 336 case_cxp(FIX_TD2030); 337 case_cxp(FIX_TD4010); 338 case_cxp(FIX_TD7010); 339 case_cxp(FIX_TD2060); 340 case_cxp(FIX_TD3060); 341 case_cxp(FIX_TD2080); 342 case_cxp(FIX_TDW1B1); 343 case_cxp(FIX_TD4010ISO); 344 case_cxp(PFIX_TD3030); 345 case_cxp(PFIX_TD5050); 346 case_cxp(PFIX_TD2030); 347 case_cxp(PFIX_TD2060); 348 case_cxp(PFIX_TD3070); 349 case_cxp(PFIX_TD2080); 350 case_cxp(PFIX_TDW1B1); 351 case_cxp(AUTO_TD50B1); 352 case_cxp(AUTO_TD60B1); 353 case_cxp(AUTO_TD20B1); 354 case_cxp(AUTO_TDW1B1); 355 case_cxp(PAUTO_TD50B1); 356 case_cxp(PAUTO_TD60B1); 357 case_cxp(PAUTO_TD20B1); 358 case_cxp(PAUTO_TDW1B1); 359 case_cxp(AUTO2_TD3050); 360 case_cxp(AUTO2_TD3070); 361 case_cxp(AUTO2_TD5050); 362 case_cxp(AUTO2_TD6060); 363 case_cxp(AUTO2_TD2080); 364 case_cxp(AUTO2_TDW1B4); 365 case_cxp(PAUTO2_TD3050); 366 case_cxp(PAUTO2_TD3070); 367 case_cxp(PAUTO2_TD5050); 368 case_cxp(PAUTO2_TD6060); 369 case_cxp(PAUTO2_TD2080); 370 case_cxp(PAUTO2_TDW1B4); 371 } 372 break; 373 case BTC_STR_MSTATE: 374 switch(id) { 375 case_mstate(NO_LINK); 376 case_mstate(LINKING); 377 case_mstate(LINKED); 378 } 379 break; 380 case BTC_STR_RATE: 381 switch(id) { 382 case_rate(CCK1); 383 case_rate(CCK2); 384 case_rate(CCK5_5); 385 case_rate(CCK11); 386 case_rate(OFDM6); 387 case_rate(OFDM9); 388 case_rate(OFDM12); 389 case_rate(OFDM18); 390 case_rate(OFDM24); 391 case_rate(OFDM36); 392 case_rate(OFDM48); 393 case_rate(OFDM54); 394 case_rate(MCS0); 395 case_rate(MCS1); 396 case_rate(MCS2); 397 case_rate(MCS3); 398 case_rate(MCS4); 399 case_rate(MCS5); 400 case_rate(MCS6); 401 case_rate(MCS7); 402 case_rate(MCS8); 403 case_rate(MCS9); 404 case_rate(MCS10); 405 case_rate(MCS11); 406 case_rate(MCS12); 407 case_rate(MCS13); 408 case_rate(MCS14); 409 case_rate(MCS15); 410 case_rate(MCS16); 411 case_rate(MCS17); 412 case_rate(MCS18); 413 case_rate(MCS19); 414 case_rate(MCS20); 415 case_rate(MCS21); 416 case_rate(MCS22); 417 case_rate(MCS23); 418 case_rate(MCS24); 419 case_rate(MCS25); 420 case_rate(MCS26); 421 case_rate(MCS27); 422 case_rate(MCS28); 423 case_rate(MCS29); 424 case_rate(MCS30); 425 case_rate(MCS31); 426 case_rate(VHT_NSS1_MCS0); 427 case_rate(VHT_NSS1_MCS1); 428 case_rate(VHT_NSS1_MCS2); 429 case_rate(VHT_NSS1_MCS3); 430 case_rate(VHT_NSS1_MCS4); 431 case_rate(VHT_NSS1_MCS5); 432 case_rate(VHT_NSS1_MCS6); 433 case_rate(VHT_NSS1_MCS7); 434 case_rate(VHT_NSS1_MCS8); 435 case_rate(VHT_NSS1_MCS9); 436 case_rate(VHT_NSS2_MCS0); 437 case_rate(VHT_NSS2_MCS1); 438 case_rate(VHT_NSS2_MCS2); 439 case_rate(VHT_NSS2_MCS3); 440 case_rate(VHT_NSS2_MCS4); 441 case_rate(VHT_NSS2_MCS5); 442 case_rate(VHT_NSS2_MCS6); 443 case_rate(VHT_NSS2_MCS7); 444 case_rate(VHT_NSS2_MCS8); 445 case_rate(VHT_NSS2_MCS9); 446 case_rate(VHT_NSS3_MCS0); 447 case_rate(VHT_NSS3_MCS1); 448 case_rate(VHT_NSS3_MCS2); 449 case_rate(VHT_NSS3_MCS3); 450 case_rate(VHT_NSS3_MCS4); 451 case_rate(VHT_NSS3_MCS5); 452 case_rate(VHT_NSS3_MCS6); 453 case_rate(VHT_NSS3_MCS7); 454 case_rate(VHT_NSS3_MCS8); 455 case_rate(VHT_NSS3_MCS9); 456 case_rate(VHT_NSS4_MCS0); 457 case_rate(VHT_NSS4_MCS1); 458 case_rate(VHT_NSS4_MCS2); 459 case_rate(VHT_NSS4_MCS3); 460 case_rate(VHT_NSS4_MCS4); 461 case_rate(VHT_NSS4_MCS5); 462 case_rate(VHT_NSS4_MCS6); 463 case_rate(VHT_NSS4_MCS7); 464 case_rate(VHT_NSS4_MCS8); 465 case_rate(VHT_NSS4_MCS9); 466 case_rate(HE_NSS1_MCS0); 467 case_rate(HE_NSS1_MCS1); 468 case_rate(HE_NSS1_MCS2); 469 case_rate(HE_NSS1_MCS3); 470 case_rate(HE_NSS1_MCS4); 471 case_rate(HE_NSS1_MCS5); 472 case_rate(HE_NSS1_MCS6); 473 case_rate(HE_NSS1_MCS7); 474 case_rate(HE_NSS1_MCS8); 475 case_rate(HE_NSS1_MCS9); 476 case_rate(HE_NSS1_MCS10); 477 case_rate(HE_NSS1_MCS11); 478 case_rate(HE_NSS2_MCS0); 479 case_rate(HE_NSS2_MCS1); 480 case_rate(HE_NSS2_MCS2); 481 case_rate(HE_NSS2_MCS3); 482 case_rate(HE_NSS2_MCS4); 483 case_rate(HE_NSS2_MCS5); 484 case_rate(HE_NSS2_MCS6); 485 case_rate(HE_NSS2_MCS7); 486 case_rate(HE_NSS2_MCS8); 487 case_rate(HE_NSS2_MCS9); 488 case_rate(HE_NSS2_MCS10); 489 case_rate(HE_NSS2_MCS11); 490 case_rate(HE_NSS3_MCS0); 491 case_rate(HE_NSS3_MCS1); 492 case_rate(HE_NSS3_MCS2); 493 case_rate(HE_NSS3_MCS3); 494 case_rate(HE_NSS3_MCS4); 495 case_rate(HE_NSS3_MCS5); 496 case_rate(HE_NSS3_MCS6); 497 case_rate(HE_NSS3_MCS7); 498 case_rate(HE_NSS3_MCS8); 499 case_rate(HE_NSS3_MCS9); 500 case_rate(HE_NSS3_MCS10); 501 case_rate(HE_NSS3_MCS11); 502 case_rate(HE_NSS4_MCS0); 503 case_rate(HE_NSS4_MCS1); 504 case_rate(HE_NSS4_MCS2); 505 case_rate(HE_NSS4_MCS3); 506 case_rate(HE_NSS4_MCS4); 507 case_rate(HE_NSS4_MCS5); 508 case_rate(HE_NSS4_MCS6); 509 case_rate(HE_NSS4_MCS7); 510 case_rate(HE_NSS4_MCS8); 511 case_rate(HE_NSS4_MCS9); 512 case_rate(HE_NSS4_MCS10); 513 case_rate(HE_NSS4_MCS11); 514 case_rate(MAX); 515 } 516 break; 517 } 518 519 return "Undefine"; 520 } 521 522 523 #endif 524