| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719 |
- #include "halmac_api.h"
- #include "halmac_module.h"
- HALMAC_API_ARG api_arg_table[HALMAC_API_MAX] = {
- #if (HALMAC_VERSION(1, 2, 0) <= HALMAC_CURRENT_VERSION)
- {HALMAC_API_INIT_OBJ, 3, {TLP_TYPE_PVOID, TLP_TYPE_POS_API_ENTRY, TLP_TYPE_PHALMAC_INTERFACE} },
- {HALMAC_API_DEINIT_OBJ, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_MAC_POWER_SWITCH, 1, {TLP_TYPE_PHALMAC_MAC_POWER} },
- {HALMAC_API_DOWNLOAD_FIRMWARE, 1, {TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_CFG_MAC_ADDR, 2, {TLP_TYPE_PU8, TLP_TYPE_PHALMAC_WLAN_ADDR} },
- {HALMAC_API_CFG_BSSID, 2, {TLP_TYPE_PU8, TLP_TYPE_PHALMAC_WLAN_ADDR} },
- {HALMAC_API_CFG_MULTICAST_ADDR, 1, {TLP_TYPE_PHALMAC_WLAN_ADDR} },
- {HALMAC_API_PRE_INIT_SYSTEM_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_INIT_SYSTEM_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_INIT_TRX_CFG, 1, {TLP_TYPE_PHALMAC_TRX_MODE} },
- {HALMAC_API_CFG_RX_AGGREGATION, 1, {TLP_TYPE_PHALMAC_RXAGG_CFG} },
- {HALMAC_API_CFG_OPERATION_MODE, 1, {TLP_TYPE_PHALMAC_WIRELESS_MODE} },
- {HALMAC_API_CFG_BW, 1, {TLP_TYPE_PHALMAC_BW} },
- {HALMAC_API_INIT_MAC_CFG, 1, {TLP_TYPE_PHALMAC_TRX_MODE} },
- {HALMAC_API_INIT_SDIO_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_INIT_USB_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_INIT_PCIE_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_DEINIT_SDIO_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_DEINIT_USB_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_DEINIT_PCIE_CFG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_GET_EFUSE_SIZE, 1, {TLP_TYPE_PU32} },
- {HALMAC_API_DUMP_EFUSE_MAP, 1, {TLP_TYPE_PHALMAC_EFUSE_READ_CFG} },
- {HALMAC_API_WRITE_EFUSE, 2, {TLP_TYPE_PU32, TLP_TYPE_PU8} },
- {HALMAC_API_READ_EFUSE, 2, {TLP_TYPE_PU32, TLP_TYPE_PU8} },
- {HALMAC_API_GET_LOGICAL_EFUSE_SIZE, 1, {TLP_TYPE_PU32} },
- {HALMAC_API_DUMP_LOGICAL_EFUSE_MAP, 1, {TLP_TYPE_PHALMAC_EFUSE_READ_CFG} },
- {HALMAC_API_WRITE_LOGICAL_EFUSE, 2, {TLP_TYPE_PU32, TLP_TYPE_PU8} },
- {HALMAC_API_READ_LOGICAL_EFUSE, 2, {TLP_TYPE_PU32, TLP_TYPE_PU8} },
- {HALMAC_API_GET_C2H_INFO, 1, {TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_H2C_LB, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_CFG_PARAMETER, 2, {TLP_TYPE_PHALMAC_PHY_PARAMETER_INFO, TLP_TYPE_PU8} },
- {HALMAC_API_UPDATE_PACKET, 2, {TLP_TYPE_PHALMAC_PACKET_ID, TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_TX_ALLOWED_SDIO, 1, {TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_SET_BULKOUT_NUM, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_GET_SDIO_TX_ADDR, 2, {TLP_TYPE_PU8_BUFFER, TLP_TYPE_PU32} },
- {HALMAC_API_GET_USB_BULKOUT_ID, 2, {TLP_TYPE_PU8_BUFFER, TLP_TYPE_PU8} },
- {HALMAC_API_TIMER_2S, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_CFG_DRV_INFO, 1, {TLP_TYPE_PHALMAC_DRV_INFO} },
- {HALMAC_API_SEND_BT_COEX, 1, {TLP_TYPE_PU8_BUFFER, TLP_TYPE_PU8} },
- {HALMAC_API_VERIFY_PLATFORM_API, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_CFG_TXBF, 3, {TLP_TYPE_PU8, TLP_TYPE_PHALMAC_BW, TLP_TYPE_PU8_1} },
- {HALMAC_API_CFG_MUMIMO, 1, {TLP_TYPE_PHALMAC_CFG_MUMIMO_PARA} },
- {HALMAC_API_CFG_SOUNDING, 2, {TLP_TYPE_PHALMAC_SND_ROLE, TLP_TYPE_PHALMAC_DATA_RATE} },
- {HALMAC_API_DEL_SOUNDING, 1, {TLP_TYPE_PHALMAC_SND_ROLE} },
- {HALMAC_API_SU_BFER_ENTRY_INIT, 1, {TLP_TYPE_PHALMAC_SU_BFER_INIT_PARA} },
- {HALMAC_API_SU_BFEE_ENTRY_INIT, 2, {TLP_TYPE_PU8, TLP_TYPE_PU16} },
- {HALMAC_API_MU_BFER_ENTRY_INIT, 1, {TLP_TYPE_PHALMAC_MU_BFER_INIT_PARA} },
- {HALMAC_API_MU_BFEE_ENTRY_INIT, 1, {TLP_TYPE_PHALMAC_MU_BFEE_INIT_PARA} },
- {HALMAC_API_SU_BFER_ENTRY_DEL, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_SU_BFEE_ENTRY_DEL, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_MU_BFER_ENTRY_DEL, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_MU_BFEE_ENTRY_DEL, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_ADD_CH_INFO, 1, {TLP_TYPE_PHALMAC_CH_INFO} },
- {HALMAC_API_CTRL_CH_SWITCH, 1, {TLP_TYPE_PHALMAC_CH_SWITCH_OPTION} },
- {HALMAC_API_CLEAR_CH_INFO, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_SEND_GENERAL_INFO, 1, {TLP_TYPE_PHALMAC_GENERAL_INFO} },
- {HALMAC_API_QUERY_STATE, 4, {TLP_TYPE_PHALMAC_FEATURE_ID, TLP_TYPE_PHALMAC_CMD_PROCESS_STATUS, TLP_TYPE_PU8_BUFFER, TLP_TYPE_PU32} },
- {HALMAC_API_CHECK_FW_STATUS, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_DUMP_FW_DMEM, 2, {TLP_TYPE_PU8_BUFFER, TLP_TYPE_PU32} },
- {HALMAC_API_RESET_FEATURE, 1, {TLP_TYPE_PHALMAC_FEATURE_ID} },
- {HALMAC_API_START_IQK, 1, {TLP_TYPE_PHALMAC_IQK} },
- {HALMAC_API_CTRL_PWR_TRACKING, 1, {TLP_TYPE_PHALMAC_PWR_TRACKING} },
- {HALMAC_API_CFG_LA_MODE, 1, {TLP_TYPE_PHALMAC_LA_MODE} },
- {HALMAC_API_GET_HW_VALUE, 2, {TLP_TYPE_PHALMAC_HW_ID, TLP_TYPE_PVOID} },
- {HALMAC_API_SET_HW_VALUE, 2, {TLP_TYPE_PHALMAC_HW_ID, TLP_TYPE_PVOID} },
- {HALMAC_API_CFG_DRV_RSVD_PG_NUM, 1, {TLP_TYPE_PHALMAC_DRV_RSVD_PG_NUM} },
- {HALMAC_API_DUMP_EFUSE_MAP_BT, 2, {TLP_TYPE_PHALMAC_EFUSE_BANK, TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_SWITCH_EFUSE_BANK, 1, {TLP_TYPE_PHALMAC_EFUSE_BANK} },
- {HALMAC_API_WRITE_EFUSE_BT, 3, {TLP_TYPE_PU32, TLP_TYPE_PU8, TLP_TYPE_PHALMAC_EFUSE_BANK} },
- {HALMAC_API_PG_EFUSE_BY_MAP, 2, {TLP_TYPE_PHALMAC_PG_EFUSE_INFO, TLP_TYPE_PHALMAC_EFUSE_READ_CFG} },
- {HALMAC_API_CFG_CSI_RATE, 4, {TLP_TYPE_PU8, TLP_TYPE_PU8_1, TLP_TYPE_PU8_2, TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_DL_DRV_RSVD_PG, 2, {TLP_TYPE_PU8, TLP_TYPE_PU8_BUFFER} },
- #endif
- #if (HALMAC_VERSION(1, 3, 0) <= HALMAC_CURRENT_VERSION)
- {HALMAC_API_PHY_CFG, 1, {TLP_TYPE_PHALMAC_INTF_PHY_PLATFORM} },
- {HALMAC_API_REGISTER_API, 1, {TLP_TYPE_PHALMAC_API_REGISTRY} },
- {HALMAC_API_FREE_DOWNLOAD_FIRMWARE, 2, {TLP_TYPE_PHALMAC_DLFW_MEM, TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_GET_FW_VERSION, 1, {TLP_TYPE_PHALMAC_FW_VERSION} },
- {HALMAC_API_DEBUG, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_GET_EFUSE_AVAL_SIZE, 1, {TLP_TYPE_PU32} },
- {HALMAC_API_FILL_TXDESC_CHECKSUM, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_GET_FIFO_SIZE, 1, {TLP_TYPE_PHALMAC_FIFO_SEL} },
- {HALMAC_API_DUMP_FIFO, 3, {TLP_TYPE_PHALMAC_FIFO_SEL, TLP_TYPE_PU32, TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_P2PPS, 1, {TLP_TYPE_PHALMAC_P2PPS} },
- {HALMAC_API_CFG_TX_AGG_ALIGN, 2, {TLP_TYPE_PU8, TLP_TYPE_PU16} },
- {HALMAC_API_CFG_MAX_DL_SIZE, 1, {TLP_TYPE_PU32} },
- {HALMAC_API_CFG_RX_FIFO_EXPANDING_MODE, 1, {TLP_TYPE_PHALMAC_RX_EXPAND_MODE} },
- {HALMAC_API_CHK_TXDESC, 1, {TLP_TYPE_PU8_BUFFER} },
- {HALMAC_API_PCIE_SWITCH, 1, {TLP_TYPE_PHALMAC_PCIE_CFG} },
- {HALMAC_API_SDIO_CMD53_4BYTE, 1, {TLP_TYPE_PHALMAC_SDIO_CMD53_4BYTE_MODE} },
- {HALMAC_API_CFG_TRANS_ADDR, 2, {TLP_TYPE_PU8, TLP_TYPE_PHALMAC_WLAN_ADDR} },
- {HALMAC_API_CFG_NET_TYPE, 2, {TLP_TYPE_PU8, TLP_TYPE_PHALMAC_NETWORK_TYPE_SELECT} },
- {HALMAC_API_CFG_TSF_RESET, 1, {TLP_TYPE_PU8} },
- {HALMAC_API_CFG_BCN_SPACE, 1, {TLP_TYPE_PU8, TLP_TYPE_PU32} },
- {HALMAC_API_CFG_BCN_CTRL, 3, {TLP_TYPE_PU8, TLP_TYPE_PU8_1, TLP_TYPE_PHALMAC_BCN_CTRL} },
- {HALMAC_API_INTF_INTEGRA_TUNING, 0, {TLP_TYPE_NONE} },
- {HALMAC_API_TXFIFO_IS_EMPTY, 1, {TLP_TYPE_PU32} },
- {HALMAC_API_SDIO_HW_INFO, 1, {TLP_TYPE_PHALMAC_SDIO_HW_INFO} },
- #endif
- #if (HALMAC_VERSION(1, 4, 0) <= HALMAC_CURRENT_VERSION)
- {HALMAC_API_CFG_SIDEBAND_INT, 1, {TLP_TYPE_PHALMAC_SIDEBAND_INT_CFG} },
- #endif
- {HALMAC_API_MAX, 0, {TLP_TYPE_NONE} }
- };
- static VOID
- halmac_obj_init(
- IN struct _HALMAC_OBJ *halmac_obj,
- IN u8 init
- )
- {
- halmac_obj->init = init;
- }
- static u8
- is_halmac_initialized(
- IN struct _HALMAC_OBJ *halmac_obj
- )
- {
- return halmac_obj->init;
- }
- static u8
- parse_halmac_api_arg_list(
- IN HALMAC_API_ID api_id,
- OUT PHALMAC_TLP_STRUCT parg,
- IN PHALMAC_TLP_STRUCT ptlp,
- IN u32 *arg_count
- )
- {
- u32 i, j;
- u32 idx = 0;
- u32 match_count;
- for (i = 0; i < HALMAC_API_MAX; i++) {
- if (api_arg_table[i].api_id == api_id) {
- idx = i;
- break;
- }
- }
- if (*arg_count < api_arg_table[idx].arg_count)
- return _FALSE;
- for (i = 0; i < api_arg_table[idx].arg_count; i++) {
- match_count = 0;
- for (j = 0; j < *arg_count; j++) {
- if (api_arg_table[idx].arg_type_seq[i] == ptlp[j].type) {
- if (match_count >= 1)
- return _FALSE; /* argument types should be different to each other for the same API */
- parg[i].type = ptlp[j].type;
- parg[i].length = ptlp[j].length;
- parg[i].ptr = ptlp[j].ptr;
- match_count++;
- }
- }
- }
- for (i = 0; i < api_arg_table[idx].arg_count; i++) {
- if (parg[i].type != api_arg_table[idx].arg_type_seq[i])
- return _FALSE;
- }
- return _TRUE;
- }
- HALMAC_RET_STATUS
- halmac_initialize_obj(
- IN struct _HALMAC_OBJ *halmac_obj,
- INOUT PHALMAC_TLP_STRUCT ptlp,
- IN u32 tlpCount
- )
- {
- VOID *pDriver_adapter = NULL;
- u32 arg_count = tlpCount;
- HALMAC_RET_STATUS result = HALMAC_RET_SUCCESS;
- HALMAC_TLP_STRUCT arg_list[MAX_ARG_NUM] = {0};
- HALMAC_VER chip_version;
- PHALMAC_ADAPTER pHalmac_adapter;
- if (is_halmac_initialized(halmac_obj))
- return HALMAC_RET_SUCCESS;
- if (!parse_halmac_api_arg_list(HALMAC_API_INIT_OBJ, &arg_list[0], ptlp, &arg_count))
- return HALMAC_RET_WRONG_ARGUMENT;
- halmac_obj->halmac_api_entry = (PHALMAC_API)0;
- halmac_obj->halmac_adapter = (PHALMAC_ADAPTER)0;
- result = halmac_init_adapter(arg_list[0].ptr, (PHALMAC_PLATFORM_API)arg_list[1].ptr,
- *((HALMAC_INTERFACE *)arg_list[2].ptr), &(halmac_obj->halmac_adapter), &(halmac_obj->halmac_api_entry));
- if (result != HALMAC_RET_SUCCESS)
- return result;
- halmac_obj_init(halmac_obj, _TRUE);
- result = halmac_obj->halmac_api_entry->halmac_get_chip_version(halmac_obj->halmac_adapter, &chip_version);
- halmac_obj->version = HALMAC_VERSION(chip_version.major_ver, chip_version.prototype_ver, chip_version.minor_ver);
- pDriver_adapter = halmac_obj->halmac_adapter->pDriver_adapter;
- pHalmac_adapter = halmac_obj->halmac_adapter;
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_init, current ver = 0x%x!!\n", HALMAC_CURRENT_VERSION);
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "halmac_init, 88xx ver = 0x%x!!\n", halmac_obj->version);
- return result;
- }
- HALMAC_RET_STATUS
- halmac_deinitialize_obj(
- IN struct _HALMAC_OBJ *halmac_obj,
- INOUT PHALMAC_TLP_STRUCT ptlp,
- IN u32 tlpCount
- )
- {
- u32 arg_count = tlpCount;
- HALMAC_RET_STATUS result = HALMAC_RET_SUCCESS;
- HALMAC_TLP_STRUCT arg_list[MAX_ARG_NUM] = {0};
- if (!is_halmac_initialized(halmac_obj))
- return HALMAC_RET_NOT_SUPPORT;
- if (!parse_halmac_api_arg_list(HALMAC_API_DEINIT_OBJ, &arg_list[0], ptlp, &arg_count))
- return HALMAC_RET_WRONG_ARGUMENT;
- halmac_obj_init(halmac_obj, _FALSE);
- result = halmac_deinit_adapter(halmac_obj->halmac_adapter);
- halmac_obj->halmac_api_entry = (PHALMAC_API)0;
- halmac_obj->halmac_adapter = (PHALMAC_ADAPTER)0;
- return result;
- }
- HALMAC_RET_STATUS
- halmac_set_information(
- IN struct _HALMAC_OBJ *halmac_obj,
- IN HALMAC_API_ID api_id,
- INOUT PHALMAC_TLP_STRUCT ptlp,
- IN u32 tlpCount
- )
- {
- u32 arg_count = tlpCount;
- HALMAC_RET_STATUS state = HALMAC_RET_SUCCESS;
- HALMAC_TLP_STRUCT arg_list[MAX_ARG_NUM] = {0};
- PHALMAC_ADAPTER pHalmac_adapter = halmac_obj->halmac_adapter;
- VOID *pDriver_adapter = halmac_obj->halmac_adapter->pDriver_adapter;
- if (!is_halmac_initialized(halmac_obj))
- return HALMAC_RET_NOT_SUPPORT;
- if (!parse_halmac_api_arg_list(api_id, &arg_list[0], ptlp, &arg_count))
- return HALMAC_RET_WRONG_ARGUMENT;
- state = HALMAC_RET_NOT_SUPPORT;
- switch (api_id) {
- #if (HALMAC_VERSION(1, 2, 0) <= HALMAC_CURRENT_VERSION)
- case HALMAC_API_MAC_POWER_SWITCH:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_mac_power_switch(halmac_obj->halmac_adapter, *((HALMAC_MAC_POWER *)arg_list[0].ptr));
- break;
- case HALMAC_API_DOWNLOAD_FIRMWARE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_download_firmware(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length);
- break;
- case HALMAC_API_CFG_MAC_ADDR:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_mac_addr(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), (PHALMAC_WLAN_ADDR)arg_list[1].ptr);
- break;
- case HALMAC_API_CFG_BSSID:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_bssid(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), (PHALMAC_WLAN_ADDR)arg_list[1].ptr);
- break;
- case HALMAC_API_CFG_MULTICAST_ADDR:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_multicast_addr(halmac_obj->halmac_adapter, (PHALMAC_WLAN_ADDR)arg_list[0].ptr);
- break;
- case HALMAC_API_PRE_INIT_SYSTEM_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_pre_init_system_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_INIT_SYSTEM_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_system_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_INIT_TRX_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_trx_cfg(halmac_obj->halmac_adapter, *((HALMAC_TRX_MODE *)arg_list[0].ptr));
- break;
- case HALMAC_API_CFG_RX_AGGREGATION:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_rx_aggregation(halmac_obj->halmac_adapter, (HALMAC_RXAGG_CFG *)arg_list[0].ptr);
- break;
- case HALMAC_API_CFG_OPERATION_MODE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_operation_mode(halmac_obj->halmac_adapter, *((HALMAC_WIRELESS_MODE *)arg_list[0].ptr));
- break;
- case HALMAC_API_CFG_BW:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_bw(halmac_obj->halmac_adapter, *((HALMAC_BW *)arg_list[0].ptr));
- break;
- case HALMAC_API_INIT_MAC_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_mac_cfg(halmac_obj->halmac_adapter, *((HALMAC_TRX_MODE *)arg_list[0].ptr));
- break;
- case HALMAC_API_INIT_SDIO_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_interface_cfg(halmac_obj->halmac_adapter);
- else if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_sdio_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_INIT_USB_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_interface_cfg(halmac_obj->halmac_adapter);
- else if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_usb_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_INIT_PCIE_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_interface_cfg(halmac_obj->halmac_adapter);
- else if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_init_pcie_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_DEINIT_SDIO_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_deinit_interface_cfg(halmac_obj->halmac_adapter);
- else if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_deinit_sdio_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_DEINIT_USB_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_deinit_interface_cfg(halmac_obj->halmac_adapter);
- else if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_deinit_usb_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_DEINIT_PCIE_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_deinit_interface_cfg(halmac_obj->halmac_adapter);
- else if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_deinit_pcie_cfg(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_WRITE_EFUSE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_write_efuse(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr), *((u8 *)arg_list[1].ptr));
- break;
- case HALMAC_API_PG_EFUSE_BY_MAP:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_pg_efuse_by_map(halmac_obj->halmac_adapter, (PHALMAC_PG_EFUSE_INFO)arg_list[0].ptr, *((HALMAC_EFUSE_READ_CFG *)arg_list[1].ptr));
- break;
- case HALMAC_API_GET_C2H_INFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_c2h_info(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length);
- break;
- case HALMAC_API_H2C_LB:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_h2c_lb(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_CFG_PARAMETER:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_parameter(halmac_obj->halmac_adapter, (PHALMAC_PHY_PARAMETER_INFO)(arg_list[0].ptr), *((u8 *)arg_list[1].ptr));
- break;
- case HALMAC_API_UPDATE_PACKET:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_update_packet(halmac_obj->halmac_adapter, *((HALMAC_PACKET_ID *)arg_list[0].ptr), (u8 *)arg_list[1].ptr, arg_list[1].length);
- break;
- case HALMAC_API_SET_BULKOUT_NUM:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_set_bulkout_num(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr));
- break;
- case HALMAC_API_CFG_DRV_INFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_drv_info(halmac_obj->halmac_adapter, *((HALMAC_DRV_INFO *)arg_list[0].ptr));
- break;
- case HALMAC_API_SEND_BT_COEX:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_send_bt_coex(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length, *((u8 *)arg_list[1].ptr));
- break;
- case HALMAC_API_VERIFY_PLATFORM_API:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_verify_platform_api(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_CFG_TXBF:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_txbf(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((HALMAC_BW *)arg_list[1].ptr), *((u8 *)arg_list[2].ptr));
- break;
- case HALMAC_API_CFG_MUMIMO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_mumimo(halmac_obj->halmac_adapter, (PHALMAC_CFG_MUMIMO_PARA)arg_list[0].ptr);
- break;
- case HALMAC_API_CFG_SOUNDING:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_sounding(halmac_obj->halmac_adapter, *((HALMAC_SND_ROLE *)arg_list[0].ptr), *((HALMAC_DATA_RATE *)arg_list[1].ptr));
- break;
- case HALMAC_API_DEL_SOUNDING:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_del_sounding(halmac_obj->halmac_adapter, *((HALMAC_SND_ROLE *)arg_list[0].ptr));
- break;
- case HALMAC_API_SU_BFER_ENTRY_INIT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_su_bfer_entry_init(halmac_obj->halmac_adapter, (PHALMAC_SU_BFER_INIT_PARA)arg_list[0].ptr);
- break;
- case HALMAC_API_SU_BFEE_ENTRY_INIT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_su_bfee_entry_init(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((u16 *)arg_list[1].ptr));
- break;
- case HALMAC_API_MU_BFER_ENTRY_INIT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_mu_bfer_entry_init(halmac_obj->halmac_adapter, (PHALMAC_MU_BFER_INIT_PARA)arg_list[0].ptr);
- break;
- case HALMAC_API_MU_BFEE_ENTRY_INIT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_mu_bfee_entry_init(halmac_obj->halmac_adapter, (PHALMAC_MU_BFEE_INIT_PARA)arg_list[0].ptr);
- break;
- case HALMAC_API_SU_BFER_ENTRY_DEL:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_su_bfer_entry_del(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr));
- break;
- case HALMAC_API_SU_BFEE_ENTRY_DEL:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_su_bfee_entry_del(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr));
- break;
- case HALMAC_API_MU_BFER_ENTRY_DEL:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_mu_bfer_entry_del(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_MU_BFEE_ENTRY_DEL:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_mu_bfee_entry_del(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr));
- break;
- case HALMAC_API_ADD_CH_INFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_add_ch_info(halmac_obj->halmac_adapter, (PHALMAC_CH_INFO)arg_list[0].ptr);
- break;
- case HALMAC_API_CTRL_CH_SWITCH:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_ctrl_ch_switch(halmac_obj->halmac_adapter, (PHALMAC_CH_SWITCH_OPTION)arg_list[0].ptr);
- break;
- case HALMAC_API_CLEAR_CH_INFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_clear_ch_info(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_SEND_GENERAL_INFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_send_general_info(halmac_obj->halmac_adapter, (PHALMAC_GENERAL_INFO)arg_list[0].ptr);
- break;
- case HALMAC_API_RESET_FEATURE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_reset_feature(halmac_obj->halmac_adapter, *((HALMAC_FEATURE_ID *)arg_list[0].ptr));
- break;
- case HALMAC_API_WRITE_LOGICAL_EFUSE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_write_logical_efuse(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr), *((u8 *)arg_list[1].ptr));
- break;
- case HALMAC_API_CTRL_PWR_TRACKING:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_ctrl_pwr_tracking(halmac_obj->halmac_adapter, (PHALMAC_PWR_TRACKING_OPTION)arg_list[0].ptr);
- break;
- case HALMAC_API_START_IQK:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_start_iqk(halmac_obj->halmac_adapter, (PHALMAC_IQK_PARA)arg_list[0].ptr);
- break;
- case HALMAC_API_CFG_LA_MODE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_la_mode(halmac_obj->halmac_adapter, *((HALMAC_LA_MODE *)arg_list[0].ptr));
- break;
- case HALMAC_API_SET_HW_VALUE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_set_hw_value(halmac_obj->halmac_adapter, *((HALMAC_HW_ID *)arg_list[0].ptr), (VOID *)arg_list[1].ptr);
- break;
- case HALMAC_API_CFG_DRV_RSVD_PG_NUM:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_drv_rsvd_pg_num(halmac_obj->halmac_adapter, *((HALMAC_DRV_RSVD_PG_NUM *)arg_list[0].ptr));
- break;
- case HALMAC_API_SWITCH_EFUSE_BANK:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_switch_efuse_bank(halmac_obj->halmac_adapter, (HALMAC_EFUSE_BANK)*((u16 *)arg_list[0].ptr));
- break;
- case HALMAC_API_WRITE_EFUSE_BT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_write_efuse_bt(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr), *((u8 *)arg_list[1].ptr), (HALMAC_EFUSE_BANK)*((u16 *)arg_list[2].ptr));
- break;
- case HALMAC_API_CFG_CSI_RATE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_csi_rate(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((u8 *)arg_list[1].ptr), *((u8 *)arg_list[2].ptr), (u8 *)arg_list[3].ptr);
- break;
- case HALMAC_API_DL_DRV_RSVD_PG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_dl_drv_rsvd_page(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), (u8 *)arg_list[1].ptr, arg_list[1].length);
- break;
- #endif
- #if (HALMAC_VERSION(1, 3, 0) <= HALMAC_CURRENT_VERSION)
- case HALMAC_API_PHY_CFG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_phy_cfg(halmac_obj->halmac_adapter, *((HALMAC_INTF_PHY_PLATFORM *)arg_list[0].ptr));
- break;
- case HALMAC_API_DEBUG:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_debug(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_CFG_TX_AGG_ALIGN:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_tx_agg_align(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((u16 *)arg_list[1].ptr));
- break;
- case HALMAC_API_CFG_MAX_DL_SIZE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_max_dl_size(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr));
- break;
- case HALMAC_API_CFG_RX_FIFO_EXPANDING_MODE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_rx_fifo_expanding_mode(halmac_obj->halmac_adapter, *((HALMAC_RX_FIFO_EXPANDING_MODE *)arg_list[0].ptr));
- break;
- case HALMAC_API_CHK_TXDESC:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_chk_txdesc(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length);
- break;
- case HALMAC_API_PCIE_SWITCH:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_pcie_switch(halmac_obj->halmac_adapter, *((HALMAC_PCIE_CFG *)arg_list[0].ptr));
- break;
- case HALMAC_API_SDIO_CMD53_4BYTE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_sdio_cmd53_4byte(halmac_obj->halmac_adapter, *((HALMAC_SDIO_CMD53_4BYTE_MODE *)arg_list[0].ptr));
- break;
- case HALMAC_API_INTF_INTEGRA_TUNING:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_interface_integration_tuning(halmac_obj->halmac_adapter);
- break;
- case HALMAC_API_TXFIFO_IS_EMPTY:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 3))
- state = halmac_obj->halmac_api_entry->halmac_txfifo_is_empty(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr));
- break;
- case HALMAC_API_P2PPS:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 3))
- state = halmac_obj->halmac_api_entry->halmac_p2pps(halmac_obj->halmac_adapter, (PHALMAC_P2PPS)arg_list[0].ptr);
- break;
- case HALMAC_API_FREE_DOWNLOAD_FIRMWARE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 5))
- state = halmac_obj->halmac_api_entry->halmac_free_download_firmware(halmac_obj->halmac_adapter, *((HALMAC_DLFW_MEM *)arg_list[0].ptr), (u8 *)arg_list[1].ptr, arg_list[1].length);
- break;
- case HALMAC_API_SDIO_HW_INFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 6))
- state = halmac_obj->halmac_api_entry->halmac_sdio_hw_info(halmac_obj->halmac_adapter, (PHALMAC_SDIO_HW_INFO)arg_list[0].ptr);
- break;
- #endif
- #if (HALMAC_VERSION(1, 4, 0) <= HALMAC_CURRENT_VERSION)
- case HALMAC_API_REGISTER_API:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_register_api(halmac_obj->halmac_adapter, (PHALMAC_API_REGISTRY)arg_list[0].ptr);
- break;
- case HALMAC_API_CFG_TRANS_ADDR:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_transmitter_addr(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), (PHALMAC_WLAN_ADDR)arg_list[1].ptr);
- break;
- case HALMAC_API_CFG_NET_TYPE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_net_type(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((HALMAC_NETWORK_TYPE_SELECT *)arg_list[1].ptr));
- break;
- case HALMAC_API_CFG_TSF_RESET:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_tsf_rst(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr));
- break;
- case HALMAC_API_CFG_BCN_SPACE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_bcn_space(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((u32 *)arg_list[1].ptr));
- break;
- case HALMAC_API_CFG_BCN_CTRL:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_rw_bcn_ctrl(halmac_obj->halmac_adapter, *((u8 *)arg_list[0].ptr), *((u8 *)arg_list[1].ptr), (PHALMAC_BCN_CTRL)arg_list[2].ptr);
- break;
- case HALMAC_API_CFG_SIDEBAND_INT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 4, 0))
- state = halmac_obj->halmac_api_entry->halmac_cfg_sideband_int(halmac_obj->halmac_adapter, *((HALMAC_SIDEBAND_INT_CFG *)arg_list[0].ptr));
- break;
- #endif
- default:
- state = HALMAC_RET_NOT_SUPPORT;
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_WARN, "halmac_set_information, HALMAC ver = %x, api_id = %x,HALMAC_RET_NOT_SUPPORT !!\n", halmac_obj->version, api_id, state);
- break;
- }
- if (state != HALMAC_RET_SUCCESS)
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_WARN, "halmac_setinformation, HALMAC ver = %x, api_id = %x, state = %x!!\n", halmac_obj->version, api_id, state);
- else
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "[TRACE] halmac_setinformation, api_id = %x, state = %x!!\n", api_id, state);
- return state;
- }
- HALMAC_RET_STATUS
- halmac_get_information(
- IN struct _HALMAC_OBJ *halmac_obj,
- IN HALMAC_API_ID api_id,
- INOUT PHALMAC_TLP_STRUCT ptlp,
- IN u32 tlpCount
- )
- {
- u32 arg_count = tlpCount;
- HALMAC_RET_STATUS state = HALMAC_RET_SUCCESS;
- HALMAC_TLP_STRUCT arg_list[MAX_ARG_NUM] = {0};
- PHALMAC_ADAPTER pHalmac_adapter = halmac_obj->halmac_adapter;
- VOID *pDriver_adapter = halmac_obj->halmac_adapter->pDriver_adapter;
- if (!is_halmac_initialized(halmac_obj))
- return HALMAC_RET_NOT_SUPPORT;
- if (!parse_halmac_api_arg_list(api_id, &arg_list[0], ptlp, &arg_count))
- return HALMAC_RET_WRONG_ARGUMENT;
- state = HALMAC_RET_NOT_SUPPORT;
- switch (api_id) {
- #if (HALMAC_VERSION(1, 2, 0) <= HALMAC_CURRENT_VERSION)
- case HALMAC_API_GET_EFUSE_SIZE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_efuse_size(halmac_obj->halmac_adapter, (u32 *)arg_list[0].ptr);
- break;
- case HALMAC_API_DUMP_EFUSE_MAP:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_dump_efuse_map(halmac_obj->halmac_adapter, *((HALMAC_EFUSE_READ_CFG *)arg_list[0].ptr));
- break;
- case HALMAC_API_READ_EFUSE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_read_efuse(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr), (u8 *)arg_list[1].ptr);
- break;
- case HALMAC_API_GET_LOGICAL_EFUSE_SIZE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_logical_efuse_size(halmac_obj->halmac_adapter, (u32 *)arg_list[0].ptr);
- break;
- case HALMAC_API_DUMP_LOGICAL_EFUSE_MAP:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_dump_logical_efuse_map(halmac_obj->halmac_adapter, *((HALMAC_EFUSE_READ_CFG *)arg_list[0].ptr));
- break;
- case HALMAC_API_READ_LOGICAL_EFUSE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_read_logical_efuse(halmac_obj->halmac_adapter, *((u32 *)arg_list[0].ptr), (u8 *)arg_list[1].ptr);
- break;
- case HALMAC_API_TX_ALLOWED_SDIO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_tx_allowed_sdio(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length);
- break;
- case HALMAC_API_GET_SDIO_TX_ADDR:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_sdio_tx_addr(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length, (u32 *)arg_list[1].ptr);
- break;
- case HALMAC_API_GET_USB_BULKOUT_ID:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_usb_bulkout_id(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, arg_list[0].length, (u8 *)arg_list[1].ptr);
- break;
- case HALMAC_API_QUERY_STATE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_query_status(halmac_obj->halmac_adapter, *((HALMAC_FEATURE_ID *)arg_list[0].ptr), (HALMAC_CMD_PROCESS_STATUS *)arg_list[1].ptr, (u8 *)arg_list[2].ptr, (u32 *)arg_list[3].ptr);
- break;
- case HALMAC_API_CHECK_FW_STATUS:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_check_fw_status(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr);
- break;
- case HALMAC_API_DUMP_FW_DMEM:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_dump_fw_dmem(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr, (u32 *)arg_list[1].ptr);
- break;
- case HALMAC_API_GET_HW_VALUE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_hw_value(halmac_obj->halmac_adapter, *((HALMAC_HW_ID *)arg_list[0].ptr), (VOID *)arg_list[1].ptr);
- break;
- case HALMAC_API_DUMP_EFUSE_MAP_BT:
- if (halmac_obj->version >= HALMAC_VERSION(1, 2, 0))
- state = halmac_obj->halmac_api_entry->halmac_dump_efuse_map_bt(halmac_obj->halmac_adapter, (HALMAC_EFUSE_BANK)*((u16 *)arg_list[0].ptr), arg_list[1].length, (u8 *)arg_list[1].ptr);
- break;
- #endif
- #if (HALMAC_VERSION(1, 3, 0) <= HALMAC_CURRENT_VERSION)
- case HALMAC_API_GET_FW_VERSION:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_fw_version(halmac_obj->halmac_adapter, (PHALMAC_FW_VERSION)arg_list[0].ptr);
- break;
- case HALMAC_API_GET_EFUSE_AVAL_SIZE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_get_efuse_available_size(halmac_obj->halmac_adapter, (u32 *)arg_list[0].ptr);
- break;
- case HALMAC_API_FILL_TXDESC_CHECKSUM:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_fill_txdesc_checksum(halmac_obj->halmac_adapter, (u8 *)arg_list[0].ptr);
- break;
- case HALMAC_API_GET_FIFO_SIZE:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0)) {
- *((u32 *)arg_list[0].ptr) = halmac_obj->halmac_api_entry->halmac_get_fifo_size(halmac_obj->halmac_adapter, *((HAL_FIFO_SEL *)arg_list[0].ptr));
- state = HALMAC_RET_SUCCESS;
- }
- break;
- case HALMAC_API_DUMP_FIFO:
- if (halmac_obj->version >= HALMAC_VERSION(1, 3, 0))
- state = halmac_obj->halmac_api_entry->halmac_dump_fifo(halmac_obj->halmac_adapter, *((HAL_FIFO_SEL *)arg_list[0].ptr), *((u32 *)arg_list[1].ptr), arg_list[2].length, (u8 *)arg_list[2].ptr);
- break;
- #endif
- default:
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_WARN, "halmac_get_information, HALMAC ver = %x, api_id = %x,HALMAC_RET_NOT_SUPPORT !!\n", halmac_obj->version, api_id, state);
- state = HALMAC_RET_NOT_SUPPORT;
- break;
- }
- if (state != HALMAC_RET_SUCCESS)
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_WARN, "halmac_get_information, HALMAC ver = %x, api_id = %x, state = %x!!\n", halmac_obj->version, api_id, state);
- else
- PLATFORM_MSG_PRINT(pDriver_adapter, HALMAC_MSG_INIT, HALMAC_DBG_TRACE, "[TRACE] halmac_getinformation, api_id = %x, state = %x!!\n", api_id, state);
- return state;
- }
|