/****************************************************************************** * * Copyright(c) 2019 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * *****************************************************************************/ #define _HAL_BTC_DEF_C_ #include "../hal_headers_le.h" #include "hal_btc.h" #include "halbtc_fw.h" #include "halbtc_action.h" #ifdef CONFIG_BTCOEX #define case_role(src) \ case PHL_RTYPE_##src: return #src #define case_mrole(src) \ case BTC_WLMROLE_##src: return #src #define case_slot(src) \ case CXST_##src: return #src #define case_reg(src) \ case REG_##src: return #src #define case_tdma(src) \ case CXTDMA_##src: return #src #define case_trace(src) \ case CXSTEP_##src: return #src #define case_branch(src) \ case BTC_BRANCH_##src: return #src #define case_rxflctrl_(src) \ case CXFLC_##src: return #src #define case_wllink(src) \ case BTC_WLINK_##src: return #src #define case_antpath(src) \ case BTC_ANT_##src: return #src #define case_gdbg(src) \ case BTC_DBG_##src: return #src #define case_chip(src) \ case CHIP_##src: return #src #define case_event(src) \ case CXEVNT_##src: return #src #define case_wlmode(src) \ case WLAN_MD_##src: return #src #define case_wlbw(src) \ case CHANNEL_WIDTH_##src: return #src #define case_cxp(src) \ case BTC_CXP_##src: return #src #define case_rftype(src) \ case RF_##src: return #src #define case_mstate(src) \ case MLME_##src: return #src #define case_rate(src) \ case RTW_DATA_RATE_##src: return #src #define case_polut(src) \ case BTC_PLT_##src: return #src const char *id_to_str(u8 type, u32 id) { switch(type) { case BTC_STR_ROLE: switch (id) { case_role(NONE); case_role(STATION); case_role(AP); case_role(VAP); case_role(ADHOC); case_role(ADHOC_MASTER); case_role(MESH); case_role(MONITOR); case_role(P2P_DEVICE); case_role(P2P_GC); case_role(P2P_GO); case_role(NAN); } break; case BTC_STR_MROLE: switch (id) { case_mrole(NONE); case_mrole(STA_GC); case_mrole(STA_GC_NOA); case_mrole(STA_GO); case_mrole(STA_GO_NOA); case_mrole(STA_STA); } break; case BTC_STR_SLOT: switch (id) { case_slot(OFF); case_slot(B2W); case_slot(W1); case_slot(W2); case_slot(W2B); case_slot(B1); case_slot(B2); case_slot(B3); case_slot(B4); case_slot(LK); case_slot(BLK); case_slot(E2G); case_slot(E5G); case_slot(EBT); case_slot(ENULL); case_slot(WLK); case_slot(W1FDD); case_slot(B1FDD); } break; case BTC_STR_REG: switch (id) { case_reg(MAC); case_reg(BB); case_reg(RF); case_reg(BT_RF); case_reg(BT_MODEM); case_reg(BT_BLUEWIZE); case_reg(BT_VENDOR); case_reg(BT_LE); } break; case BTC_STR_TDMA: switch (id) { case_tdma(OFF); case_tdma(FIX); case_tdma(AUTO); case_tdma(AUTO2); } break; case BTC_STR_TRACE: switch (id) { case_trace(NONE); case_trace(EVNT); case_trace(SLOT); } break; case BTC_STR_BRANCH: switch (id) { case_branch(MAIN); case_branch(HP); case_branch(LENOVO); case_branch(HUAWEI); } break; case BTC_STR_RXFLCTRL: switch (id) { case_rxflctrl_(OFF); case_rxflctrl_(NULLP); case_rxflctrl_(QOSNULL); case_rxflctrl_(CTS); } break; case BTC_STR_WLLINK: switch (id) { case_wllink(NOLINK); case_wllink(2G_STA); case_wllink(2G_GO); case_wllink(2G_GC); case_wllink(2G_AP); case_wllink(2G_SCC); case_wllink(2G_MCC); case_wllink(25G_MCC); case_wllink(25G_DBCC); case_wllink(5G); case_wllink(2G_NAN); case_wllink(OTHER); } break; case BTC_STR_ANTPATH: switch (id) { case_antpath(WPOWERON); case_antpath(WINIT); case_antpath(WONLY); case_antpath(WOFF); case_antpath(W2G); case_antpath(W5G); case_antpath(W25G); case_antpath(FREERUN); case_antpath(WRFK); case_antpath(BRFK); } break; case BTC_STR_GDBG: switch (id) { case_gdbg(GNT_BT); case_gdbg(GNT_WL); case_gdbg(BCN_EARLY); case_gdbg(WL_NULL0); case_gdbg(WL_NULL1); case_gdbg(WL_RXISR); case_gdbg(TDMA_ENTRY); case_gdbg(A2DP_EMPTY); case_gdbg(BT_RETRY); case_gdbg(BT_RELINK); case_gdbg(SLOT_WL); case_gdbg(SLOT_BT); case_gdbg(WL_RFK); case_gdbg(BT_RFK); case_gdbg(SLOT_B2W); case_gdbg(SLOT_W1); case_gdbg(SLOT_W2); case_gdbg(SLOT_W2B); case_gdbg(SLOT_B1); case_gdbg(SLOT_B2); case_gdbg(SLOT_B3); case_gdbg(SLOT_B4); case_gdbg(SLOT_LK); case_gdbg(SLOT_E2G); case_gdbg(SLOT_E5G); case_gdbg(SLOT_EBT); case_gdbg(SLOT_ENULL); case_gdbg(SLOT_WLK); case_gdbg(SLOT_W1FDD); case_gdbg(SLOT_B1FDD); case_gdbg(BT_CHANGE); } break; case BTC_STR_CHIPID: switch (id) { case_chip(WIFI6_8852A); case_chip(WIFI6_8852B); case_chip(WIFI6_8852C); } break; case BTC_STR_POLUT: switch (id) { case_polut(NONE); case_polut(GNT_BT_TX); case_polut(GNT_BT_RX); case_polut(GNT_WL); case_polut(BT); case_polut(ALL); } break; case BTC_STR_EVENT: switch(id) { case_event(TDMA_ENTRY); case_event(WL_TMR); case_event(B1_TMR); case_event(B2_TMR); case_event(B3_TMR); case_event(B4_TMR); case_event(W2B_TMR); case_event(B2W_TMR); case_event(BCN_EARLY); case_event(A2DP_EMPTY); case_event(LK_END); case_event(RX_ISR); case_event(RX_FC0); case_event(RX_FC1); case_event(BT_RELINK); case_event(BT_RETRY); case_event(E2G); case_event(E5G); case_event(EBT); case_event(ENULL); case_event(DRV_WLK); case_event(BCN_OK); case_event(BT_CHANGE); case_event(EBT_EXTEND); case_event(E2G_NULL1); } break; case BTC_STR_WLMODE: switch(id) { case_wlmode(INVALID); case_wlmode(11B); case_wlmode(11A); case_wlmode(11G); case_wlmode(11N); case_wlmode(11AC); case_wlmode(11AX); case_wlmode(11BG); case_wlmode(11GN); case_wlmode(11AN); case_wlmode(11BN); case_wlmode(11BGN); case_wlmode(11BGAC); case_wlmode(11BGAX); case_wlmode(11A_AC); case_wlmode(11A_AX); case_wlmode(11AGN); case_wlmode(11ABGN); case_wlmode(24G_MIX); case_wlmode(5G_MIX); case_wlmode(MAX); } break; case BTC_STR_WLBW: switch(id) { case_wlbw(20); case_wlbw(40); case_wlbw(80); case_wlbw(160); case_wlbw(80_80); case_wlbw(5); case_wlbw(10); case_wlbw(MAX); } break; case BTC_STR_RFTYPE: switch(id) { case_rftype(1T1R); case_rftype(1T2R); case_rftype(2T3R); case_rftype(2T4R); case_rftype(3T3R); case_rftype(3T4R); case_rftype(4T4R); } break; case BTC_STR_POLICY: switch(id) { case_cxp(OFF_BT); case_cxp(OFF_WL); case_cxp(OFF_EQ0); case_cxp(OFF_EQ1); case_cxp(OFF_EQ2); case_cxp(OFF_EQ3); case_cxp(OFF_BWB0); case_cxp(OFF_BWB1); case_cxp(OFF_BWB2); case_cxp(OFFB_BWB0); case_cxp(OFFE_2GBWISOB); case_cxp(OFFE_2GISOB); case_cxp(OFFE_2GBWMIXB); case_cxp(OFFE_2GBWMIXB2); case_cxp(OFFE_WL); case_cxp(FIX_TD3030); case_cxp(FIX_TD5050); case_cxp(FIX_TD2030); case_cxp(FIX_TD4010); case_cxp(FIX_TD7010); case_cxp(FIX_TD2060); case_cxp(FIX_TD3060); case_cxp(FIX_TD2080); case_cxp(FIX_TDW1B1); case_cxp(FIX_TD4010ISO); case_cxp(PFIX_TD3030); case_cxp(PFIX_TD5050); case_cxp(PFIX_TD2030); case_cxp(PFIX_TD2060); case_cxp(PFIX_TD3070); case_cxp(PFIX_TD2080); case_cxp(PFIX_TDW1B1); case_cxp(AUTO_TD50B1); case_cxp(AUTO_TD60B1); case_cxp(AUTO_TD20B1); case_cxp(AUTO_TDW1B1); case_cxp(PAUTO_TD50B1); case_cxp(PAUTO_TD60B1); case_cxp(PAUTO_TD20B1); case_cxp(PAUTO_TDW1B1); case_cxp(AUTO2_TD3050); case_cxp(AUTO2_TD3070); case_cxp(AUTO2_TD5050); case_cxp(AUTO2_TD6060); case_cxp(AUTO2_TD2080); case_cxp(AUTO2_TDW1B4); case_cxp(PAUTO2_TD3050); case_cxp(PAUTO2_TD3070); case_cxp(PAUTO2_TD5050); case_cxp(PAUTO2_TD6060); case_cxp(PAUTO2_TD2080); case_cxp(PAUTO2_TDW1B4); } break; case BTC_STR_MSTATE: switch(id) { case_mstate(NO_LINK); case_mstate(LINKING); case_mstate(LINKED); } break; case BTC_STR_RATE: switch(id) { case_rate(CCK1); case_rate(CCK2); case_rate(CCK5_5); case_rate(CCK11); case_rate(OFDM6); case_rate(OFDM9); case_rate(OFDM12); case_rate(OFDM18); case_rate(OFDM24); case_rate(OFDM36); case_rate(OFDM48); case_rate(OFDM54); case_rate(MCS0); case_rate(MCS1); case_rate(MCS2); case_rate(MCS3); case_rate(MCS4); case_rate(MCS5); case_rate(MCS6); case_rate(MCS7); case_rate(MCS8); case_rate(MCS9); case_rate(MCS10); case_rate(MCS11); case_rate(MCS12); case_rate(MCS13); case_rate(MCS14); case_rate(MCS15); case_rate(MCS16); case_rate(MCS17); case_rate(MCS18); case_rate(MCS19); case_rate(MCS20); case_rate(MCS21); case_rate(MCS22); case_rate(MCS23); case_rate(MCS24); case_rate(MCS25); case_rate(MCS26); case_rate(MCS27); case_rate(MCS28); case_rate(MCS29); case_rate(MCS30); case_rate(MCS31); case_rate(VHT_NSS1_MCS0); case_rate(VHT_NSS1_MCS1); case_rate(VHT_NSS1_MCS2); case_rate(VHT_NSS1_MCS3); case_rate(VHT_NSS1_MCS4); case_rate(VHT_NSS1_MCS5); case_rate(VHT_NSS1_MCS6); case_rate(VHT_NSS1_MCS7); case_rate(VHT_NSS1_MCS8); case_rate(VHT_NSS1_MCS9); case_rate(VHT_NSS2_MCS0); case_rate(VHT_NSS2_MCS1); case_rate(VHT_NSS2_MCS2); case_rate(VHT_NSS2_MCS3); case_rate(VHT_NSS2_MCS4); case_rate(VHT_NSS2_MCS5); case_rate(VHT_NSS2_MCS6); case_rate(VHT_NSS2_MCS7); case_rate(VHT_NSS2_MCS8); case_rate(VHT_NSS2_MCS9); case_rate(VHT_NSS3_MCS0); case_rate(VHT_NSS3_MCS1); case_rate(VHT_NSS3_MCS2); case_rate(VHT_NSS3_MCS3); case_rate(VHT_NSS3_MCS4); case_rate(VHT_NSS3_MCS5); case_rate(VHT_NSS3_MCS6); case_rate(VHT_NSS3_MCS7); case_rate(VHT_NSS3_MCS8); case_rate(VHT_NSS3_MCS9); case_rate(VHT_NSS4_MCS0); case_rate(VHT_NSS4_MCS1); case_rate(VHT_NSS4_MCS2); case_rate(VHT_NSS4_MCS3); case_rate(VHT_NSS4_MCS4); case_rate(VHT_NSS4_MCS5); case_rate(VHT_NSS4_MCS6); case_rate(VHT_NSS4_MCS7); case_rate(VHT_NSS4_MCS8); case_rate(VHT_NSS4_MCS9); case_rate(HE_NSS1_MCS0); case_rate(HE_NSS1_MCS1); case_rate(HE_NSS1_MCS2); case_rate(HE_NSS1_MCS3); case_rate(HE_NSS1_MCS4); case_rate(HE_NSS1_MCS5); case_rate(HE_NSS1_MCS6); case_rate(HE_NSS1_MCS7); case_rate(HE_NSS1_MCS8); case_rate(HE_NSS1_MCS9); case_rate(HE_NSS1_MCS10); case_rate(HE_NSS1_MCS11); case_rate(HE_NSS2_MCS0); case_rate(HE_NSS2_MCS1); case_rate(HE_NSS2_MCS2); case_rate(HE_NSS2_MCS3); case_rate(HE_NSS2_MCS4); case_rate(HE_NSS2_MCS5); case_rate(HE_NSS2_MCS6); case_rate(HE_NSS2_MCS7); case_rate(HE_NSS2_MCS8); case_rate(HE_NSS2_MCS9); case_rate(HE_NSS2_MCS10); case_rate(HE_NSS2_MCS11); case_rate(HE_NSS3_MCS0); case_rate(HE_NSS3_MCS1); case_rate(HE_NSS3_MCS2); case_rate(HE_NSS3_MCS3); case_rate(HE_NSS3_MCS4); case_rate(HE_NSS3_MCS5); case_rate(HE_NSS3_MCS6); case_rate(HE_NSS3_MCS7); case_rate(HE_NSS3_MCS8); case_rate(HE_NSS3_MCS9); case_rate(HE_NSS3_MCS10); case_rate(HE_NSS3_MCS11); case_rate(HE_NSS4_MCS0); case_rate(HE_NSS4_MCS1); case_rate(HE_NSS4_MCS2); case_rate(HE_NSS4_MCS3); case_rate(HE_NSS4_MCS4); case_rate(HE_NSS4_MCS5); case_rate(HE_NSS4_MCS6); case_rate(HE_NSS4_MCS7); case_rate(HE_NSS4_MCS8); case_rate(HE_NSS4_MCS9); case_rate(HE_NSS4_MCS10); case_rate(HE_NSS4_MCS11); case_rate(MAX); } break; } return "Undefine"; } #endif