diff options
| author | Kumar Anand <kanand@qca.qualcomm.com> | 2014-07-30 15:54:18 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-08-13 11:31:03 -0700 |
| commit | 7a4d3f822ba3ed0046c838c2bfeff2e11b349eb1 (patch) | |
| tree | 0e0f1983582e81cfe219a6d0fd97f67a45c867f7 | |
| parent | 2287e30f9029f6adba1639124ef428e5d99ddb80 (diff) | |
wlan: remove obsolete Pronto NV & PTT code
Rome CLD driver doesn't use the NV.bin or PTT
code from Prima/Pronto (ISOC). Removing all
the obsolete NV & PTT code from CLD driver.
CRs-Fixed: 702118
Change-Id: I105529c4b025c92d1931b533975f2ab48a24070e
27 files changed, 30 insertions, 12640 deletions
diff --git a/Android.mk b/Android.mk index 784b4fcf9d61..263a952664d1 100644 --- a/Android.mk +++ b/Android.mk @@ -94,6 +94,18 @@ $(shell ln -sf /firmware/image/utf30.bin $(TARGET_OUT_ETC)/firmware/utf30.bin) $(shell ln -sf /firmware/image/qwlan30.bin $(TARGET_OUT_ETC)/firmware/qwlan30.bin) endif +# Copy config ini files to target +ifeq ($(call is-board-platform-in-list, msm8994),false) +ifeq ($(WLAN_PROPRIETARY),1) +$(shell mkdir -p $(TARGET_OUT)/etc/firmware/wlan/$(WLAN_CHIPSET)) +$(shell mkdir -p $(TARGET_OUT)/etc/wifi) +$(shell rm -f $(TARGET_OUT)/etc/wifi/WCNSS_qcom_cfg.ini) +$(shell rm -f $(TARGET_OUT)/etc/firmware/wlan/$(WLAN_SHIPSET)/WCNSS_cfg.dat) +$(shell cp $(LOCAL_PATH)/firmware_bin/WCNSS_qcom_cfg.ini $(TARGET_OUT)/etc/wifi) +$(shell cp $(LOCAL_PATH)/firmware_bin/WCNSS_cfg.dat $(TARGET_OUT)/etc/firmware/wlan/$(WLAN_CHIPSET)) +endif +endif + endif # DLKM check endif # supported target check diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c index 068b1198589b..45654de3cfee 100644 --- a/CORE/HDD/src/wlan_hdd_ftm.c +++ b/CORE/HDD/src/wlan_hdd_ftm.c @@ -71,7 +71,6 @@ #include "wlan_nv.h" #include "wlan_qct_wda.h" #include "cfgApi.h" -#include "pttMsgApi.h" #include "wlan_qct_pal_device.h" #if defined(QCA_WIFI_FTM) diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index ec16099fd152..003b75e7040b 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -7486,114 +7486,6 @@ static void hdd_uninit (struct net_device *dev) } /**--------------------------------------------------------------------------- - - \brief hdd_release_firmware() - - - This function calls the release firmware API to free the firmware buffer. - - \param - pFileName Pointer to the File Name. - pCtx - Pointer to the adapter . - - - \return - 0 for success, non zero for failure - - --------------------------------------------------------------------------*/ - -VOS_STATUS hdd_release_firmware(char *pFileName,v_VOID_t *pCtx) -{ - VOS_STATUS status = VOS_STATUS_SUCCESS; - hdd_context_t *pHddCtx = (hdd_context_t*)pCtx; - ENTER(); - - - if (!strcmp(WLAN_FW_FILE, pFileName)) { - - hddLog(VOS_TRACE_LEVEL_INFO_HIGH,"%s: Loaded firmware file is %s",__func__,pFileName); - - if(pHddCtx->fw) { - release_firmware(pHddCtx->fw); - pHddCtx->fw = NULL; - } - else - status = VOS_STATUS_E_FAILURE; - } - else if (!strcmp(WLAN_NV_FILE,pFileName)) { - if(pHddCtx->nv) { - release_firmware(pHddCtx->nv); - pHddCtx->nv = NULL; - } - else - status = VOS_STATUS_E_FAILURE; - - } - - EXIT(); - return status; -} - -/**--------------------------------------------------------------------------- - - \brief hdd_request_firmware() - - - This function reads the firmware file using the request firmware - API and returns the the firmware data and the firmware file size. - - \param - pfileName - Pointer to the file name. - - pCtx - Pointer to the adapter . - - ppfw_data - Pointer to the pointer of the firmware data. - - pSize - Pointer to the file size. - - \return - VOS_STATUS_SUCCESS for success, VOS_STATUS_E_FAILURE for failure - - --------------------------------------------------------------------------*/ - - -VOS_STATUS hdd_request_firmware(char *pfileName,v_VOID_t *pCtx,v_VOID_t **ppfw_data, v_SIZE_t *pSize) -{ - int status; - VOS_STATUS retval = VOS_STATUS_SUCCESS; - hdd_context_t *pHddCtx = (hdd_context_t*)pCtx; - ENTER(); - - if( (!strcmp(WLAN_FW_FILE, pfileName)) ) { - - status = request_firmware(&pHddCtx->fw, pfileName, pHddCtx->parent_dev); - - if(status || !pHddCtx->fw || !pHddCtx->fw->data) { - hddLog(VOS_TRACE_LEVEL_FATAL, "%s: Firmware %s download failed", - __func__, pfileName); - retval = VOS_STATUS_E_FAILURE; - } - - else { - *ppfw_data = (v_VOID_t *)pHddCtx->fw->data; - *pSize = pHddCtx->fw->size; - hddLog(VOS_TRACE_LEVEL_INFO, "%s: Firmware size = %d", - __func__, *pSize); - } - } - else if(!strcmp(WLAN_NV_FILE, pfileName)) { - - status = request_firmware(&pHddCtx->nv, pfileName, pHddCtx->parent_dev); - - if(status || !pHddCtx->nv || !pHddCtx->nv->data) { - hddLog(VOS_TRACE_LEVEL_FATAL, "%s: nv %s download failed", - __func__, pfileName); - retval = VOS_STATUS_E_FAILURE; - } - - else { - *ppfw_data = (v_VOID_t *)pHddCtx->nv->data; - *pSize = pHddCtx->nv->size; - hddLog(VOS_TRACE_LEVEL_INFO, "%s: nv file size = %d", - __func__, *pSize); - } - } - - EXIT(); - return retval; -} -/**--------------------------------------------------------------------------- \brief hdd_full_pwr_cbk() - HDD full power callbackfunction This is the function invoked by SME to inform the result of a full power @@ -10775,80 +10667,6 @@ int hdd_wlan_notify_modem_power_state(int state) /**--------------------------------------------------------------------------- - \brief hdd_update_config_from_nv() - Function to update the contents of - the running configuration with parameters taken from NV storage - - \param - pHddCtx - Pointer to the HDD global context - - \return - VOS_STATUS_SUCCESS if successful - - --------------------------------------------------------------------------*/ -static VOS_STATUS hdd_update_config_from_nv(hdd_context_t* pHddCtx) -{ - v_BOOL_t itemIsValid = VOS_FALSE; - VOS_STATUS status; - v_MACADDR_t macFromNV[VOS_MAX_CONCURRENCY_PERSONA]; - v_U8_t macLoop; - - /*If the NV is valid then get the macaddress from nv else get it from qcom_cfg.ini*/ - status = vos_nv_getValidity(VNV_FIELD_IMAGE, &itemIsValid); - if(status != VOS_STATUS_SUCCESS) - { - hddLog(VOS_TRACE_LEVEL_ERROR," vos_nv_getValidity() failed"); - return VOS_STATUS_E_FAILURE; - } - - if (itemIsValid == VOS_TRUE) - { - hddLog(VOS_TRACE_LEVEL_INFO_HIGH," Reading the Macaddress from NV"); - status = vos_nv_readMultiMacAddress((v_U8_t *)&macFromNV[0].bytes[0], - VOS_MAX_CONCURRENCY_PERSONA); - if(status != VOS_STATUS_SUCCESS) - { - /* Get MAC from NV fail, not update CFG info - * INI MAC value will be used for MAC setting */ - hddLog(VOS_TRACE_LEVEL_ERROR," vos_nv_readMacAddress() failed"); - return VOS_STATUS_E_FAILURE; - } - - /* If first MAC is not valid, treat all others are not valid - * Then all MACs will be got from ini file */ - if(vos_is_macaddr_zero(&macFromNV[0])) - { - /* MAC address in NV file is not configured yet */ - hddLog(VOS_TRACE_LEVEL_WARN, "Invalid MAC in NV file"); - return VOS_STATUS_E_INVAL; - } - - /* Get MAC address from NV, update CFG info */ - for(macLoop = 0; macLoop < VOS_MAX_CONCURRENCY_PERSONA; macLoop++) - { - if(vos_is_macaddr_zero(&macFromNV[macLoop])) - { - hddLog(VOS_TRACE_LEVEL_ERROR, - "not valid MAC from NV for %d", macLoop); - /* This MAC is not valid, skip it - * This MAC will be got from ini file */ - } - else - { - vos_mem_copy((v_U8_t *)&pHddCtx->cfg_ini->intfMacAddr[macLoop].bytes[0], - (v_U8_t *)&macFromNV[macLoop].bytes[0], - VOS_MAC_ADDR_SIZE); - } - } - } - else - { - hddLog(VOS_TRACE_LEVEL_ERROR, "NV ITEM, MAC Not valid"); - return VOS_STATUS_E_FAILURE; - } - - return VOS_STATUS_SUCCESS; -} - -/**--------------------------------------------------------------------------- - \brief hdd_post_voss_start_config() - HDD post voss start config helper \param - pAdapter - Pointer to the HDD @@ -11594,13 +11412,6 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc) goto err_wiphy_unregister; } - // Get mac addr from platform driver - if (VOS_STATUS_SUCCESS != hdd_update_config_from_nv(pHddCtx)) - { - // Apply the NV to cfg.dat - /* Prima Update MAC address only at here */ - } - if ( VOS_STATUS_SUCCESS != hdd_update_mac_config( pHddCtx ) ) { hddLog(VOS_TRACE_LEVEL_WARN, diff --git a/CORE/SERVICES/COMMON/wma_api.h b/CORE/SERVICES/COMMON/wma_api.h index 78a886461053..a01f7184138a 100644 --- a/CORE/SERVICES/COMMON/wma_api.h +++ b/CORE/SERVICES/COMMON/wma_api.h @@ -88,10 +88,6 @@ typedef enum { #define QPOWER_CMD 6 #define GTX_CMD 7 -#ifdef QCA_WIFI_ISOC -VOS_STATUS wma_nv_download_start(v_VOID_t *vos_context); -#endif - VOS_STATUS wma_pre_start(v_VOID_t *vos_context); VOS_STATUS wma_mc_process_msg( v_VOID_t *vos_context, vos_msg_t *msg ); diff --git a/CORE/SERVICES/WMA/wlan_nv.c b/CORE/SERVICES/WMA/wlan_nv.c index b7ee5b99f8fe..d273e218ef69 100644 --- a/CORE/SERVICES/WMA/wlan_nv.c +++ b/CORE/SERVICES/WMA/wlan_nv.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 The Linux Foundation. All rights reserved. + * Copyright (c) "2012,2014" The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -41,6 +41,7 @@ #ifndef WLAN_NV_C #define WLAN_NV_C +#include "palTypes.h" #include "wlan_nv.h" const sHalNv nvDefaults = diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 9b82dc6d21c5..9e6212d1c463 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -1218,8 +1218,6 @@ void wma_get_modeselect(tp_wma_handle wma, u_int32_t *modeSelect); VOS_STATUS wma_cfg_download_isoc(v_VOID_t *vos_context, tp_wma_handle wma_handle); -VOS_STATUS wma_nv_download_start(v_VOID_t *handle); - VOS_STATUS wma_cfg_nv_get_hal_message_buffer(tp_wma_handle wma_handle, u_int16_t uReqType, u_int16_t usBufferLen, u_int8_t **pMsgBuffer, u_int16_t *pusDataOffset, diff --git a/CORE/SERVICES/WMA/wma_isoc.c b/CORE/SERVICES/WMA/wma_isoc.c index 4e828f79eb5c..9f0113aed64e 100644 --- a/CORE/SERVICES/WMA/wma_isoc.c +++ b/CORE/SERVICES/WMA/wma_isoc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1048,225 +1048,6 @@ handle_failure: return VOS_STATUS_E_FAILURE; } -/* function: - * Descriptin: - * Args: - * Retruns: - */ -VOS_STATUS wma_nv_download_start(void *vos_context) -{ - A_STATUS status = A_OK; - VOS_STATUS vos_status = VOS_STATUS_SUCCESS; - pVosContextType pVosContext = (pVosContextType)vos_context; - tp_wma_handle wma_handle = - (tp_wma_handle)vos_get_context(VOS_MODULE_ID_WDA, vos_context); - tHalNvImgDownloadReqMsg halNvImgDownloadParam; - v_U8_t *send_buf = NULL; - v_U8_t *src_buf = NULL; - v_U16_t data_offset = 0; - v_U16_t send_size = 0; - v_U16_t last_frag_len = 0; - v_SINT_t length = 0; - v_U16_t no_pkts = 0; - v_U16_t frag_num = 0; - - WMA_LOGD("Enter"); - /* Fill hal msg*/ - /* halMsgHeader+driverType+configbuffer*/ - /*----------------------------------------------------------------------- - Get message buffer - -----------------------------------------------------------------------*/ - vos_mem_zero(&halNvImgDownloadParam, sizeof (halNvImgDownloadParam)); - vos_nv_getNVBuffer((void**)&src_buf, &length); - - no_pkts = TOTALFRAGMENTS(length); - last_frag_len = length % FRAGMENT_SIZE; - - WMA_LOGD("no_pkts = %hu, last_frag_len = %hu", - no_pkts, last_frag_len); - // Download FRAGMENT_SIZE packets - if (no_pkts > 1) { - if (( VOS_STATUS_SUCCESS != wma_cfg_nv_get_hal_message_buffer( wma_handle, FW_NV_DOWNLOAD_REQ, - sizeof(halNvImgDownloadParam.nvImageReqParams) + FRAGMENT_SIZE, - &send_buf, &data_offset, &send_size))|| - ( send_size < (data_offset + sizeof(halNvImgDownloadParam.nvImageReqParams) + FRAGMENT_SIZE )) - ) { - WMA_LOGE("Unable to get send buffer in start req"); - vos_status = VOS_STATUS_E_FAILURE; - VOS_ASSERT(0); - goto end; - } - - /*HAL maintaining the fragment count as 0,1,2...n*/ - while (frag_num < no_pkts - 1) { - adf_nbuf_t msg = NULL; - v_U32_t *msg_word = NULL; - HTC_PACKET htc_packet; - - halNvImgDownloadParam.nvImageReqParams.isLastFragment = 0; - halNvImgDownloadParam.nvImageReqParams.fragNumber = frag_num; - halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = FRAGMENT_SIZE; - - vos_mem_copy(send_buf + data_offset, - &halNvImgDownloadParam.nvImageReqParams, sizeof(tHalNvImgDownloadReqParams)); - - /* Appending the NV image fragment */ - vos_mem_copy(send_buf + data_offset + sizeof(tHalNvImgDownloadReqParams), - (void *)(src_buf + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE), - FRAGMENT_SIZE); - - frag_num++; - - /* Fill HTC packet */ - msg = adf_nbuf_alloc( - wma_handle->adf_dev, - send_size, - /* reserve room for HTC header */ - HTC_HEADER_LEN + HTC_HDR_ALIGNMENT_PADDING, 4, FALSE); - - if (!msg) { - vos_status = VOS_STATUS_E_NOMEM; - goto end; - } - /* set the length of the message */ - adf_nbuf_put_tail(msg, send_size); - /* fill in the message contents */ - msg_word = (v_U32_t *) adf_nbuf_data(msg); - vos_mem_copy(msg_word, send_buf, send_size); - /* rewind beyond alignment pad to get to the HTC header reserved area */ - adf_nbuf_push_head(msg, HTC_HDR_ALIGNMENT_PADDING); - - SET_HTC_PACKET_INFO_TX( - &htc_packet, - wma_handle, - adf_nbuf_data(msg), - adf_nbuf_len(msg), - wma_handle->cfg_nv.endpoint_id, - 0); - - SET_HTC_PACKET_NET_BUF_CONTEXT(&htc_packet, msg); - - vos_event_reset(&wma_handle->cfg_nv_rx_complete); - - status = HTCSendPkt(wma_handle->htc_handle, &htc_packet); - if (status != A_OK) - { - WMA_LOGE(" failed to send all nv fragments\n"); - break; - } - - // waiting for next send - vos_status = - vos_wait_single_event(&(wma_handle->cfg_nv_rx_complete), - WMA_CFG_NV_DNLD_TIMEOUT); - if (VOS_STATUS_SUCCESS != vos_status) { - WMA_LOGP("failed to download the cfg"); - goto end; - } - } - - if (send_buf) { - vos_mem_free(send_buf); - send_buf = NULL; - } - } - - VOS_ASSERT( frag_num == no_pkts - 1); - if (last_frag_len) { - adf_nbuf_t msg = NULL; - v_U32_t *msg_word = NULL; - HTC_PACKET htc_packet; - - if (( VOS_STATUS_SUCCESS != wma_cfg_nv_get_hal_message_buffer( wma_handle, FW_NV_DOWNLOAD_REQ, - sizeof(halNvImgDownloadParam.nvImageReqParams) + last_frag_len, - &send_buf, &data_offset, &send_size))|| - ( send_size < (data_offset + sizeof(halNvImgDownloadParam.nvImageReqParams) + last_frag_len )) - ) { - WMA_LOGP("Unable to get send buffer in start req"); - vos_status = VOS_STATUS_E_FAILURE; - VOS_ASSERT(0); - goto end; - } - - /*HAL maintaining the fragment count as 0,1,2...n*/ - - halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1; - halNvImgDownloadParam.nvImageReqParams.fragNumber = frag_num; - halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = last_frag_len; - - vos_mem_copy( send_buf + data_offset, - &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams)); - - /* Appending the NV image fragment */ - vos_mem_copy( send_buf + data_offset + sizeof(tHalNvImgDownloadReqParams), - (void *)(src_buf + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE), - last_frag_len); - - frag_num++; - - /* Fill HTC packet */ - msg = adf_nbuf_alloc( - wma_handle->adf_dev, - send_size, - /* reserve room for HTC header */ - HTC_HEADER_LEN + HTC_HDR_ALIGNMENT_PADDING, 4, FALSE); - - if (!msg) { - status = A_NO_MEMORY; - goto end; - } - /* set the length of the message */ - adf_nbuf_put_tail(msg, send_size); - /* fill in the message contents */ - msg_word = (v_U32_t *) adf_nbuf_data(msg); - vos_mem_copy(msg_word, send_buf, send_size); - /* rewind beyond alignment pad to get to the HTC header reserved area */ - adf_nbuf_push_head(msg, HTC_HDR_ALIGNMENT_PADDING); - - SET_HTC_PACKET_INFO_TX( - &htc_packet, - wma_handle, - adf_nbuf_data(msg), - adf_nbuf_len(msg), - wma_handle->cfg_nv.endpoint_id, - 0) - - SET_HTC_PACKET_NET_BUF_CONTEXT(&htc_packet, msg); - - vos_event_reset(&wma_handle->cfg_nv_rx_complete); - status = HTCSendPkt(wma_handle->htc_handle, &htc_packet); - if (status != A_OK) { - WMA_LOGP("failed to download the nv\n"); - } - - /* to guarantee htc_packet is available in TX complete */ - vos_status = - vos_wait_single_event(&(wma_handle->cfg_nv_rx_complete), - WMA_CFG_NV_DNLD_TIMEOUT); - if (VOS_STATUS_SUCCESS != vos_status) { - WMA_LOGP("failed to download the cfg"); - goto end; - } - - vos_status = vos_event_set(&pVosContext->wdaCompleteEvent); - if (vos_status) { - WMA_LOGE("Failed to set the event"); - } - - if (send_buf) { - vos_mem_free(send_buf); - send_buf = NULL; - } - } -end: - if(send_buf) { - vos_mem_free(send_buf); - send_buf = NULL; - } - - WMA_LOGD("Exit"); - return vos_status; -} /* function : wma_get_hal_drv_type * Descriptin : * Args : diff --git a/CORE/VOSS/inc/vos_nvitem.h b/CORE/VOSS/inc/vos_nvitem.h index f8bef51677f9..9270fcf08e09 100644 --- a/CORE/VOSS/inc/vos_nvitem.h +++ b/CORE/VOSS/inc/vos_nvitem.h @@ -48,107 +48,12 @@ /*-------------------------------------------------------------------------- Preprocessor definitions and constants ------------------------------------------------------------------------*/ -// NV Items with their parameters are specified below -// Parameters include: enum label in VNV_TYPE (_name), -// element count (_cnt), element size (_size), -// enum of first element in NV module (_label) - -/* - * The VOS NV Item Table is compliant to AMSS NV service files of: - * //source/qcom/qct/wconnect/wlan/private/csw/nv/ @ CL 431102 - * - * VNV_REGULATORY_DOMAIN_TABLE - contains regulatory domain information; - * the table is stored as $(REGDOMAIN_COUNT) NV items where each NV item - * contains information for one domain; see definition of v_REGDOMAIN_t - * for the regulatory domains - * - * VNV_FIELD_IMAGE - contains various elements such as MAC addresses - * - * VNV_RATE_TO_POWER_TABLE - table of power for each of 25 PHY rates - * - * VNV_DEFAULT_LOCATION - default country code and regulatory domain - * - * VNV_MAXIMUM_TX_POWER - * - * VNV_RX_SENSITIVITY - table of sensitivity for each of %(MAC_RATE_COUNT) MAC - * rates; see definition of v_MAC_RATE_t for the MAC rates - * - * VNV_NETWORK_TYPE - either A, B or G type - * - * VOV_QFUSE - 16 byte QFUSE data - */ -#define VNV_ITEM_TABLE \ -ADD_VNV_ITEM( VNV_REGULARTORY_DOMAIN_TABLE, REGDOMAIN_COUNT, 144, \ - NV_WLAN_REGULATORY_DOMAIN_FCC_I ) \ -ADD_VNV_ITEM( VNV_FIELD_IMAGE, 1, 52, NV_WLAN_FIELD_IMAGE_I ) \ -ADD_VNV_ITEM( VNV_RATE_TO_POWER_TABLE, 2, 66, NV_WLAN_RATE_TO_POWER_LIST_I )\ -ADD_VNV_ITEM( VNV_DEFAULT_LOCATION, 1, 4, NV_WLAN_DEFAULT_LOCATION_INFO_I ) \ -ADD_VNV_ITEM( VNV_TPC_POWER_TABLE, 14, 128, NV_WLAN_TPC_POWER_TABLE_I ) \ -ADD_VNV_ITEM( VNV_TPC_PDADC_OFFSETS, 14, 2, NV_WLAN_TPC_PDADC_OFFSETS_I ) \ -ADD_VNV_ITEM( VNV_MAXIMUM_TX_POWER, 1, 1, NV_WLAN_MAX_TX_POWER_I ) \ -ADD_VNV_ITEM( VNV_RX_SENSITIVITY, 1, MAC_RATE_COUNT, NV_WLAN_RX_SENSITIVITY_I)\ -ADD_VNV_ITEM( VNV_NETWORK_TYPE, 1, 1, NV_WLAN_NETWORK_TYPE_I ) \ -ADD_VNV_ITEM( VNV_CAL_MEMORY, 1, 3460, NV_WLAN_CAL_MEMORY_I ) \ -ADD_VNV_ITEM( VNV_FW_CONFIG, 1, 32, NV_WLAN_FW_CONFIG_I ) \ -ADD_VNV_ITEM( VNV_RSSI_CHANNEL_OFFSETS, 2, 56, NV_WLAN_RSSI_CHANNEL_OFFSETS_I ) \ -ADD_VNV_ITEM( VNV_HW_CAL_VALUES, 1, 48, NV_WLAN_HW_CAL_VALUES_I ) \ -ADD_VNV_ITEM( VNV_ANTENNA_PATH_LOSS, 14, 2, NV_WLAN_ANTENNA_PATH_LOSS_I ) \ -ADD_VNV_ITEM( VNV_PACKET_TYPE_POWER_LIMITS, 42, 2, NV_WLAN_PACKET_TYPE_POWER_LIMITS_I ) \ -ADD_VNV_ITEM( VNV_OFDM_CMD_PWR_OFFSET, 1, 2, NV_WLAN_OFDM_CMD_PWR_OFFSET_I ) \ -ADD_VNV_ITEM( VNV_TX_BB_FILTER_MODE, 1, 4, NV_TX_BB_FILTER_MODE_I ) \ -ADD_VNV_ITEM( VNV_FREQUENCY_FOR_1_3V_SUPPLY, 1, 4, NV_FREQUENCY_FOR_1_3V_SUPPLY_I ) \ -ADD_VNV_ITEM( VNV_TABLE_VIRTUAL_RATE, 1, 4, VNV_TABLE_VIRTUAL_RATE_I ) \ - - #define VOS_COUNTRY_CODE_LEN 2 #define VOS_MAC_ADDRESS_LEN 6 -#define VOS_NV_FREQUENCY_FOR_1_3V_SUPPLY_3P2MH 0 //3.2 Mhz -#define VOS_NV_FREQUENCY_FOR_1_3V_SUPPLY_1P6MH 1 //1.6 Mhz - - -/*! - * The path (from the root of the DPP_FOLDER_PATH\QCOM) to the file containing - * the CLPC provisioning data. This is being temporarily put here. This should go - * to esp_dpp.h where the WLAN_PROVISION_DATA is present. - */ -#define CLPC_PROVISION_DATA L"WLAN_CLPC.PROVISION" /*-------------------------------------------------------------------------- Type declarations ------------------------------------------------------------------------*/ -// enum of RX sensitivity table index -typedef enum -{ - // 11b - MAC_RATE_11B_1_MBPS, - MAC_RATE_11B_2_MBPS, - MAC_RATE_11B_5_5_MBPS, - MAC_RATE_11B_11_MBPS, - - // 11g - MAC_RATE_11G_6_MBPS, - MAC_RATE_11G_9_MBPS, - MAC_RATE_11G_12_MBPS, - MAC_RATE_11G_18_MBPS, - MAC_RATE_11G_24_MBPS, - MAC_RATE_11G_36_MBPS, - MAC_RATE_11G_48_MBPS, - MAC_RATE_11G_54_MBPS, - - // 11n - MAC_RATE_11N_MCS_0, - MAC_RATE_11N_MCS_1, - MAC_RATE_11N_MCS_2, - MAC_RATE_11N_MCS_3, - MAC_RATE_11N_MCS_4, - MAC_RATE_11N_MCS_5, - MAC_RATE_11N_MCS_6, - MAC_RATE_11N_MCS_7, - - MAC_RATE_COUNT - -} v_MAC_RATE_t; - // enum of regulatory doamains in WLAN typedef enum { @@ -178,19 +83,9 @@ typedef enum } v_CountryInfoSource_t; -// enum of supported NV items in VOSS typedef enum { -#define ADD_VNV_ITEM(_name, _cnt, _size, _label) _name, - VNV_ITEM_TABLE -#undef ADD_VNV_ITEM - VNV_TYPE_COUNT -} -VNV_TYPE; - -typedef enum -{ -/* DFS Session refers to successful SAP session operating in DFS channel */ + /* DFS Session refers to successful SAP session operating in DFS channel */ DFS_CAC_NEVER_DONE, /* CAC was never done for this current ap / ap-ap */ DFS_CAC_IN_PROGRESS, /* CAC is in progress for this DFS session */ DFS_CAC_ALREADY_DONE, /* CAC already for SAP starting this DFS session */ @@ -200,26 +95,6 @@ eDFS_CAC_STATUS; // country code type typedef v_U8_t v_COUNTRYCODE_t[VOS_COUNTRY_CODE_LEN]; -// MAC address type -typedef v_U8_t v_MAC_ADDRESS_t[VOS_MAC_ADDRESS_LEN]; - -/*------------------------------------------------------------------------- - Function declarations and documenation - ------------------------------------------------------------------------*/ -/**------------------------------------------------------------------------ - - \brief vos_nv_init() - initialize the NV module - - The \a vos_nv_init() initializes the NV module. This read the binary - file for country code and regulatory domain information. - - \return VOS_STATUS_SUCCESS - module is initialized successfully - otherwise - module is not initialized - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_init(void); - /**------------------------------------------------------------------------ \brief vos_nv_getRegDomainFromCountryCode() - get the regulatory domain of @@ -273,291 +148,6 @@ VOS_STATUS vos_nv_getSupportedCountryCode( v_BYTE_t *pBuffer, v_SIZE_t *pBufferS v_SIZE_t paddingSize ); /**------------------------------------------------------------------------ - - \brief vos_nv_setValidity() - set the validity of an NV item. - - The \a vos_nv_setValidity() validates and invalidates an NV item. The - validity information is stored in NV memory. - One would get the VOS_STATUS_E_EXISTS error when reading an invalid item. - An item becomes valid when one has written to it successfully. - - \param type - NV item type - - \param itemIsValid - boolean value indicating the item's validity - - \return VOS_STATUS_SUCCESS - validity is set successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAILURE - unknown error - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_setValidity( VNV_TYPE type, v_BOOL_t itemIsValid ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_getValidity() - get the validity of an NV item. - - The \a vos_nv_getValidity() indicates if an NV item is valid. The - validity information is stored in NV memory. - One would get the VOS_STATUS_E_EXISTS error when reading an invalid item. - An item becomes valid when one has written to it successfully. - - \param type - NV item type - - \param pItemIsValid- pointer to the boolean value indicating the item's - validity - - \return VOS_STATUS_SUCCESS - validity is determined successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAILURE - unknown error - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getValidity( VNV_TYPE type, v_BOOL_t *pItemIsValid ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_read() - read a NV item to an output buffer - - The \a vos_nv_read() reads a NV item to an output buffer. If the item is - an array, this function would read the entire array. One would get a - VOS_STATUS_E_EXISTS error when reading an invalid item. - - For error conditions of VOS_STATUS_E_EXISTS and VOS_STATUS_E_FAILURE, - if a default buffer is provided (with a non-NULL value), - the default buffer content is copied to the output buffer. - - \param type - NV item type - - \param outputBuffer - output buffer - - \param defaultBuffer - default buffer - - \param bufferSize - output buffer size - - \return VOS_STATUS_SUCCESS - NV item is read successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAULT - defaultBuffer point is NULL - VOS_STATUS_E_EXISTS - NV type is unsupported - VOS_STATUS_E_FAILURE - unknown error - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_read( VNV_TYPE type, v_VOID_t *outputBuffer, - v_VOID_t *defaultBuffer, v_SIZE_t bufferSize ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_readAtIndex() - read an element of a NV array to an output - buffer - - The \a vos_nv_readAtIndex() reads an element of a NV item to an output - buffer. If the item is not array, this function only works for index of 0. - One would get a VOS_STATUS_E_EXISTS error when reading an invalid item. - - For error conditions of VOS_STATUS_E_EXISTS and VOS_STATUS_E_FAILURE, - if a default buffer is provided (with a non-NULl value), - the default buffer content is copied to the output buffer. - - \param type - NV item type - - \param index - NV array index - - \param outputBuffer - output buffer - - \param defaultBuffer - default buffer - - \param bufferSize - output buffer size - - \return VOS_STATUS_SUCCESS - NV item is read successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAULT - defaultBuffer point is NULL - VOS_STATUS_E_EXISTS - NV type is unsupported - VOS_STATUS_E_FAILURE - unknown error - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readAtIndex( VNV_TYPE type, v_UINT_t index, - v_VOID_t *outputBuffer, v_VOID_t *defaultBuffer, v_SIZE_t bufferSize ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_write() - write to a NV item from an input buffer - - The \a vos_nv_write() writes to a NV item from an input buffer. This would - validate the NV item if the write operation is successful. - - \param type - NV item type - - \param inputBuffer - input buffer - - \param inputBufferSize - input buffer size - - \return VOS_STATUS_SUCCESS - NV item is read successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAULT - outputBuffer pointer is NULL - VOS_STATUS_E_EXISTS - NV type is unsupported - VOS_STATUS_E_FAILURE - unknown error - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_write( VNV_TYPE type, v_VOID_t *inputBuffer, - v_SIZE_t inputBufferSize ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_writeAtIndex() - write to an element of a NV array from an - input buffer - - The \a vos_nv_writeAtIndex() writes to an element of a NV array from an - input buffer. If the item is not an array, this function only works for - an array index of 0. This would automatically validate the NV item if the - write operation is successful. - - \param type - NV item type - - \param index - NV array index - - \param inputBuffer - input buffer - - \param inputBufferSize - input buffer size - - \return VOS_STATUS_SUCCESS - NV item is read successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAULT - outputBuffer pointer is NULL - VOS_STATUS_E_EXISTS - NV type is unsupported - VOS_STATUS_E_FAILURE - unknown error - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_writeAtIndex( VNV_TYPE type, v_UINT_t index, - v_VOID_t *inputBuffer, v_SIZE_t inputBufferSize ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_getElementCount() - return element count of a NV array - - The \a vos_nv_getElementCount() returns element count of a NV array - - \param type - NV item type - - \return count if type is valid; 0 otherwise - - \sa - - -------------------------------------------------------------------------*/ -VOS_INLINE_FN v_SIZE_t vos_nv_getElementCount( VNV_TYPE type ) -{ - switch (type) - { -#define ADD_VNV_ITEM(_name, _cnt, _size, _label) case (_name): return (_cnt); - VNV_ITEM_TABLE -#undef ADD_VNV_ITEM - default: - return 0; - } -} - -/**------------------------------------------------------------------------ - - \brief vos_nv_getElementSize() - return size of a NV element - - The \a vos_nv_getElementSize() returns size of a NV element. - - \param type - NV item type - - \return size if type is valid; 0 otherwise - - \sa - - -------------------------------------------------------------------------*/ -VOS_INLINE_FN v_SIZE_t vos_nv_getElementSize( VNV_TYPE type ) -{ - switch (type) - { -#define ADD_VNV_ITEM(_name, _cnt, _size, _label) case (_name): return (_size); - VNV_ITEM_TABLE -#undef ADD_VNV_ITEM - default: - return 0; - } -} - -/**------------------------------------------------------------------------ - - \brief vos_nv_getItemSize() - return size of a NV item - - The \a vos_nv_getItemSize() returns size of a NV item. - - \param type - NV item type - - \return size of a NV item array if type is valid; 0 otherwise - - \sa - - -------------------------------------------------------------------------*/ -VOS_INLINE_FN v_SIZE_t vos_nv_getItemSize( VNV_TYPE type ) -{ - return vos_nv_getElementCount(type) * vos_nv_getElementSize(type); -} - -// TODO: HAL NV interface should be used to access individual NV items -// instead of below functions once that is ready - -/**------------------------------------------------------------------------ - - \brief vos_nv_readTxAntennaCount() - return number of TX antenna - - \param pTxAntennaCount - antenna count - - \return status of the NV read operation - - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readTxAntennaCount( v_U8_t *pTxAntennaCount ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_readRxAntennaCount() - return number of RX antenna - - \param pRxAntennaCount - antenna count - - \return status of the NV read operation - - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readRxAntennaCount( v_U8_t *pRxAntennaCount ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_readMacAddress() - return the MAC address - - \param pMacAddress - MAC address - - \return status of the NV read operation - - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readMacAddress( v_MAC_ADDRESS_t pMacAddress ); - -/**------------------------------------------------------------------------ - - \brief vos_nv_readMultiMacAddress() - return the Multiple MAC addresses - - \param pMacAddress - MAC address - \param macCount - Count of valid MAC addresses to get from NV field - - \return status of the NV read operation - - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readMultiMacAddress( v_U8_t* pMacAddr, v_U8_t macCount); - -/**------------------------------------------------------------------------ \brief vos_nv_getDefaultRegDomain() - return the default regulatory domain \return default regulatory domain \sa @@ -633,61 +223,6 @@ VOS_STATUS vos_nv_open(void); VOS_STATUS vos_nv_close(void); /**------------------------------------------------------------------------ - \brief vos_nv_getNVBuffer - - \param pBuffer - to return the buffer address - pSize - buffer size. - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getNVBuffer(v_VOID_t **pNvBuffer, v_SIZE_t *pSize); - -/**------------------------------------------------------------------------ - \brief vos_nv_getNVEncodedBuffer - - \param pBuffer - to return the buffer address - pSize - buffer size. - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getNVEncodedBuffer(v_VOID_t **pNvBuffer, v_SIZE_t *pSize); - - -/**------------------------------------------------------------------------ - \brief vos_nv_getNVDictionary - - \param pBuffer - to return the buffer address - pSize - buffer size. - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getNVDictionary(v_VOID_t **pNvBuffer, v_SIZE_t *pSize); - -/**------------------------------------------------------------------------ - \brief vos_nv_isEmbeddedNV() - NV.bin is embedded or not - - \return VOS_STATUS_SUCCESS - if NV is embedded - otherwise - NOT embedded - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_isEmbeddedNV(void); - -/**------------------------------------------------------------------------ - \brief vos_nv_setNVEncodedBuffer() - set Encode Buffer - - \return VOS_STATUS_SUCCESS - if able to set encoded buffer successfully - otherwise - NOT able to set encoded data - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_setNVEncodedBuffer(v_U8_t *pNvBuffer, v_SIZE_t size); - -/**------------------------------------------------------------------------ - \brief vos_nv_get_dictionary_data() - read dictionary data - - \return VOS_STATUS_SUCCESS - if dictionary data is read successfully - otherwise - NOT able to read dictionary data - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_get_dictionary_data(void); - -/**------------------------------------------------------------------------ \brief vos_nv_setRegDomain - \param clientCtxt - Client Context, Not used for PRIMA regId - Regulatory Domain ID @@ -707,11 +242,8 @@ VOS_STATUS vos_nv_setRegDomain(void * clientCtxt, v_REGDOMAIN_t regId, * DFS \sa -------------------------------------------------------------------------*/ +eNVChannelEnabledType vos_nv_getChannelEnabledState(v_U32_t rfChannel); -eNVChannelEnabledType vos_nv_getChannelEnabledState -( - v_U32_t rfChannel -); #define VOS_IS_DFS_CH(channel) (vos_nv_getChannelEnabledState((channel)) == \ NV_CHANNEL_DFS) diff --git a/CORE/VOSS/inc/wlan_hdd_misc.h b/CORE/VOSS/inc/wlan_hdd_misc.h index fd31342453a4..8b94ccfadb82 100644 --- a/CORE/VOSS/inc/wlan_hdd_misc.h +++ b/CORE/VOSS/inc/wlan_hdd_misc.h @@ -29,53 +29,19 @@ #define WLAN_HDD_MISC_H #ifdef MSM_PLATFORM -#ifdef QC_WLAN_CHIPSET_QCA_CLD #define WLAN_INI_FILE "wlan/qca_cld/WCNSS_qcom_cfg.ini" #define WLAN_CFG_FILE "wlan/qca_cld/WCNSS_cfg.dat" -#define WLAN_FW_FILE "" -#define WLAN_NV_FILE "wlan/qca_cld/WCNSS_qcom_wlan_nv.bin" -#define WLAN_DICT_FILE "wlan/qca_cld/WCNSS_qcom_wlan_dictionary.dat" -#define WLAN_COUNTRY_INFO_FILE "wlan/qca_cld/WCNSS_wlan_country_info.dat" -#define WLAN_HO_CFG_FILE "wlan/qca_cld/WCNSS_wlan_ho_config" #define WLAN_MAC_FILE "wlan/qca_cld/wlan_mac.bin" #else -#define WLAN_INI_FILE "wlan/volans/WCN1314_qcom_cfg.ini" -#define WLAN_CFG_FILE "wlan/volans/WCN1314_cfg.dat" -#define WLAN_FW_FILE "wlan/volans/WCN1314_qcom_fw.bin" -#define WLAN_NV_FILE "wlan/volans/WCN1314_qcom_wlan_nv.bin" -#define WLAN_DICT_FILE "" -#define WLAN_COUNTRY_INFO_FILE "wlan/volans/WCN1314_wlan_country_info.dat" -#define WLAN_HO_CFG_FILE "wlan/volans/WCN1314_wlan_ho_config" -#endif // ANI_CHIPSET -#else #define WLAN_INI_FILE "wlan/qcom_cfg.ini" #define WLAN_CFG_FILE "wlan/cfg.dat" -#define WLAN_FW_FILE "wlan/qcom_fw.bin" -#define WLAN_NV_FILE "wlan/qcom_wlan_nv.bin" -#define WLAN_DICT_FILE "" -#define WLAN_COUNTRY_INFO_FILE "wlan/wlan_country_info.dat" -#define WLAN_HO_CFG_FILE "wlan/wlan_ho_config" #define WLAN_MAC_FILE "wlan/wlan_mac.bin" #endif // MSM_PLATFORM - -VOS_STATUS hdd_request_firmware(char *pfileName,v_VOID_t *pCtx,v_VOID_t **ppfw_data, v_SIZE_t *pSize); - -VOS_STATUS hdd_release_firmware(char *pFileName,v_VOID_t *pCtx); - -VOS_STATUS hdd_get_cfg_file_size(v_VOID_t *pCtx, char *pFileName, v_SIZE_t *pBufSize); - -VOS_STATUS hdd_read_cfg_file(v_VOID_t *pCtx, char *pFileName, v_VOID_t *pBuffer, v_SIZE_t *pBufSize); -#if 0 - -VOS_STATUS hdd_release_firmware(char *pFileName,v_VOID_t *pCtx); - VOS_STATUS hdd_get_cfg_file_size(v_VOID_t *pCtx, char *pFileName, v_SIZE_t *pBufSize); VOS_STATUS hdd_read_cfg_file(v_VOID_t *pCtx, char *pFileName, v_VOID_t *pBuffer, v_SIZE_t *pBufSize); -#endif - tVOS_CONCURRENCY_MODE hdd_get_concurrency_mode ( void ); #endif /* WLAN_HDD_MISC_H */ diff --git a/CORE/VOSS/inc/wlan_nv_parser.h b/CORE/VOSS/inc/wlan_nv_parser.h deleted file mode 100644 index af4790a7acbc..000000000000 --- a/CORE/VOSS/inc/wlan_nv_parser.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#if !defined __WLAN_NV_PARSER_H -#define __WLAN_NV_PARSER_H - -#include <vos_status.h> - -VOS_STATUS nvParser(tANI_U8 *pnvEncodedBuf, tANI_U32 nvReadBufSize, sHalNv *); - -#endif diff --git a/CORE/VOSS/inc/wlan_nv_parser_internal.h b/CORE/VOSS/inc/wlan_nv_parser_internal.h deleted file mode 100644 index 00cdf73a6a1c..000000000000 --- a/CORE/VOSS/inc/wlan_nv_parser_internal.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#if !defined _WLAN_NV_PARSER_INTERNAL_H -#define _WLAN_NV_PARSER_INTERNAL_H - -#include "wlan_nv_types.h" - -/* - * local prototypes - */ -static _NV_TEMPLATE_PROCESS_RC processNvTemplate(_NV_STREAM_BUF *pStream, - int len); -static _NV_TEMPLATE_PROCESS_RC processNvTemplateTable(_NV_STREAM_BUF *pStream, - int len); -static int constructATemplateTable(_NV_STREAM_BUF *pStream, int len, - char *tableStrName); -static _NV_TEMPLATE_PROCESS_RC compareWithBuiltinTable(int idxFromBin, - char *tableNameFromBin); -static _NV_TEMPLATE_PROCESS_RC compare2Tables(int idxFromBin, int idxBuiltin); -static _NV_TEMPLATE_PROCESS_RC compare2FieldsAndCopyFromBin( - _NV_TEMPLATE_TABLE *pTableBuiltin, _NV_TEMPLATE_TABLE *pTableFromBin, - int idxBuiltin, int idxFromBin); -static _NV_TEMPLATE_PROCESS_RC compare2FieldIDType( - _NV_TEMPLATE_TABLE *pTableBuiltIn, _NV_TEMPLATE_TABLE *pTableFromBin, - int idxBuiltin, int idxFromBin); -static _NV_TEMPLATE_PROCESS_RC compare2FieldStorageTypeAndSizes( - _NV_TEMPLATE_TABLE *pTableBuiltIn, _NV_TEMPLATE_TABLE *pTableFromBin, - int idxBuiltin, int idxFromBin); -static _NV_TEMPLATE_PROCESS_RC compare2StorageSize(int idxBuiltIn, - int idxFromBin, int sizeBuiltIn, int sizeFromBin, - tANI_U8 sizeBuiltInLowByte, tANI_U8 sizeFromBinLowByte); -static _NV_TEMPLATE_PROCESS_RC processNvTemplateEnum(_NV_STREAM_BUF *pStream, - int len); -static void compareEnumWithBuiltin(char *enumStr, int enumIdxFromBin); -static _NV_TEMPLATE_PROCESS_RC compare2EnumEntriesAndCopy(int idxFromBin, - int idxBuiltin); -static int constructATemplateEnum(_NV_STREAM_BUF *pStream, int len, - char *enumStr); -static void processNvData(_NV_STREAM_BUF *pStream, int len); -static int numElemSingular(_NV_TEMPLATE_TABLE *pTableEntry,int); -static int numElemArray1(_NV_TEMPLATE_TABLE *pTableEntry,int); -static int numElemArray2(_NV_TEMPLATE_TABLE *pTableEntry,int); -static int numElemArray3(_NV_TEMPLATE_TABLE *pTableEntry,int); -static void parseSubDataTable4Size(int tableIdx, int numElem); -static void getBasicDataSize(_NV_TEMPLATE_TABLE *pTableEntry); -static int getNumElemOutOfStorageSize(int fieldStorageSize, - tANI_U8 fieldStorageSizeLowByte,int); - -static int getFieldCount(int tableIdx, int fieldIdi, int numElem, - int nvBin); -static void parseDataTable_new(_NV_STREAM_BUF *pStream, int* pos, - int tableIdx, int addOffset, int tableBaseOffset); -static int getBuiltInFieldCount (int tblIdBin, char *tableNameFromBin, - int *tblIdBuiltIn, int *fieldIdBuitIn, int *numElem); -static void parseSubDataTableAndCopy(int tableIdx, int numElem, int numElem2, - int numElem3, int fieldId, _NV_STREAM_BUF *pStream, int* pos, - int addOffset, int tableBaseOffset, int localAddOffset); - -/* - * typedef's - */ - -typedef int (*pF_NumElemBasedOnStorageType)(_NV_TEMPLATE_TABLE *pTableEntry, - int nvBin); - -#endif diff --git a/CORE/VOSS/inc/wlan_nv_stream.h b/CORE/VOSS/inc/wlan_nv_stream.h deleted file mode 100644 index 72947e656d43..000000000000 --- a/CORE/VOSS/inc/wlan_nv_stream.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#if !defined _WLAN_NV_STREAM_H -#define _WLAN_NV_STREAM_H - -#include "wlan_nv_types.h" - -typedef tANI_U8 _NV_STREAM_BUF; - -typedef struct { - _NV_STREAM_BUF *dataBuf; - tANI_U32 currentIndex; - tANI_U32 totalLength; -}_STREAM_BUF; - -extern _STREAM_BUF streamBuf; - -typedef enum { - RC_FAIL, - RC_SUCCESS, -} _STREAM_RC; - -typedef enum { - STREAM_READ, - STREAM_WRITE, -} _STREAM_OPERATION; - -_STREAM_RC nextStream (tANI_U32 *length, tANI_U8 *dataBuf); -_STREAM_RC initReadStream ( tANI_U8 *readBuf, tANI_U32 length); - -#endif diff --git a/CORE/VOSS/inc/wlan_nv_template_api.h b/CORE/VOSS/inc/wlan_nv_template_api.h deleted file mode 100644 index 7cb465f73a67..000000000000 --- a/CORE/VOSS/inc/wlan_nv_template_api.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#if !defined _WLAN_NV_TEMPLATE_API_H -#define _WLAN_NV_TEMPLATE_API_H - -#include "wlan_nv_types.h" - -/* -* API Prototypes -* These are meant to be exposed to outside applications -*/ -//extern void writeNvData(void); -//extern VOS_STATUS nvParser(tANI_U8 *pnvEncodedBuf, tANI_U32 nvReadBufSize, sHalNv *); - -/* -* Parsing control bitmap -*/ -#define _ABORT_WHEN_MISMATCH_MASK 0x00000001 /*set: abort when mismatch, clear: continue taking matched entries*/ -#define _IGNORE_THE_APPENDED_MASK 0x00000002 /*set: ignore, clear: take*/ - -#define _FLAG_AND_ABORT(b) (((b) & _ABORT_WHEN_MISMATCH_MASK) ? 1 : 0) - -#endif /*#if !defined(_WLAN_NV_TEMPLATE_API_H) */ diff --git a/CORE/VOSS/inc/wlan_nv_template_builtin.h b/CORE/VOSS/inc/wlan_nv_template_builtin.h deleted file mode 100644 index b265cffc8ec8..000000000000 --- a/CORE/VOSS/inc/wlan_nv_template_builtin.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - - -#if !defined _WLAN_NV_TEMPLATE_BUILTIN_H -#define _WLAN_NV_TEMPLATE_BUILTIN_H - - -/*=========================================================================== - EDIT HISTORY FOR FILE - - This section contains comments describing changes made to the module. - Notice that changes are listed in reverse chronological order. - - $Header:$ $DateTime: $ $Author: $ - - when who what, where, why - -------- --- ----------------------------------------------- - 04/10/13 kumarpra nv built in creation -===========================================================================*/ - - -/* - ----------------------------------------- - This file is generated by nvTmplRun Parser - ----------------------------------------- - To be auto-generated, or - This is the source file and the header file can be generated from this - template file. - - Template constructs - 1. TABLE_: struct - 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M} - 3. INDEX_INT: int, e.g.{min, max, increment} - 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32 - 4. Storage types: - 4.1 SINGULAR: one element of basic data type - 4.2 ARRAY_1: one dimensional array, x-axis - 4.3 ARRAY_2: two dimensional array, (x, y) - 4.4 ARRAY_3: three dimensional array, (x, y, z) - 4.5 ARRAY_4: four dimensional array, (x, y, z, t) - - Implementation notes - 1. Flow of changing NV data format: (TBD) Either change the template and - generate the header file, or modify header file and auto-generate - the template. - 2. Flow of writing NV data: encode the template in the data stream, so the - NV data is "self-sufficient". No separate template, no compability - issue, no need of version control. - 3. Flow of reading NV data: parse the binary NV data stream based on the - template info in the data stream. - 4. The above NV logic is decoupled from the actual data content, a generic, - content ergonostic parser (reading) and encoder (writing). - The NV logic is common code shared by tools, s/w - (both host and firmware), and off-line utilities. - 5. NV data parsing and "acceptanace" into an s/w moduel data structure can - be "configured" in several ways: - 5.1 only total matching of all fields, otherwise, reject the whole data - stream (a table). - 5.2 partial matching of fields allowed and the rest fields assume - reasonal default values, - The choice can be determined later, but the capability is provided. - 6. We could also design in this selection on an individua table base. - To design such capability, reserve some header bits in the data stream. - 7. The NV data streams can be modified, replaced, or intact with a new data - stream of the same table ID added to NV data. - The choice can be determined later, but the NV scheme provides such - capability. - 8. The template construct definitions can be common to all tables - (tbd: in a common section) or table specific, or updated in a - subsequent format section. - The use cases are: - - An index enum (e.g. RF channels) is common to all tables when the NV - data is created. Later new enums are added (e.g. - additional channels), one can choose to add the new index enum for new - tables appended to the NV data, or replace the - old table with new template info and data. - The template precedence is table specific then common, and later - "common" overwrites "earlier" commmon. - - A new field is added to the table, the user decides to replace the - old table data, he can simply encode the template info in the - data stream. - - In the same scenario (a new field is added), the user decides to - append a new table, he can encode the template - in the new data table and append it to NV data, or write a new common - template section and append the data. - - Key "ingredients", (re-iterate the most important features and capabilities) - 1. How to parse the data is embedded in the NV data itself. It removes the - dependency on header file matching, - version checking, compatibility among tools, host and firmware. - 2. Table field ID enables "partial" data acceptance in an s/w module data - structure. Whether full matching or reject the whole table, or "partial" - acceptance, the capabiilty is in place and further ensures the robust - NV data extensibility and compatibility. - 3. The table granularity, data stream based NV data has variable length - and flexibility of modifying an existing table data, replacing the - whole data, or leaving the existing data table intact and appending - a new table. - Misc notes: - 1. For endianness, support only 4 bytes integer or 4 1-byte - 2. String identifier needs to be shortened to save storage - 3. string_field_name, field type, field storage class, storage size -*/ - - -#include "wlan_nv_types.h" - -typedef enum _nvFieldSizeEnums { - INDEX_ENUM_ALL = 0, - INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS, - INDEX_ENUM_NUM_REG_DOMAINS, - INDEX_ENUM_NUM_RF_SUBBANDS, - INDEX_ENUM_NUM_RF_CHANNELS, - INDEX_ENUM_NUM_2_4GHZ_CHANNELS, - INDEX_ENUM_NUM_802_11_MODES, - INDEX_ENUM_NUM_HAL_PHY_RATES, - INDEX_ENUM_BUILTIN_LAST, - INDEX_ENUM_BUILTIN_MAX, -} _NV_FIELD_SIZE_ENUMS; - -#define INDEX_ENUM_MAX MAX(INDEX_ENUM_PREDEFINED_MAX, INDEX_ENUM_BUILTIN_MAX) - -int getEnumNoOfFields(int enumIdx); -extern _NV_TEMPLATE_ENUM NvEnumsBuiltIn[/*INDEX_ENUM_MAX*/][ENUM_ENTRIES_MAX]; - -typedef enum _nvTableIDs { - TABLE_sHalNv, - TABLE_sNvFields, - TABLE_sRegulatoryChannel, - TABLE_sRssiChannelOffsets, - TABLE_sCalData, - TABLE_sTxBbFilterMode, - TABLE_sOfdmCmdPwrOffset, - TABLE_sDefaultCountry, - TABLE_sFwConfig, - TABLE_tTpcPowerTable, - TABLE_tRateGroupPwr, - TABLE_tRateGroupPwrVR, - TABLE_sRegulatoryDomains, - TABLE_sHwCalValues, - TABLE_sNvTables, - TABLE_BUILTIN_LAST, - TABLE_BUILTIN_MAX, -} _NV_TABLE_ID; - -#define TABLES_MAX MAX(TABLE_PREDEFINED_MAX, TABLE_BUILTIN_MAX) - -int getTableNoOfFields(int tblIdx); -extern _NV_TEMPLATE_TABLE NvTablesBuiltIn[/*TABLES_MAX*/][TABLE_ENTRIES_MAX]; - -#endif //#if !defined(_WLAN_NV_TEMPLATEBUILTIN_H) diff --git a/CORE/VOSS/inc/wlan_nv_template_internal.h b/CORE/VOSS/inc/wlan_nv_template_internal.h deleted file mode 100644 index 72fbdd38ced1..000000000000 --- a/CORE/VOSS/inc/wlan_nv_template_internal.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#if !defined _WLAN_NV_TEMPLATE_INTERNAL_H -#define _WLAN_NV_TEMPLATE_INTERNAL_H - -/* - Template constructs - 1. TABLE_: struct - 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M} - 3. INDEX_INT: int, e.g.{min, max, increment} - 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32 - 4. Storage types: - 4.1 SINGULAR: one element of basic data type - 4.2 ARRAY_1: one dimensional array, x-axis - 4.3 ARRAY_2: two dimensional array, (x, y) - 4.4 ARRAY_3: three dimensional array, (x, y, z) - - Implementation notes - 1. Flow of changing NV data format: (TBD) Either change the template and - generate the header file, or - modify header file and auto-generate the template. - 2. Flow of writing NV data: encode the template in the data stream, so the - NV data is "self-sufficient". - No separate template, no compability issue, no need of version control. - 3. Flow of reading NV data: parse the binary NV data stream based on the - template info in the data stream. - 4. The above NV logic is decoupled from the actual data content, a - generic, content ergonostic parser (reading) and encoder (writing). - The NV logic is common code shared by tools, s/w - (both host and firmware), and off-line utilities. - 5. NV data parsing and "acceptanace" into an s/w moduel data structure can - be "configured" in several ways: - 5.1 only total matching of all fields, otherwise, reject the whole data - stream (a table). - 5.2 partial matching of fields allowed and the rest fields assume - reasonal default values, - The choice can be determined later, but the capability is provided. - 6. We could also design in this selection on an individua table base. - To design such capability, reserve some header bits in the data stream. - 7. The NV data streams can be modified, replaced, or intact with a new - data stream of the same table ID added to NV data. - The choice can be determined later, but the NV scheme provides such - capability. - 8. The template construct definitions can be common to all tables - (tbd: in a common section) or table specific, or updated - in a subsequent format section. - The use cases are: - - An index enum (e.g. RF channels) is common to all tables when the NV - data is created. Later new enums are added (e.g. - additional channels), one can choose to add the new index enum for new - tables appended to the NV data, or replace the - old table with new template info and data. - The template precedence is table specific then common, and later - "common" overwrites "earlier" commmon. - - A new field is added to the table, the user decides to replace the old - table data, he can simply encode the template - info in the data stream. - - In the same scenario (a new field is added), the user decides to - append a new table, he can encode the template - in the new data table and append it to NV data, or write a new common - template section and append the data. - - Key "ingredients", (re-iterate the most important features and capabilities) - 1. How to parse the data is embedded in the NV data itself. It removes the - dependency on header file matching, - version checking, compatibility among tools, host and firmware. - 2. Table field ID enables "partial" data acceptance in an s/w module data - structure. Whether full matching or reject the whole table, or "partial" - acceptance, the capabiilty is in place and further ensures the robust - NV data extensibility and compatibility. - 3. The table granularity, data stream based NV data has variable length - and flexibility of modifying an existing table data, replacing - the whole data,or leaving the existing data table intact and - appending a new table. - Misc notes: - 1. For endianness, support only 4 bytes integer or 4 1-byte - 2. String identifier needs to be shortened to save storage - 3. string_field_name, field type, field storage class, storage size -*/ - -#include "wlan_nv_types.h" - -/* - * Stream header bitmap - * streamType - * bitmap[7] - * / \ - * 1: template 0: data - * bitmap[6] - * / \ - * 0: enum 1: table - * - */ -/* Stream header type[7], 0: data, 1: template */ -#define STREAM_HEADER_TYPE_MASK 0x80 -#define STREAM_HEADER_TYPE_LSB 7 -#define IsStreamTemplate(b) (((b) & (STREAM_HEADER_TYPE_MASK)) ? 1 : 0) - -/* Stream header template type [6], 0: enum; 1: table */ -#define STREAM_HEADER_TEMPLATE_TYPE_MASK 0x40 -#define STREAM_HEADER_TEMPLATE_TYPE_LSB 6 -#define IsTemplateStreamTable(b) (((b) & (STREAM_HEADER_TEMPLATE_TYPE_MASK)) ? 1 : 0) - -/* - * Field identifier bitmap - * - * field identifier - * bitmap[7] - * / \ - * 0: table/enum 1: basic data type - * bitmap[6:0] bitmap[6:0] - * | | - * tableIdx/ data types (U8, U32, etc.) - * enumIdx - */ -/* Field Identifier type [7] - * 0: table - * 1: basic data types - * Note that - * - bit[7] table value=0 makes the table ID following data header stream or - * template header stream identical to field ID - * - tableIdx 0 is the "table of all tables", a.k.a. table content of all - * table indexes - * - enumIdx 0 is the "enum of all enums", a.k.a. table content of all enum - * indexes - */ - -#define FIELD_ID_TYPE_MASK 0x80 -#define FIELD_ID_TYPE_LSB 7 -#define IsFieldTypeBasicData(b) (((b) & (FIELD_ID_TYPE_MASK)) ? 1 : 0) - -/* Field Identifier table index [6:0] */ -#define FIELD_ID_TABLE_OR_ENUM_IDX_MASK 0x7f -#define FIELD_ID_TABLE_OR_ENUM_IDX_LSB 0 -#define _TABLE_IDX(b) (((b) & ~FIELD_ID_TYPE_MASK) | ((b) & FIELD_ID_TABLE_OR_ENUM_IDX_MASK)) -#define IsIdxTableOfAllTables(b) (((b) & FIELD_ID_TABLE_OR_ENUM_IDX_MASK) ? 0 : 1) -#define IsIdxEnumOfAllEnums(b) (((b) & FIELD_ID_TABLE_OR_ENUM_IDX_MASK) ? 0 : 1) - -/* Field Identifier basic data types [6:0] - * 0: U8 - * 1: U32 - * 2: S8 - * 3: S32 - * 4: U16 - * 5: S16 - */ - -#define FIELD_ID_BASIC_DATA_TYPES_MASK 0x7F -#define FIELD_ID_BASIC_DATA_TYPES_LSB 0 - -typedef enum { - _FIELD_ID_DATA_TYPE_U8 = 0, - _FIELD_ID_DATA_TYPE_U32, - _FIELD_ID_DATA_TYPE_S8, - _FIELD_ID_DATA_TYPE_S32, - _FIELD_ID_DATA_TYPE_U16, - _FIELD_ID_DATA_TYPE_S16, - _FIELD_ID_DATA_TYPE_LAST, -} _FIELD_ID_BASIC_DATA_TYPE; - -#define TheBasicDataType(b) (((b) & (FIELD_ID_BASIC_DATA_TYPES_MASK)) >> FIELD_ID_BASIC_DATA_TYPES_LSB) -#define _ID_U8 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_U8)) -#define _ID_U32 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_U32)) -#define _ID_S8 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_S8)) -#define _ID_S32 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_S32)) -#define _ID_U16 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_U16)) -#define _ID_S16 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_S16)) - -/* - * field storage class - */ -typedef enum { - SINGULAR = 0, - ARRAY_1, - ARRAY_2, - ARRAY_3, - STORAGE_TYPE_LAST, -} _FIELD_ID_STORAGE_TYPE; - -#define _STORAGE_TYPE(b) ((b) & 0x3) -#define _STORAGE_SIZE1(byteLow, byteHigh) (((((byteHigh) >> 2) & 0x3) << 7) | (((byteLow) >> FIELD_SIZE_VALUE_LSB) & FIELD_SIZE_VALUE_MASK)) -#define _STORAGE_SIZE2(byteLow, byteHigh) (((((byteHigh) >> 4) & 0x3) << 7) | (((byteLow) >> FIELD_SIZE_VALUE_LSB) & FIELD_SIZE_VALUE_MASK)) -#define _STORAGE_SIZE3(byteLow, byteHigh) (((((byteHigh) >> 6) & 0x3) << 7) | (((byteLow) >> FIELD_SIZE_VALUE_LSB) & FIELD_SIZE_VALUE_MASK)) - -#define _ADD_SIZE1(b) ((((b) >> 7) & 0x3) << 2) -#define _ADD_SIZE2(b) ((((b) >> 7) & 0x3) << 4) -#define _ADD_SIZE3(b) ((((b) >> 7) & 0x3) << 6) - -/* - * Field storage size type [7] - * / \ - * 1: int 0: enum - * bitmap[6:0] bitmap[6:0] - * | | - * max int index enum index into enum tables - * - * Note that enum=0 makes the template enum ID following template stream byte - * identical to enum field storage size type - * - * Field storage size value [6:0] - */ -#define FIELD_SIZE_TYPE_MASK 0x80 -#define FIELD_SIZE_TYPE_LSB 7 -#define FIELD_SIZE_TYPE_BIT(t) (((t)<< (FIELD_SIZE_TYPE_LSB)) & (FIELD_SIZE_TYPE_MASK)) -#define IsFieldSizeInt(b) (((b) & (FIELD_SIZE_TYPE_MASK)) ? 1 : 0) - -typedef enum { - FIELD_SIZE_IDX_ENUM = 0, - FIELD_SIZE_IDX_INT = 1, -} FIELD_SIZE_TYPE; - -#define FIELD_SIZE_VALUE_MASK 0x7f -#define FIELD_SIZE_VALUE_LSB 0 -#define FIELD_SIZE_VALUE_BITS(val) (((val) << (FIELD_SIZE_VALUE_LSB)) & (FIELD_SIZE_VALUE_MASK)) - -/* - * NV table storage struct in an s/w module - */ -#define _TABLE_NAME_LEN 2 -#define _TABLE_FIELD_FULL_NAME_LEN 47 - -typedef struct _nvTemplateTableStructInternal { - tANI_U8 fieldName[_TABLE_NAME_LEN + 1]; - tANI_U8 fieldId; - tANI_U8 fieldStorageType; - tANI_U8 fieldStorageSize1; - tANI_U8 fieldStorageSize2; - tANI_U8 fieldStorageSize3; - tANI_U32 offset; //void *offset; - tANI_U8 fieldFullName[_TABLE_FIELD_FULL_NAME_LEN +1]; -} _NV_TEMPLATE_TABLE; - -#define _OFFSET_NOT_SET 0xFFFFFFFF -#define TABLE_PREDEFINED_MAX 50 -#define TABLE_ENTRIES_MAX 50 -#define _LIST_OF_TABLES_IDX 0 -#define _TABLE_FIELDS_POS 2 -#define _ENUM_START_POS 2 -#define _TABLE_FIELD_MIN_LEN 4 -#define _ENUM_MIN_LEN 3 - -#define _ENUM_NAME_LEN _TABLE_NAME_LEN -#define _ENUM_FULL_NAME_LEN 47 -typedef struct _nvTemplateEnumStruct { - tANI_U8 enumName[3]; // 2 char string - tANI_U8 enumValue; - tANI_U8 enumValuePeer; - tANI_U8 enumFullName[_ENUM_FULL_NAME_LEN +1]; -} _NV_TEMPLATE_ENUM; -#define INDEX_ENUM_PREDEFINED_MAX 20 -#define ENUM_ENTRIES_MAX 200 - -typedef enum { - _MIS_MATCH = 0, - _MATCH, -} _NV_TEMPLATE_PROCESS_RC; - -#define _NV_BIN_STREAM_HEADER_BYTE 0 -#define _NV_BIN_STREAM_TABLE_ID_BYTE 1 -#define _NV_BIN_STREAM_ENUM_ID_BYTE 1 -#define _NV_BIN_DATA_STREAM_TABLEID_BYTE 1 -#define _NV_BIN_ENUM_TEMPLATE_ENTRY_SIZE 3 -#define _NV_LIST_OF_TABLE_ID 0 - -/* - * Stream write - */ -#define _STREAM_HEADER_POS 0 -#define _ENUM_STREAM_HEADER_POS _STREAM_HEADER_POS -#define _TABLE_STREAM_HEADER_POS _STREAM_HEADER_POS -#define _TEMPLATE_INDEX_HEADER_POS 1 -#define _ENUM_INDEX_HEADER_POS _TEMPLATE_INDEX_HEADER_POS -#define _TABLE_INDEX_HEADER_POS _TEMPLATE_INDEX_HEADER_POS - -/* - * Additional typedef - */ -typedef struct _enumMetaData { - _NV_TEMPLATE_PROCESS_RC match; -} _ENUM_META_DATA; - -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define _NV_STREAM_LEN_MAX 35000 - -/* - * Error code should be expanded, this is the beginning set - */ -typedef enum { - _OK = 0, - _RESET_STREAM_FAILED, - _WRITE_STREAM_FAILED, - _STREAM_NOT_FIT_BUF, - _SW_BIN_MISMATCH, - _INSUFFICIENT_FOR_FIELD_PARSER_ERROR, - _TABLE_NON_EXIST_IN_TABLE_OF_ALL_TABLES, - _ENUM_NOT_FOUND_IN_BUILT_IN, -} _ErrorCode; - -/* - * Use the stream test stub - */ -//#define _USE_STREAM_STUB -#define RESET_STREAM(b) resetStream(b) -#define NEXT_STREAM(b,c) nextStream(b,c) - -#endif /*#if !defined(_WLAN_NV_TEMPLATE_INTERNAL_H)*/ diff --git a/CORE/VOSS/inc/wlan_nv_types.h b/CORE/VOSS/inc/wlan_nv_types.h deleted file mode 100644 index d648c60fa2cf..000000000000 --- a/CORE/VOSS/inc/wlan_nv_types.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -#if !defined __WLAN_NV_TYPES_H -#define __WLAN_NV_TYPES_H - -#include "halLegacyPalTypes.h" -#include "halCompiler.h" -#include "vos_status.h" -#include <linux/string.h> - -typedef char tANI_BOOL; - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define nul '\0' - -#endif diff --git a/CORE/VOSS/src/vos_getBin.c b/CORE/VOSS/src/vos_getBin.c index f9a21c09ef8e..3c90b19f020c 100644 --- a/CORE/VOSS/src/vos_getBin.c +++ b/CORE/VOSS/src/vos_getBin.c @@ -86,15 +86,6 @@ VOS_STATUS vos_get_binary_blob( VOS_BINARY_ID binaryId, case VOS_BINARY_ID_CONFIG: pFileName = WLAN_CFG_FILE; break; - case VOS_BINARY_ID_COUNTRY_INFO: - pFileName = WLAN_COUNTRY_INFO_FILE; - break; - case VOS_BINARY_ID_HO_CONFIG: - pFileName = WLAN_HO_CFG_FILE; - break; - case VOS_BINARY_ID_DICT_CONFIG: - pFileName = WLAN_DICT_FILE; - break; default: VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "Invalid binaryID"); return VosSts; diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c index 0575dcc64878..fac5f4a0993a 100644 --- a/CORE/VOSS/src/vos_nvitem.c +++ b/CORE/VOSS/src/vos_nvitem.c @@ -48,7 +48,6 @@ #include "wlan_hdd_misc.h" #include "vos_sched.h" #include "sme_Api.h" -#include "wlan_nv_parser.h" #include "wlan_hdd_main.h" #include <net/cfg80211.h> #include "regdomain.h" @@ -86,14 +85,7 @@ static v_BOOL_t crda_regulatory_run_time_entry_valid = VOS_FALSE; /*---------------------------------------------------------------------------- * Preprocessor Definitions and Constants * -------------------------------------------------------------------------*/ -#define VALIDITY_BITMAP_NV_ID NV_WLAN_VALIDITY_BITMAP_I -#define VALIDITY_BITMAP_SIZE 32 #define MAX_COUNTRY_COUNT 300 -//To be removed when NV support is fully functional -#define VOS_HARD_CODED_MAC {0, 0x0a, 0xf5, 4, 5, 6} - -#define DEFAULT_NV_VALIDITY_BITMAP 0xFFFFFFFF -#define MAGIC_NUMBER 0xCAFEBABE /* * This is a set of common rules used by our world regulatory domains. @@ -633,18 +625,10 @@ static CountryInfoTable_t countryInfoTable = typedef struct nvEFSTable_s { - v_U32_t nvValidityBitmap; sHalNv halnv; } nvEFSTable_t; -nvEFSTable_t *gnvEFSTable; -/* EFS Table to send the NV structure to HAL*/ + static nvEFSTable_t *pnvEFSTable; -static v_U8_t *pnvEncodedBuf; -static v_U8_t *pDictFile; -static v_U8_t *pEncodedBuf; -static v_SIZE_t nvReadEncodeBufSize; -static v_SIZE_t nDictionarySize; -static v_U32_t magicNumber; const tRfChannelProps rfChannels[NUM_RF_CHANNELS] = { @@ -736,84 +720,6 @@ extern const sHalNv nvDefaults; const sRegulatoryChannel * regChannels = nvDefaults.tables.regDomains[0].channels; -/*---------------------------------------------------------------------------- - Function Definitions and Documentation - * -------------------------------------------------------------------------*/ -VOS_STATUS wlan_write_to_efs (v_U8_t *pData, v_U16_t data_len) -{ - return VOS_STATUS_SUCCESS; -} -/**------------------------------------------------------------------------ - \brief vos_nv_init() - initialize the NV module - The \a vos_nv_init() initializes the NV module. This read the binary - file for country code and regulatory domain information. - \return VOS_STATUS_SUCCESS - module is initialized successfully - otherwise - module is not initialized - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_init(void) -{ - return VOS_STATUS_SUCCESS; -} - -/**------------------------------------------------------------------------ - \brief vos_nv_get_dictionary_data() - get the dictionary data required for - \ tools - \return VOS_STATUS_SUCCESS - dictionary data is read successfully - otherwise - not successful - \sa --------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_get_dictionary_data(void) -{ - VOS_STATUS vosStatus = VOS_STATUS_E_FAILURE; - - if (MAGIC_NUMBER != magicNumber) - { - return VOS_STATUS_SUCCESS; - } - - nDictionarySize = 0; - - vosStatus = vos_get_binary_blob( VOS_BINARY_ID_DICT_CONFIG, NULL, - &nDictionarySize ); - if (VOS_STATUS_E_NOMEM != vosStatus) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "Error obtaining binary size" ); -/// NOTE: -/// We can still work without a dictionary file.. - return VOS_STATUS_SUCCESS; - } - - // malloc a buffer to read in the Configuration binary file. - pDictFile = vos_mem_malloc( nDictionarySize ); - if (NULL == pDictFile) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "Unable to allocate memory for the CFG binary [size= %d bytes]", - nDictionarySize ); - vosStatus = VOS_STATUS_E_NOMEM; - goto fail; - } - - /* Get the entire CFG file image... */ - vosStatus = vos_get_binary_blob( VOS_BINARY_ID_DICT_CONFIG, pDictFile, - &nDictionarySize ); - if (!VOS_IS_STATUS_SUCCESS( vosStatus )) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "Error: Cannot retrieve CFG file image from vOSS. [size= %d bytes]", - nDictionarySize ); - return VOS_STATUS_SUCCESS; - } - - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH, - "Dict file image from vOSS. [size= %d bytes]", nDictionarySize ); - -fail: - return vosStatus; -} - static inline bool is_wwr_sku(u16 regd) { return ((regd & COUNTRY_ERD_FLAG) != COUNTRY_ERD_FLAG) && @@ -1118,395 +1024,25 @@ static void vos_update_reg_info(hdd_context_t *pHddCtx) VOS_STATUS vos_nv_open(void) { - VOS_STATUS status = VOS_STATUS_SUCCESS; - v_CONTEXT_t pVosContext= NULL; - v_SIZE_t bufSize; - v_SIZE_t nvReadBufSize; - v_BOOL_t itemIsValid = VOS_FALSE; - v_U32_t dataOffset; - sHalNv *pnvData = NULL; - hdd_context_t *pHddCtx = NULL; - - /*Get the global context */ - pVosContext = vos_get_global_context(VOS_MODULE_ID_SYS, NULL); - - if (NULL == pVosContext) - { - return (eHAL_STATUS_FAILURE); - } - - bufSize = sizeof(nvEFSTable_t); - status = hdd_request_firmware(WLAN_NV_FILE, - ((VosContextType*)(pVosContext))->pHDDContext, - (v_VOID_t**)&pnvEncodedBuf, &nvReadBufSize); - - if ((!VOS_IS_STATUS_SUCCESS( status )) || (!pnvEncodedBuf)) - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, - "%s: unable to download NV file %s", - __func__, WLAN_NV_FILE); - return VOS_STATUS_E_RESOURCES; - } - - memcpy(&magicNumber, &pnvEncodedBuf[sizeof(v_U32_t)], sizeof(v_U32_t)); - - /// Allocate buffer with maximum length.. - pEncodedBuf = (v_U8_t *)vos_mem_malloc(nvReadBufSize); - - if (NULL == pEncodedBuf) + /* Allocate memory to global NV table */ + pnvEFSTable = (nvEFSTable_t *)vos_mem_malloc(sizeof(nvEFSTable_t)); + if ( NULL == pnvEFSTable ) { VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s : failed to allocate memory for NV", __func__); + "%s : failed to allocate memory for NV", __func__); return VOS_STATUS_E_NOMEM; } - gnvEFSTable = (nvEFSTable_t*)pnvEncodedBuf; - - if (MAGIC_NUMBER == magicNumber) - { - pnvData = (sHalNv *)vos_mem_malloc(sizeof(sHalNv)); - - if (NULL == pnvData) - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s : failed to allocate memory for NV", __func__); - return VOS_STATUS_E_NOMEM; - } - - memset(pnvData, 0, sizeof(sHalNv)); - - /// Data starts from offset of validity bit map + magic number.. - dataOffset = sizeof(v_U32_t) + sizeof(v_U32_t); - - status = nvParser(&pnvEncodedBuf[dataOffset], - (nvReadBufSize-dataOffset), pnvData); - - ///ignore validity bit map - nvReadEncodeBufSize = nvReadBufSize - sizeof(v_U32_t); - - vos_mem_copy(pEncodedBuf, &pnvEncodedBuf[sizeof(v_U32_t)], - nvReadEncodeBufSize); - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "readEncodeBufSize %d",nvReadEncodeBufSize); - - if (VOS_STATUS_SUCCESS == status) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "Embedded NV parsed success !!productId %d couple Type %d wlan RevId %d", - pnvData->fields.productId, - pnvData->fields.couplerType, - pnvData->fields.wlanNvRevId); - - vos_mem_copy(&gnvEFSTable->halnv, pnvData, sizeof(sHalNv)); - - nvReadBufSize = sizeof(sHalNv) + sizeof(v_U32_t); - } - else - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "nvParser failed %d",status); - - if (nvReadBufSize != sizeof(sHalNv)) { - vos_mem_free(pEncodedBuf); - pEncodedBuf = (v_U8_t *)vos_mem_malloc(sizeof(sHalNv)); - - if (!pEncodedBuf) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s : failed to allocate memory for NV", __func__); - vos_mem_free(pnvData); - return VOS_STATUS_E_NOMEM; - } - } - - nvReadBufSize = 0; - - vos_mem_copy(pEncodedBuf, &nvDefaults, sizeof(sHalNv)); - - nvReadEncodeBufSize = sizeof(sHalNv); - } - } - else - { - dataOffset = sizeof(v_U32_t); - nvReadEncodeBufSize = sizeof(sHalNv); - if (nvReadBufSize != nvReadEncodeBufSize) { - vos_mem_free(pEncodedBuf); - pEncodedBuf = (v_U8_t *)vos_mem_malloc(nvReadEncodeBufSize); - if (!pEncodedBuf) - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s : failed to allocate memory for NV", __func__); - return VOS_STATUS_E_NOMEM; - } - } - - memcpy(pEncodedBuf, &pnvEncodedBuf[dataOffset], nvReadEncodeBufSize); - } - - if (NULL != pnvData) - { - vos_mem_free(pnvData); - } - -#ifdef CONFIG_QCA_WIFI_ISOC - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "INFO: NV binary file version=%d Driver default NV version=%d, continue...", - gnvEFSTable->halnv.fields.nvVersion, WLAN_NV_VERSION); -#endif - - /* Copying the read nv data to the globa NV EFS table */ - { - /* Allocate memory to global NV table */ - pnvEFSTable = (nvEFSTable_t *)vos_mem_malloc(sizeof(nvEFSTable_t)); - if ( NULL == pnvEFSTable ) - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s : failed to allocate memory for NV", __func__); - return VOS_STATUS_E_NOMEM; - } - - /*Copying the NV defaults */ - vos_mem_copy(&(pnvEFSTable->halnv), &nvDefaults, sizeof(sHalNv)); - - /* Size mismatch */ - if ( nvReadBufSize != bufSize) - { - pnvEFSTable->nvValidityBitmap = DEFAULT_NV_VALIDITY_BITMAP; -#ifdef CONFIG_QCA_WIFI_ISOC - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL, - "!!!WARNING: INVALID NV FILE, DRIVER IS USING DEFAULT CAL VALUES %d %d!!!", - nvReadBufSize, bufSize); -#endif - return VOS_STATUS_SUCCESS; - } - - /* Version mismatch */ - if (gnvEFSTable->halnv.fields.nvVersion != WLAN_NV_VERSION) - { - if ((WLAN_NV_VERSION == NV_VERSION_11N_11AC_FW_CONFIG) && - (gnvEFSTable->halnv.fields.nvVersion == NV_VERSION_11N_11AC_COUPER_TYPE)) - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "!!!WARNING: Using Coupler Type field instead of Fw Config table,\n" - "Make sure that this is intended or may impact performance!!!"); - } - else - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "!!!WARNING: NV binary file version doesn't match with Driver default NV version\n" - "Driver NV defaults will be used, may impact performance!!!"); - - return VOS_STATUS_SUCCESS; - } - } - - pnvEFSTable->nvValidityBitmap = gnvEFSTable->nvValidityBitmap; - /* Copy the valid fields to the NV Global structure */ - if (vos_nv_getValidity(VNV_FIELD_IMAGE, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) { - - if(vos_nv_read( VNV_FIELD_IMAGE, (v_VOID_t *)&pnvEFSTable->halnv.fields, - NULL, sizeof(sNvFields) ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_RATE_TO_POWER_TABLE, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_RATE_TO_POWER_TABLE, - (v_VOID_t *)&pnvEFSTable->halnv.tables.pwrOptimum[0], - NULL, sizeof(tRateGroupPwr) * NUM_RF_SUBBANDS ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_REGULARTORY_DOMAIN_TABLE, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_REGULARTORY_DOMAIN_TABLE, - (v_VOID_t *)&pnvEFSTable->halnv.tables.regDomains[0], - NULL, sizeof(sRegulatoryDomains) * NUM_REG_DOMAINS ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_DEFAULT_LOCATION, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_DEFAULT_LOCATION, - (v_VOID_t *)&pnvEFSTable->halnv.tables.defaultCountryTable, - NULL, sizeof(sDefaultCountry) ) != VOS_STATUS_SUCCESS) - goto error; - } - pHddCtx = vos_get_context(VOS_MODULE_ID_HDD, pVosContext); - if (NULL != pHddCtx) - { - if (!vos_mem_compare(pHddCtx->cfg_ini->overrideCountryCode, - CFG_OVERRIDE_COUNTRY_CODE_DEFAULT, 3)) - { - vos_mem_copy(pnvEFSTable->halnv.tables.defaultCountryTable.countryCode, - pHddCtx->cfg_ini->overrideCountryCode, - 3); - } - } - else - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("Invalid pHddCtx pointer") ); - } - } - - if (vos_nv_getValidity(VNV_TPC_POWER_TABLE, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_TPC_POWER_TABLE, - (v_VOID_t *)&pnvEFSTable->halnv.tables.plutCharacterized[0], - NULL, sizeof(tTpcPowerTable) * NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_TPC_PDADC_OFFSETS, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_TPC_PDADC_OFFSETS, - (v_VOID_t *)&pnvEFSTable->halnv.tables.plutPdadcOffset[0], - NULL, sizeof(tANI_U16) * NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS) - goto error; - } - } - if (vos_nv_getValidity(VNV_RSSI_CHANNEL_OFFSETS, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_RSSI_CHANNEL_OFFSETS, - (v_VOID_t *)&pnvEFSTable->halnv.tables.rssiChanOffsets[0], - NULL, sizeof(sRssiChannelOffsets) * 2 ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_HW_CAL_VALUES, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_HW_CAL_VALUES, (v_VOID_t *)&pnvEFSTable->halnv - .tables.hwCalValues, NULL, sizeof(sHwCalValues) ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_FW_CONFIG, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_FW_CONFIG, (v_VOID_t *)&pnvEFSTable->halnv - .tables.fwConfig, NULL, sizeof(sFwConfig) ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_ANTENNA_PATH_LOSS, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_ANTENNA_PATH_LOSS, - (v_VOID_t *)&pnvEFSTable->halnv.tables.antennaPathLoss[0], NULL, - sizeof(tANI_S16)*NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS) - goto error; - } - } - if (vos_nv_getValidity(VNV_PACKET_TYPE_POWER_LIMITS, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_PACKET_TYPE_POWER_LIMITS, - (v_VOID_t *)&pnvEFSTable->halnv.tables.pktTypePwrLimits[0], NULL, - sizeof(tANI_S16)*NUM_802_11_MODES*NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_OFDM_CMD_PWR_OFFSET, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read( VNV_OFDM_CMD_PWR_OFFSET, - (v_VOID_t *)&pnvEFSTable->halnv.tables.ofdmCmdPwrOffset, NULL, - sizeof(sOfdmCmdPwrOffset)) != VOS_STATUS_SUCCESS) - goto error; - } - } - - if (vos_nv_getValidity(VNV_TX_BB_FILTER_MODE, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read(VNV_TX_BB_FILTER_MODE, - (v_VOID_t *)&pnvEFSTable->halnv.tables.txbbFilterMode, NULL, - sizeof(sTxBbFilterMode)) != VOS_STATUS_SUCCESS) - goto error; - } - } - if (vos_nv_getValidity(VNV_TABLE_VIRTUAL_RATE, &itemIsValid) == - VOS_STATUS_SUCCESS) - { - if (itemIsValid == VOS_TRUE) - { - if(vos_nv_read(VNV_TABLE_VIRTUAL_RATE, - (v_VOID_t *)&pnvEFSTable->halnv.tables.pwrOptimum_virtualRate, NULL, - sizeof(gnvEFSTable->halnv.tables.pwrOptimum_virtualRate)) != VOS_STATUS_SUCCESS) - goto error; - } - } - } + /*Copying the NV defaults */ + vos_mem_copy(&(pnvEFSTable->halnv), &nvDefaults, sizeof(sHalNv)); return VOS_STATUS_SUCCESS; -error: - vos_mem_free(pnvEFSTable); - vos_mem_free(pEncodedBuf); - return eHAL_STATUS_FAILURE ; } VOS_STATUS vos_nv_close(void) { - VOS_STATUS status = VOS_STATUS_SUCCESS; - v_CONTEXT_t pVosContext= NULL; - /*Get the global context */ - pVosContext = vos_get_global_context(VOS_MODULE_ID_SYS, NULL); - status = hdd_release_firmware(WLAN_NV_FILE, ((VosContextType*)(pVosContext))->pHDDContext); - if ( !VOS_IS_STATUS_SUCCESS( status )) - { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "%s : vos_open failed",__func__); - return VOS_STATUS_E_FAILURE; - } vos_mem_free(pnvEFSTable); - vos_mem_free(pEncodedBuf); - vos_mem_free(pDictFile); - - gnvEFSTable=NULL; + pnvEFSTable=NULL; return VOS_STATUS_SUCCESS; } @@ -1547,688 +1083,6 @@ VOS_STATUS vos_nv_getSupportedCountryCode( v_BYTE_t *pBuffer, v_SIZE_t *pBufferS } return VOS_STATUS_SUCCESS; } -/**------------------------------------------------------------------------ - \brief vos_nv_readTxAntennaCount() - return number of TX antenna - \param pTxAntennaCount - antenna count - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readTxAntennaCount( v_U8_t *pTxAntennaCount ) -{ - sNvFields fieldImage; - VOS_STATUS status; - status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL, - sizeof(fieldImage) ); - if (VOS_STATUS_SUCCESS == status) - { - *pTxAntennaCount = fieldImage.numOfTxChains; - } - return status; -} -/**------------------------------------------------------------------------ - \brief vos_nv_readRxAntennaCount() - return number of RX antenna - \param pRxAntennaCount - antenna count - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readRxAntennaCount( v_U8_t *pRxAntennaCount ) -{ - sNvFields fieldImage; - VOS_STATUS status; - status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL, - sizeof(fieldImage) ); - if (VOS_STATUS_SUCCESS == status) - { - *pRxAntennaCount = fieldImage.numOfRxChains; - } - return status; -} - -/**------------------------------------------------------------------------ - \brief vos_nv_readMacAddress() - return the MAC address - \param pMacAddress - MAC address - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readMacAddress( v_MAC_ADDRESS_t pMacAddress ) -{ - sNvFields fieldImage; - VOS_STATUS status; - status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL, - sizeof(fieldImage) ); - if (VOS_STATUS_SUCCESS == status) - { - memcpy( pMacAddress, fieldImage.macAddr, VOS_MAC_ADDRESS_LEN ); - } - else - { - //This part of the code can be removed when NV is programmed - const v_U8_t macAddr[VOS_MAC_ADDRESS_LEN] = VOS_HARD_CODED_MAC; - memcpy( pMacAddress, macAddr, VOS_MAC_ADDRESS_LEN ); - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_WARN, - "fail to get MAC address from NV, hardcoded to "MAC_ADDRESS_STR, - MAC_ADDR_ARRAY(macAddr)); - status = VOS_STATUS_SUCCESS; - } - return status; -} - -/**------------------------------------------------------------------------ - - \brief vos_nv_readMultiMacAddress() - return the Multiple MAC addresses - - \param pMacAddress - MAC address - \param macCount - Count of valid MAC addresses to get from NV field - - \return status of the NV read operation - - \sa - - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_readMultiMacAddress( v_U8_t *pMacAddress, - v_U8_t macCount ) -{ - sNvFields fieldImage; - VOS_STATUS status; - v_U8_t countLoop; - v_U8_t *pNVMacAddress; - - if((0 == macCount) || (VOS_MAX_CONCURRENCY_PERSONA < macCount) || - (NULL == pMacAddress)) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - " Invalid Parameter from NV Client macCount %d, pMacAddress %p", - macCount, pMacAddress); - } - - status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL, - sizeof(fieldImage) ); - if (VOS_STATUS_SUCCESS == status) - { - pNVMacAddress = fieldImage.macAddr; - for(countLoop = 0; countLoop < macCount; countLoop++) - { - vos_mem_copy(pMacAddress + (countLoop * VOS_MAC_ADDRESS_LEN), - pNVMacAddress + (countLoop * VOS_MAC_ADDRESS_LEN), - VOS_MAC_ADDRESS_LEN); - } - } - else - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - "vos_nv_readMultiMacAddress Get NV Field Fail"); - } - - return status; -} - -/**------------------------------------------------------------------------ - \brief vos_nv_setValidity() - set the validity of an NV item. - The \a vos_nv_setValidity() validates and invalidates an NV item. The - validity information is stored in NV memory. - One would get the VOS_STATUS_E_EXISTS error when reading an invalid item. - An item becomes valid when one has written to it successfully. - \param type - NV item type - \param itemIsValid - boolean value indicating the item's validity - \return VOS_STATUS_SUCCESS - validity is set successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAILURE - unknown error - \sa - -------------------------------------------------------------------------*/ - -VOS_STATUS vos_nv_setValidity( VNV_TYPE type, v_BOOL_t itemIsValid ) -{ - v_U32_t lastNvValidityBitmap; - v_U32_t newNvValidityBitmap; - VOS_STATUS status = VOS_STATUS_SUCCESS; - - // check if the current NV type is valid - if (VNV_TYPE_COUNT <= type) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("%s: invalid type=%d"), __func__, type ); - return VOS_STATUS_E_INVAL; - } - // read the validity bitmap - lastNvValidityBitmap = gnvEFSTable->nvValidityBitmap; - // modify the validity bitmap - if (itemIsValid) - { - newNvValidityBitmap = lastNvValidityBitmap | (1 << type); - // commit to NV store if bitmap has been modified - if (newNvValidityBitmap != lastNvValidityBitmap) - { - gnvEFSTable->nvValidityBitmap = newNvValidityBitmap; - } - } - else - { - newNvValidityBitmap = lastNvValidityBitmap & (~(1 << type)); - if (newNvValidityBitmap != lastNvValidityBitmap) - { - gnvEFSTable->nvValidityBitmap = newNvValidityBitmap; - status = wlan_write_to_efs((v_U8_t*)gnvEFSTable,sizeof(nvEFSTable_t)); - if (! VOS_IS_STATUS_SUCCESS(status)) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, ("vos_nv_write_to_efs failed!!!")); - status = VOS_STATUS_E_FAULT; - } - } - } - - return status; -} -/**------------------------------------------------------------------------ - \brief vos_nv_getValidity() - get the validity of an NV item. - The \a vos_nv_getValidity() indicates if an NV item is valid. The - validity information is stored in NV memory. - One would get the VOS_STATUS_E_EXISTS error when reading an invalid item. - An item becomes valid when one has written to it successfully. - \param type - NV item type - \param pItemIsValid- pointer to the boolean value indicating the item's - validity - \return VOS_STATUS_SUCCESS - validity is determined successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAILURE - unknown error - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getValidity( VNV_TYPE type, v_BOOL_t *pItemIsValid ) -{ - v_U32_t nvValidityBitmap = gnvEFSTable->nvValidityBitmap; - // check if the current NV type is valid - if (VNV_TYPE_COUNT <= type) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("%s: invalid type=%d"), __func__, type ); - return VOS_STATUS_E_INVAL; - } - *pItemIsValid = (v_BOOL_t)((nvValidityBitmap >> type) & 1); - return VOS_STATUS_SUCCESS; -} -/**------------------------------------------------------------------------ - \brief vos_nv_read() - read a NV item to an output buffer - The \a vos_nv_read() reads a NV item to an output buffer. If the item is - an array, this function would read the entire array. One would get a - VOS_STATUS_E_EXISTS error when reading an invalid item. - For error conditions of VOS_STATUS_E_EXISTS and VOS_STATUS_E_FAILURE, - if a default buffer is provided (with a non-NULL value), - the default buffer content is copied to the output buffer. - \param type - NV item type - \param outputBuffer - output buffer - \param defaultBuffer - default buffer - \param bufferSize - output buffer size - \return VOS_STATUS_SUCCESS - NV item is read successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAULT - defaultBuffer point is NULL - VOS_STATUS_E_EXISTS - NV type is unsupported - VOS_STATUS_E_FAILURE - unknown error - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_read( VNV_TYPE type, v_VOID_t *outputVoidBuffer, - v_VOID_t *defaultBuffer, v_SIZE_t bufferSize ) -{ - VOS_STATUS status = VOS_STATUS_SUCCESS; - v_SIZE_t itemSize; - v_BOOL_t itemIsValid = VOS_TRUE; - - // sanity check - if (VNV_TYPE_COUNT <= type) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("%s: invalid type=%d"), __func__, type ); - return VOS_STATUS_E_INVAL; - } - if (NULL == outputVoidBuffer) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("Buffer provided is NULL") ); - return VOS_STATUS_E_FAULT; - } - if (0 == bufferSize) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("NV type=%d is invalid"), type ); - return VOS_STATUS_E_INVAL; - } - // check if the NV item has valid data - status = vos_nv_getValidity( type, &itemIsValid ); - if (!itemIsValid) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_WARN, - "NV type=%d does not have valid data", type ); - return VOS_STATUS_E_EMPTY; - } - switch(type) - { - case VNV_FIELD_IMAGE: - itemSize = sizeof(gnvEFSTable->halnv.fields); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.fields,bufferSize); - } - break; - case VNV_RATE_TO_POWER_TABLE: - itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.pwrOptimum[0],bufferSize); - } - break; - case VNV_REGULARTORY_DOMAIN_TABLE: - itemSize = sizeof(gnvEFSTable->halnv.tables.regDomains); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.regDomains[0],bufferSize); - } - break; - case VNV_DEFAULT_LOCATION: - itemSize = sizeof(gnvEFSTable->halnv.tables.defaultCountryTable); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.defaultCountryTable,bufferSize); - } - break; - case VNV_TPC_POWER_TABLE: - itemSize = sizeof(gnvEFSTable->halnv.tables.plutCharacterized); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.plutCharacterized[0],bufferSize); - } - break; - case VNV_TPC_PDADC_OFFSETS: - itemSize = sizeof(gnvEFSTable->halnv.tables.plutPdadcOffset); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.plutPdadcOffset[0],bufferSize); - } - break; - case VNV_RSSI_CHANNEL_OFFSETS: - - itemSize = sizeof(gnvEFSTable->halnv.tables.rssiChanOffsets); - - if(bufferSize != itemSize) { - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.rssiChanOffsets[0],bufferSize); - } - break; - case VNV_HW_CAL_VALUES: - - itemSize = sizeof(gnvEFSTable->halnv.tables.hwCalValues); - - if(bufferSize != itemSize) { - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.hwCalValues,bufferSize); - } - break; - case VNV_FW_CONFIG: - - itemSize = sizeof(gnvEFSTable->halnv.tables.fwConfig); - - if(bufferSize != itemSize) { - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.fwConfig,bufferSize); - } - break; - case VNV_ANTENNA_PATH_LOSS: - itemSize = sizeof(gnvEFSTable->halnv.tables.antennaPathLoss); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.antennaPathLoss[0],bufferSize); - } - break; - case VNV_PACKET_TYPE_POWER_LIMITS: - itemSize = sizeof(gnvEFSTable->halnv.tables.pktTypePwrLimits); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,gnvEFSTable->halnv.tables.pktTypePwrLimits,bufferSize); - } - break; - case VNV_OFDM_CMD_PWR_OFFSET: - itemSize = sizeof(gnvEFSTable->halnv.tables.ofdmCmdPwrOffset); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.ofdmCmdPwrOffset,bufferSize); - } - break; - case VNV_TX_BB_FILTER_MODE: - itemSize = sizeof(gnvEFSTable->halnv.tables.txbbFilterMode); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.txbbFilterMode,bufferSize); - } - break; - - - case VNV_TABLE_VIRTUAL_RATE: - itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum_virtualRate); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.pwrOptimum_virtualRate,bufferSize); - } - break; - - default: - break; - } - return status; -} - -/**------------------------------------------------------------------------ - \brief vos_nv_write() - write to a NV item from an input buffer - The \a vos_nv_write() writes to a NV item from an input buffer. This would - validate the NV item if the write operation is successful. - \param type - NV item type - \param inputBuffer - input buffer - \param inputBufferSize - input buffer size - \return VOS_STATUS_SUCCESS - NV item is read successfully - VOS_STATUS_E_INVAL - one of the parameters is invalid - VOS_STATUS_E_FAULT - outputBuffer pointer is NULL - VOS_STATUS_E_EXISTS - NV type is unsupported - VOS_STATUS_E_FAILURE - unknown error - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_write( VNV_TYPE type, v_VOID_t *inputVoidBuffer, - v_SIZE_t bufferSize ) -{ - VOS_STATUS status = VOS_STATUS_SUCCESS; - v_SIZE_t itemSize; - - // sanity check - if (VNV_TYPE_COUNT <= type) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("%s: invalid type=%d"), __func__, type ); - return VOS_STATUS_E_INVAL; - } - if (NULL == inputVoidBuffer) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("Buffer provided is NULL") ); - return VOS_STATUS_E_FAULT; - } - if (0 == bufferSize) - { - VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("NV type=%d is invalid"), type ); - return VOS_STATUS_E_INVAL; - } - switch(type) - { - case VNV_FIELD_IMAGE: - itemSize = sizeof(gnvEFSTable->halnv.fields); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.fields,inputVoidBuffer,bufferSize); - } - break; - case VNV_RATE_TO_POWER_TABLE: - itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.pwrOptimum[0],inputVoidBuffer,bufferSize); - } - break; - case VNV_REGULARTORY_DOMAIN_TABLE: - itemSize = sizeof(gnvEFSTable->halnv.tables.regDomains); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.regDomains[0],inputVoidBuffer,bufferSize); - } - break; - case VNV_DEFAULT_LOCATION: - itemSize = sizeof(gnvEFSTable->halnv.tables.defaultCountryTable); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.defaultCountryTable,inputVoidBuffer,bufferSize); - } - break; - case VNV_TPC_POWER_TABLE: - itemSize = sizeof(gnvEFSTable->halnv.tables.plutCharacterized); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.plutCharacterized[0],inputVoidBuffer,bufferSize); - } - break; - case VNV_TPC_PDADC_OFFSETS: - itemSize = sizeof(gnvEFSTable->halnv.tables.plutPdadcOffset); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.plutPdadcOffset[0],inputVoidBuffer,bufferSize); - } - break; - case VNV_RSSI_CHANNEL_OFFSETS: - - itemSize = sizeof(gnvEFSTable->halnv.tables.rssiChanOffsets); - - if(bufferSize != itemSize) { - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.rssiChanOffsets[0],inputVoidBuffer,bufferSize); - } - break; - case VNV_HW_CAL_VALUES: - - itemSize = sizeof(gnvEFSTable->halnv.tables.hwCalValues); - - if(bufferSize != itemSize) { - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.hwCalValues,inputVoidBuffer,bufferSize); - } - break; - case VNV_FW_CONFIG: - - itemSize = sizeof(gnvEFSTable->halnv.tables.fwConfig); - - if(bufferSize != itemSize) { - - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.fwConfig,inputVoidBuffer,bufferSize); - } - break; - case VNV_ANTENNA_PATH_LOSS: - itemSize = sizeof(gnvEFSTable->halnv.tables.antennaPathLoss); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.antennaPathLoss[0],inputVoidBuffer,bufferSize); - } - break; - - case VNV_PACKET_TYPE_POWER_LIMITS: - itemSize = sizeof(gnvEFSTable->halnv.tables.pktTypePwrLimits); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(gnvEFSTable->halnv.tables.pktTypePwrLimits,inputVoidBuffer,bufferSize); - } - break; - - case VNV_OFDM_CMD_PWR_OFFSET: - itemSize = sizeof(gnvEFSTable->halnv.tables.ofdmCmdPwrOffset); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.ofdmCmdPwrOffset,inputVoidBuffer,bufferSize); - } - break; - - case VNV_TX_BB_FILTER_MODE: - itemSize = sizeof(gnvEFSTable->halnv.tables.txbbFilterMode); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.txbbFilterMode,inputVoidBuffer,bufferSize); - } - break; - - - case VNV_TABLE_VIRTUAL_RATE: - itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum_virtualRate); - if(bufferSize != itemSize) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, - ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize, - itemSize); - status = VOS_STATUS_E_INVAL; - } - else { - memcpy(&gnvEFSTable->halnv.tables.pwrOptimum_virtualRate,inputVoidBuffer,bufferSize); - } - break; - - default: - break; - } - if (VOS_STATUS_SUCCESS == status) - { - // set NV item to have valid data - status = vos_nv_setValidity( type, VOS_TRUE ); - if (! VOS_IS_STATUS_SUCCESS(status)) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, ("vos_nv_setValidity failed!!!")); - status = VOS_STATUS_E_FAULT; - } - status = wlan_write_to_efs((v_U8_t*)gnvEFSTable,sizeof(*gnvEFSTable)); - - if (! VOS_IS_STATUS_SUCCESS(status)) { - VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, ("vos_nv_write_to_efs failed!!!")); - status = VOS_STATUS_E_FAULT; - } - } - return status; -} /**------------------------------------------------------------------------ \brief vos_nv_getChannelListWithPower() - function to return the list of @@ -2369,65 +1223,6 @@ VOS_STATUS vos_nv_readDefaultCountryTable( uNvTables *tableData ) } /**------------------------------------------------------------------------ - \brief vos_nv_getBuffer - - \param pBuffer - to return the buffer address - pSize - buffer size. - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getNVBuffer(v_VOID_t **pNvBuffer,v_SIZE_t *pSize) -{ - /* Send the NV structure and size */ - *pNvBuffer = (v_VOID_t *)(&pnvEFSTable->halnv); - *pSize = sizeof(sHalNv); - - return VOS_STATUS_SUCCESS; -} - -/**------------------------------------------------------------------------ - \brief vos_nv_getBuffer - - \param pBuffer - to return the buffer address - pSize - buffer size. - \return status of the NV read operation - \sa - -------------------------------------------------------------------------*/ -VOS_STATUS vos_nv_getNVEncodedBuffer(v_VOID_t **pNvBuffer,v_SIZE_t *pSize) -{ - /* Send the NV structure and size */ - *pNvBuffer = (v_VOID_t *)(pEncodedBuf); - *pSize = nvReadEncodeBufSize; - return VOS_STATUS_SUCCESS; -} - - -VOS_STATUS vos_nv_getNVDictionary(v_VOID_t **pNvBuffer,v_SIZE_t *pSize) -{ - /* Send the NV structure and size */ - *pNvBuffer = (v_VOID_t *)(pDictFile); - *pSize = nDictionarySize; - - return VOS_STATUS_SUCCESS; -} - -VOS_STATUS vos_nv_isEmbeddedNV(v_VOID_t) -{ - if (MAGIC_NUMBER == magicNumber) - { - return VOS_STATUS_SUCCESS; - } - - return VOS_STATUS_E_FAILURE; -} - -VOS_STATUS vos_nv_setNVEncodedBuffer(v_U8_t *pNvBuffer, v_SIZE_t size) -{ - vos_mem_copy(pEncodedBuf, &pNvBuffer[sizeof(v_U32_t)], - (size-sizeof(v_U32_t))); - - return VOS_STATUS_SUCCESS; -} - -/**------------------------------------------------------------------------ \brief vos_nv_getChannelEnabledState - \param rfChannel - input channel enum to know evabled state \return eNVChannelEnabledType enabled state for channel diff --git a/CORE/VOSS/src/wlan_nv_parser.c b/CORE/VOSS/src/wlan_nv_parser.c deleted file mode 100644 index e0a7ba99922e..000000000000 --- a/CORE/VOSS/src/wlan_nv_parser.c +++ /dev/null @@ -1,2145 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/*=========================================================================== - EDIT HISTORY FOR FILE - - This section contains comments describing changes made to the module. - Notice that changes are listed in reverse chronological order. - - $Header:$ $DateTime: $ $Author: $ - - when who what, where, why - -------- --- ----------------------------------------------------- - 04/10/13 kumarpra nv parser creation -===========================================================================*/ - -#include <linux/string.h> -#include "wlan_nv.h" - -/* - * NV stream layer service - */ -#include "wlan_nv_stream.h" -#include "wlan_nv_template_internal.h" -#include "wlan_nv_parser_internal.h" -#include "wlan_nv_template_api.h" -#include "wlan_nv_template_builtin.h" - -#define _RECURSIVE_DATA_TABLE_PARSING -// Recursive/iterative switch !! Default iterative -#define _RECURSIVE_VERSION - -/* - * Build process should have created the built-in templates in - * "wlan_nv_templateBuiltIn.c" - * Include its auto-generated companion header file - * "wlan_nv_templateBuiltIn.h" - * - * The main definitions are - * _NV_TEMPLATE_TABLE NvTablesBuiltIn[]; - * - */ - -/* - * Parsing control bitmap - */ -tANI_U32 gNVParsingControlLo; -static int subTableSize; -static int fieldSize; -static sHalNv *gpnvData_t; -/* store enum comparison results*/ -static _ENUM_META_DATA enumMetaDataFromBin[INDEX_ENUM_MAX]; - - -/* - * This data copy logic ignores the enum or int data types, - * but simply copy the whole chunk to the NV data structure - */ -typedef struct { - int idxSubFromBin; - int idxSubBuiltin; -} _SUBTABLES_QUEUE; - -pF_NumElemBasedOnStorageType numElemBasedOnStorageType[] = { - numElemSingular, // SINGULAR=0 - numElemArray1, // ARRAY_1=1 - numElemArray2, // ARRAY_2=2 - numElemArray3, // ARRAY_3=3 -}; - -static int sizeOneElemBasedOnFieldIdBasicDataType[] = { - 1, // _FIELD_ID_DATA_TYPE_U8 =0 - 4, // _FIELD_ID_DATA_TYPE_U32 - 1, // _FIELD_ID_DATA_TYPE_S8 - 4, // _FIELD_ID_DATA_TYPE_S32 - 2, // _FIELD_ID_DATA_TYPE_U16 - 2, // _FIELD_ID_DATA_TYPE_S16 -}; - -static _NV_STREAM_BUF nvStream[_NV_STREAM_LEN_MAX]; -static int subTableRd, subTableWr; - -#if !defined(_RECURSIVE_VERSION) -#define _SUBTABLES_MAX 32 -static _SUBTABLES_QUEUE subTablesQueue[_SUBTABLES_MAX]; -#endif - -/*============================================================================== -* -* Storage for NvTablesFromBin -* -*=============================================================================== -*/ - -/* - * Init NvTablesFromBin - * All entries are initialized to 0, pointers to NULL -*/ - -_NV_TEMPLATE_TABLE NvTablesFromBin[TABLES_MAX][TABLE_ENTRIES_MAX] = { - { /* TABLE_LAST*/ - {{nul}, 0, 0, 0, 0, 0, 0, {nul}}, - }, -}; - -static void initNvTablesFromBin(void) -{ - int i, j; - - for (i = 0; i < TABLES_MAX; i++) { - for (j = 0; j < TABLE_ENTRIES_MAX; j++) { - NvTablesFromBin[i][j].fieldName[0] = nul; - NvTablesFromBin[i][j].fieldName[1] = nul; - NvTablesFromBin[i][j].fieldName[2] = nul; - NvTablesFromBin[i][j].fieldId = 0; - NvTablesFromBin[i][j].fieldStorageType = 0; - NvTablesFromBin[i][j].fieldStorageSize1 = 0; - NvTablesFromBin[i][j].fieldStorageSize2 = 0; - NvTablesFromBin[i][j].fieldStorageSize3 = 0; - NvTablesFromBin[i][j].offset = 0; - NvTablesFromBin[i][j].fieldFullName[0] = nul; - NvTablesFromBin[i][j].fieldFullName[1] = nul; - NvTablesFromBin[i][j].fieldFullName[2] = nul; - } - } - - return; -} - -/*============================================================================== -* -* Storage for NvEnumsFromBin -* -* ============================================================================== -*/ - -/* - * Prepare the NV enum templates storage parsed from nv.bin - * They are used later for parsing the nv.bin data - * All entries are initialized to 0, pointers to NULL - */ - -_NV_TEMPLATE_ENUM NvEnumsFromBin[INDEX_ENUM_MAX][ENUM_ENTRIES_MAX] = { - { /* INDEX_ENUM_LAST */ - {{nul}, 0, 0, {nul}}, - }, -}; - -static void initNvEnumsFromBin(void) -{ - int i, j; - - for(i = 0; i < INDEX_ENUM_MAX; i++) { - for(j = 0; j < ENUM_ENTRIES_MAX; j++) { - NvEnumsFromBin[i][j].enumName[0] = nul; - NvEnumsFromBin[i][j].enumName[1] = nul; - NvEnumsFromBin[i][j].enumName[2] = nul; - NvEnumsFromBin[i][j].enumValue = 0; - NvEnumsFromBin[i][j].enumValuePeer = 0xFF; - NvEnumsFromBin[i][j].enumFullName[0] = nul; - } - } - return; -} - - -// ============================================================================= -// -// Parse template streams -// -// ============================================================================= - -/* - * Read nv.bin to extract the template info - * _NV_TEMPLATE_TABLE NvTablesFromBin[]; - */ - -/* - * Parse nv.bin data and extract to the build-in data storage - * - * There are two outcomes from earlier templates comparison operation. - * different or identical - * If identical, this operation will most likely take place. - * If different, - * One is to simply indicate to the user and abort reading the nv.bin data - * The other is to continue this operation, and extract the matching entries - * in nv.bin - */ - -/* - * The template based NV logic: - * - the s/w module has the built-in templates - * - nv.bin is read one stream at a time, sequentially from beginning to end - * - if the stream is an enum stream, - * - add to nv.bin template data structure - * - compare with the built in template, by the string ID - * - if two match, move on - * - if not match, indicate mismatch, act based on the global logic - * _ selection - * - if abort, exit here - * - if extract-matching-ones, - * - copy the enum from the built-in template over to a separate - * _ column - * - when the enum comparison is done, all correlated enums have - * - a built-in enum value - * - all mismtached ones have 0xff - * - else if the stream is a table - * - add to nv.bin template data structure - * - compare with the built-in template, by the field string ID - * - if two tables match, move on - * - if not match, indicate mismatch and proceed based on the global - * - logic selection - * - if abort, exit here - * - if extract-matching-ones, - * - copy the built-in template offset to a separate column - * - eles if the stream is a data stream - * - parse the data stream based on the accumulated NV templates so far, - * - note at this point, - * - 1. the accumulated templates may be incomplete, to make up the - * - whole NV structure - * - 2. some will be "overwritten" by later templates definitions - * - that change the earlier templates) - * - how to parse? - * - based on the nv.bin accumulated templates so far, - * - select the table definition from the data stream, - * - find the corresponding table template, - * - start parsing data based on the template's field string IDs, - * - field by field sequentially. - * - if the field is a nested table, - * - go inside to the next level - * - if the field is a basic type, - * - copy data of the given size to the offset which is the - * - offset in the built-in nv data storage - * - end of the logic - */ - -/*---------------------------------------------------------------------------- - \brief nvParser() - parse nv data provided in input buffer and store - \ output in sHalNv - \param inputEncodedbuffer, length, sHalNv - ptr to input stream, - \param length, sHalNv - \return success when successfully decode and copy to sHalNv structure - \sa ------------------------------------------------------------------------------*/ - -VOS_STATUS nvParser(tANI_U8 *pnvEncodedBuf, tANI_U32 nvReadBufSize, - sHalNv *hal_nv) -{ - _STREAM_RC streamRc; - _NV_STREAM_BUF *pStream = &nvStream[0]; - tANI_U32 len; - _ErrorCode errCode = _OK; - VOS_STATUS ret = VOS_STATUS_SUCCESS; - gpnvData_t = hal_nv; - - // prepare storages for parsing nv.bin - initNvTablesFromBin(); - initNvEnumsFromBin(); - - // init stream read pointer - initReadStream(pnvEncodedBuf, nvReadBufSize); - - // get and process streams one by one - while (RC_FAIL != (streamRc = NEXT_STREAM(&len, &nvStream[0])) ) { - // need to copy, stream layer is freeing it - if (len > _NV_STREAM_LEN_MAX) { - errCode = _STREAM_NOT_FIT_BUF; - goto _error; - } - // template or data - if (IsStreamTemplate(pStream[_NV_BIN_STREAM_HEADER_BYTE])) { - if (_MIS_MATCH == processNvTemplate(pStream, len)) { - if (_FLAG_AND_ABORT(gNVParsingControlLo) ) { - errCode = _SW_BIN_MISMATCH; - break; - } - } - } - else { - processNvData(pStream, len); - } - } - -_error: - if (_OK != errCode) { - ret = VOS_STATUS_E_INVAL; - } - - // all done - return ret; -} - -static _NV_TEMPLATE_PROCESS_RC processNvTemplate(_NV_STREAM_BUF *pStream, - int len) -{ - // Table or enum - if (IsTemplateStreamTable(pStream[_NV_BIN_STREAM_HEADER_BYTE])) { - return processNvTemplateTable(pStream, len); - } - else { - return processNvTemplateEnum(pStream, len); - } -} - -/* ----------------------------------------------------------------------------- - * - * Parse one table template stream in nv.bin - * The length of table templates varies, based on the field ID class, - * field size type - */ - -static _NV_TEMPLATE_PROCESS_RC processNvTemplateTable(_NV_STREAM_BUF *pStream, - int len) -{ - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - char tableNameFromBin[_TABLE_NAME_LEN +1]; - int tableIdxFromBin; - - // construct the template table in the NvTablesFromBin - memset((void*)tableNameFromBin, '\0', (size_t) (_TABLE_NAME_LEN +1)); - tableIdxFromBin = constructATemplateTable(pStream, len, tableNameFromBin); - - // fetch the table name from the first entry, the Table of all tables - // search for the corresponding table in NvDataBuiltIn - if (tableIdxFromBin) { - rc = compareWithBuiltinTable(tableIdxFromBin, tableNameFromBin); - } - // done - return rc; -} - -static int getOffsetFromBuiltIn(char *tableNameFromBin) -{ - int offset = _OFFSET_NOT_SET; - int i; - - _NV_TEMPLATE_TABLE (*pTableBuiltin)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn; - // search NvTablesBuiltIn for the same string named table, and its idx - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTableBuiltin[0][i].fieldName[0]) { - break; - } - if (!strcmp(tableNameFromBin, pTableBuiltin[0][i].fieldName)) { - offset = pTableBuiltin[0][i].offset; - break; - } - } - return offset; -} - -/* - * Construct a table template in the NvTablesFromBin - * it returns the newly constructed table, for comparison with NvTablesBuiltIn - */ -static int constructATemplateTable(_NV_STREAM_BUF *pStream, int len, - char *tableStrName) -{ - int pos = 0; - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - int tableIdx, entryIdx; - int i; - _ErrorCode errCode = _OK; - - tableIdx = (pStream[_NV_BIN_STREAM_TABLE_ID_BYTE] & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - - if (IsIdxTableOfAllTables(tableIdx)) { - } - else { - // find the string name of the table - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[0][i].fieldName[0]) { - break; - } - if ((pTable[0][i].fieldId & FIELD_ID_TABLE_OR_ENUM_IDX_MASK) == - tableIdx) { - strlcpy(tableStrName, pTable[0][i].fieldName, (_TABLE_NAME_LEN +1)); - break; - } - } - if (TABLE_ENTRIES_MAX == i) { - // if string name not found, don't know what to do - errCode = _TABLE_NON_EXIST_IN_TABLE_OF_ALL_TABLES; - goto _error; - } - } - - // check if the table is already populated - if (nul != pTable[tableIdx][0].fieldName[0]) { // there is data in that enty - // tbd: decision logic based on Parsing Control (bitmap) - } - - // overwrite table entry, tableIdx - pos = _TABLE_FIELDS_POS; - entryIdx = 0; - while (pos < len) { - if (!(pos <= (len - _TABLE_FIELD_MIN_LEN))) { - // error condition - errCode = _INSUFFICIENT_FOR_FIELD_PARSER_ERROR; - break; - } - - // populate the entry - memset(pTable[tableIdx][entryIdx].fieldName, '\0', - (size_t) (_TABLE_NAME_LEN + 1)); - memset(pTable[tableIdx][entryIdx].fieldFullName, '\0', - (size_t) (_TABLE_FIELD_FULL_NAME_LEN + 1)); - pTable[tableIdx][entryIdx].fieldName[0] = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldName[1] = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldId = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldStorageType = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldStorageSize1 = 0; - pTable[tableIdx][entryIdx].fieldStorageSize2 = 0; - pTable[tableIdx][entryIdx].fieldStorageSize3 = 0; - pTable[tableIdx][entryIdx].offset = - getOffsetFromBuiltIn(pTable[tableIdx][entryIdx].fieldName); - - if (SINGULAR == - _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) { - } - else if (ARRAY_1 == - _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) { - pTable[tableIdx][entryIdx].fieldStorageSize1 = pStream[pos++]; - } - else if (ARRAY_2 == - _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) { - pTable[tableIdx][entryIdx].fieldStorageSize1 = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldStorageSize2 = pStream[pos++]; - } - else if (ARRAY_3 == - _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) { - pTable[tableIdx][entryIdx].fieldStorageSize1 = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldStorageSize2 = pStream[pos++]; - pTable[tableIdx][entryIdx].fieldStorageSize3 = pStream[pos++]; - } - // - entryIdx++; - } - -_error: - if (_OK != errCode) { - } - - // all done - return tableIdx; -} - -/* ----------------------------------------------------------------------------- - * - * Table Compare logic: - * - * 1. the fields need to be in the same order. Looping through fields doesn't - * guarantee order. - * 2. whenever mismatch occurs in this "same-order" comparison, flag. - * 3. If extract matching entries' option is selected, proceed to nv.bin table - * and extract data. - * - * Note - * "compareWithBuiltinTable" is the initiating point. - * "compare2Tables" is the top level compare logic. - * it is naturally implemented as a recursive call, but out of stack - * overflow concern, - * it is also implemented as an iterative loop. - * - */ - -static _NV_TEMPLATE_PROCESS_RC compareWithBuiltinTable(int idxFromBin, - char *tableNameFromBin) -{ - int i; - _NV_TEMPLATE_TABLE (*pTableBuiltin)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn; - int tableIdxBuiltin = 0; - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - _ErrorCode errCode = _OK; - - // search NvTablesBuiltIn for the same string named table, and its idx - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTableBuiltin[0][i].fieldName[0]) { - break; - } - if (!strcmp(tableNameFromBin, pTableBuiltin[0][i].fieldName)) { - tableIdxBuiltin = (pTableBuiltin[0][i].fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - break; - } - } - - // compare and copy values - if (!tableIdxBuiltin) { - errCode = _TABLE_NON_EXIST_IN_TABLE_OF_ALL_TABLES; - rc = _MIS_MATCH; - } - else { - subTableRd = 0; - subTableWr = 0; - - // fire the comparison logic - if (_MIS_MATCH == compare2Tables(idxFromBin, tableIdxBuiltin)) { - rc = _MIS_MATCH; - } - - // for iterative version - // return code (rc) should only be set to _MIS_MATCH when it happens at - // least once -#if !defined(_RECURSIVE_VERSION) - { - int idxSubFromBin, idxSubBuiltin; - while (subTableRd != subTableWr) { - idxSubFromBin = subTablesQueue[subTableRd].idxSubFromBin; - idxSubBuiltin = subTablesQueue[subTableRd].idxSubBuiltin; - if (_MIS_MATCH == compare2Tables(idxSubFromBin, idxSubBuiltin)) { - rc = _MIS_MATCH; - } - // increment read pointer - subTableRd = (subTableRd+1) % _SUBTABLES_MAX; - } - } -#endif //#if !defined(_RECURSIVE_VERSION) - } - -//_error: - if (_OK != errCode) { - //printf("Error %d \n", errCode); - } - - // - return rc; -} - -static _NV_TEMPLATE_PROCESS_RC compare2Tables(int idxFromBin, int idxBuiltin) -{ - int i, j; - _NV_TEMPLATE_TABLE (*pTableBuiltIn)[TABLE_ENTRIES_MAX]; - _NV_TEMPLATE_TABLE (*pTableFromBin)[TABLE_ENTRIES_MAX]; - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - - pTableBuiltIn = NvTablesBuiltIn; - pTableFromBin = NvTablesFromBin; - - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if ((nul == pTableBuiltIn[idxBuiltin][i].fieldName[0]) || - // end of table occurs in either table - (nul == pTableFromBin[idxFromBin][i].fieldName[0])) { - // end of table occurs in either table - if ((nul == pTableBuiltIn[idxBuiltin][i].fieldName[0]) && - (nul == pTableFromBin[idxFromBin][i].fieldName[0])) { - rc = _MATCH; - } - else { - rc = _MIS_MATCH; - - for (j=0; j<TABLE_ENTRIES_MAX; j++) { - if (nul == pTableBuiltIn[idxBuiltin][j].fieldName[0]) { - // end of bin table - break; - } - if (!strcmp( - (const char*) pTableBuiltIn[idxBuiltin][j].fieldName, - (const char*) pTableFromBin[idxFromBin][i].fieldName)) { - // found matching field in bin table - // DO NOT check return code, it's already a mismatch - compare2FieldsAndCopyFromBin( - &(pTableBuiltIn[idxBuiltin][j]), - &(pTableFromBin[idxFromBin][i]), idxBuiltin, - idxFromBin); - break; - } - } - } - break; // end of table, either table, condition - } - else { - if (!strcmp(pTableBuiltIn[idxBuiltin][i].fieldName, - pTableFromBin[idxFromBin][i].fieldName)) { - // two field names match - if (_MATCH == compare2FieldsAndCopyFromBin( - &(pTableBuiltIn[idxBuiltin][i]), - &(pTableFromBin[idxFromBin][i]), - idxBuiltin, idxFromBin)) { - rc = _MATCH; - } - else { - rc = _MIS_MATCH; - if ( _FLAG_AND_ABORT(gNVParsingControlLo) ) { - break; - } - } - } - else { - rc = _MIS_MATCH; - if ( _FLAG_AND_ABORT(gNVParsingControlLo) ) { - break; - } - // else - // loop through the WHOLE bin tables, looking for a matching field. - // this would take care of both cases where bin table field is - // either "ahead" or "behind" - for (j = 0; j < TABLE_ENTRIES_MAX; j++) { - // end of bin table - if (nul == pTableFromBin[idxBuiltin][j].fieldName[0]) { - break; - } - if (!strcmp(pTableBuiltIn[idxBuiltin][j].fieldName, - pTableFromBin[idxFromBin][i].fieldName)) { - // found matching field in bin table - // DO NOT check return code, it's already a mismatch - compare2FieldsAndCopyFromBin(&(pTableBuiltIn[idxBuiltin][j]), - &(pTableFromBin[idxFromBin][i]), idxBuiltin, idxFromBin); - break; - } - } - } - } - } - - return rc; -} - -static _NV_TEMPLATE_PROCESS_RC compare2FieldsAndCopyFromBin( - _NV_TEMPLATE_TABLE*pTableBuiltIn, - _NV_TEMPLATE_TABLE *pTableFromBin, int idxBuiltin, int idxFromBin) -{ - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - - // Verified already the fieldNames match - // fieldId type matching? - /* - * If it's a simple type, simple comparison, ==,after mask out the data type - * else if it's a table, need to compare 2 tables, don't call recursively - */ - if (_MIS_MATCH == compare2FieldIDType(pTableBuiltIn, pTableFromBin, - idxBuiltin, idxFromBin)) { - rc = _MIS_MATCH; - goto _end; - } - // storage type matching? - // If it's SINGULAR, simple == comparison - // else if it's ARRAY_n, besides check ARRAY_n equal, check sizes - // if sizes are Index_int, simple comparison - // else if sizes are INDEX_ENUM, need to loop through enums - // - if (_MIS_MATCH == compare2FieldStorageTypeAndSizes(pTableBuiltIn, - pTableFromBin, idxBuiltin, idxFromBin)) { - rc = _MIS_MATCH; - goto _end; - } - - // all matched, copy offset over - rc = _MATCH; - pTableFromBin->offset = pTableBuiltIn->offset; - -_end: - return rc; -} - -static _NV_TEMPLATE_PROCESS_RC compare2FieldIDType( - _NV_TEMPLATE_TABLE *pTableBuiltIn, - _NV_TEMPLATE_TABLE *pTableFromBin, int idxBuiltin, int idxFromBin) -{ - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - - if (IsFieldTypeBasicData(pTableBuiltIn->fieldId)) { - if (pTableBuiltIn->fieldId == pTableFromBin->fieldId) { - rc = _MATCH; - } - else { - rc = _MIS_MATCH; - } - } - else { // field is a table - int idxSubBuiltin = pTableBuiltIn->fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK; - int idxSubFromBin = pTableFromBin->fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK; -#if defined(_RECURSIVE_VERSION) - rc = compare2Tables(idxSubFromBin, idxSubBuiltin); -#else - { - subTablesQueue[subTableWr].idxSubFromBin = idxSubFromBin; - subTablesQueue[subTableWr].idxSubBuiltin = idxSubBuiltin; - subTableWr = (subTableWr +1) % _SUBTABLES_MAX; - } -#endif //#if defined(_RECURSIVE_VERSION) - } - - return rc; -} - - -static _NV_TEMPLATE_PROCESS_RC compare2FieldStorageTypeAndSizes( - _NV_TEMPLATE_TABLE *pTableBuiltIn, - _NV_TEMPLATE_TABLE *pTableFromBin, int idxBuiltIn, int idxFromBin) -{ - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - - if (_STORAGE_TYPE(pTableBuiltIn->fieldStorageType) == - _STORAGE_TYPE(pTableFromBin->fieldStorageType)) { - if (SINGULAR == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) { - rc = _MATCH; - } - else if (ARRAY_1 == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) { - if ((_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin, - _STORAGE_SIZE1(pTableBuiltIn->fieldStorageSize1, - pTableBuiltIn->fieldStorageType), - _STORAGE_SIZE1(pTableFromBin->fieldStorageSize1, - pTableFromBin->fieldStorageType), - pTableBuiltIn->fieldStorageSize1, - pTableFromBin->fieldStorageSize1)) ) { - - rc = _MATCH; - } - } - else if (ARRAY_2 == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) { - if ((_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin, - _STORAGE_SIZE1(pTableBuiltIn->fieldStorageSize1, - pTableBuiltIn->fieldStorageType), - _STORAGE_SIZE1(pTableFromBin->fieldStorageSize1, - pTableFromBin->fieldStorageType), - pTableBuiltIn->fieldStorageSize1, - pTableFromBin->fieldStorageSize1)) && - (_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin, - _STORAGE_SIZE2(pTableBuiltIn->fieldStorageSize2, - pTableBuiltIn->fieldStorageType), - _STORAGE_SIZE2(pTableFromBin->fieldStorageSize2, - pTableFromBin->fieldStorageType), - pTableBuiltIn->fieldStorageSize2, - pTableFromBin->fieldStorageSize2)) ) { - rc = _MATCH; - } - } - else if (ARRAY_3 == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) { - if ((_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin, - _STORAGE_SIZE1(pTableBuiltIn->fieldStorageSize1, - pTableBuiltIn->fieldStorageType), - _STORAGE_SIZE1(pTableFromBin->fieldStorageSize1, - pTableFromBin->fieldStorageType), - pTableBuiltIn->fieldStorageSize1, - pTableFromBin->fieldStorageSize1)) && - (_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin, - _STORAGE_SIZE2(pTableBuiltIn->fieldStorageSize2, - pTableBuiltIn->fieldStorageType), - _STORAGE_SIZE2(pTableFromBin->fieldStorageSize2, - pTableFromBin->fieldStorageType), - pTableBuiltIn->fieldStorageSize2, - pTableFromBin->fieldStorageSize2)) && - (_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin, - _STORAGE_SIZE3(pTableBuiltIn->fieldStorageSize3, - pTableBuiltIn->fieldStorageType), - _STORAGE_SIZE3(pTableFromBin->fieldStorageSize3, - pTableFromBin->fieldStorageType), - pTableBuiltIn->fieldStorageSize3, - pTableFromBin->fieldStorageSize3)) ) { - rc = _MATCH; - } - } - } - else { - rc = _MIS_MATCH; - } - return rc; -} - -static _NV_TEMPLATE_PROCESS_RC compare2StorageSize(int idxBuiltIn, - int idxFromBin, int sizeBuiltIn, - int sizeFromBin, tANI_U8 sizeBuiltInLowByte, tANI_U8 sizeFromBinLowByte) -{ - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - - if (IsFieldSizeInt(sizeBuiltInLowByte) && - IsFieldSizeInt(sizeFromBinLowByte)) { - if (sizeBuiltIn == sizeFromBin) { - rc = _MATCH; - } - else { - rc = _MIS_MATCH; - } - } - else if (!IsFieldSizeInt(sizeBuiltInLowByte) && - !IsFieldSizeInt(sizeFromBinLowByte)) { - // enums should have been compared when enum streams are parsed - // The implication is that the enum streams should go before tables' - rc = enumMetaDataFromBin[idxFromBin].match; - } - else { - rc = _MIS_MATCH; - } - - return rc; -} - -/* - * ---------------------------------------------------------------------------- - * - * Parse one enum template stream in nv.bin - */ -static _NV_TEMPLATE_PROCESS_RC processNvTemplateEnum(_NV_STREAM_BUF *pStream, - int len) -{ - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - char enumStr[_ENUM_NAME_LEN + 1]; - //_NV_TEMPLATE_ENUM *pEnum; - int enumIdx; - - // construct the enum template in the NvEnumsFromBin - memset((void*)enumStr, '\0', (size_t) (_ENUM_NAME_LEN + 1)); - enumIdx = constructATemplateEnum(pStream, len, enumStr); - - // Compare the enum template - // also record compare results for later use in the table - // templates parsing where - // the fields may be indexed by enums - // if enumIdx ==0, didn't construct any entry, - // (or only the first entry) - if (enumIdx) { - compareEnumWithBuiltin(enumStr, enumIdx); - } - - return rc; -} - -static void compareEnumWithBuiltin(char *enumStr, int enumIdxFromBin) -{ - int i; - int enumIdxBuiltin = 0; - _NV_TEMPLATE_ENUM (*pEnumBuiltin)[ENUM_ENTRIES_MAX] = NvEnumsBuiltIn; - _ErrorCode errCode = _OK; - - for (i = 0; i < ENUM_ENTRIES_MAX; i++) { - if (nul == pEnumBuiltin[0][i].enumName[0]) { - break; - } - if (!strcmp(enumStr, pEnumBuiltin[0][i].enumName)) { - enumIdxBuiltin = pEnumBuiltin[0][i].enumValue; - break; - } - } - if (!enumIdxBuiltin) { - errCode = _ENUM_NOT_FOUND_IN_BUILT_IN; - return; - } - else { - compare2EnumEntriesAndCopy(enumIdxFromBin, enumIdxBuiltin); - } - -//_error: - if (_OK != errCode) { - //printf("Error %d\n", errCode); - } - - return; -} - -static _NV_TEMPLATE_PROCESS_RC compare2EnumEntriesAndCopy(int idxFromBin, - int idxBuiltin) -{ - int i,j; - _NV_TEMPLATE_PROCESS_RC rc = _MATCH; - _NV_TEMPLATE_ENUM (*enumsFromBin)[ENUM_ENTRIES_MAX] = NvEnumsFromBin; - _NV_TEMPLATE_ENUM (*enumsBuiltin)[ENUM_ENTRIES_MAX] = NvEnumsBuiltIn; - - // need to go through all enums - for (i = 0; i < ENUM_ENTRIES_MAX; i++) { - // end conditions: either both reach the end (match), - // or one of them reaching the end (mismatch) - if ((nul == enumsBuiltin[idxBuiltin][i].enumName[0]) || - (nul == enumsFromBin[idxFromBin][i].enumName[0])) { - if ((nul == enumsBuiltin[idxBuiltin][i].enumName[0]) && - (nul == enumsFromBin[idxFromBin][i].enumName[0])) { - // fully matched - rc = _MATCH; - break; - } - else { - rc = _MIS_MATCH; - for (j = 0; j < ENUM_ENTRIES_MAX; j++) { - if (nul == enumsBuiltin[idxBuiltin][j].enumName[0]) { - break; - } - if (!strcmp((const char*)enumsFromBin[idxFromBin][i].enumName, - (const char*)enumsBuiltin[idxBuiltin][j].enumName)) { - enumsFromBin[idxFromBin][i].enumValuePeer = - enumsBuiltin[idxBuiltin][j].enumValue; - break; - } - } - break; - } - } - else { - if (!strcmp(enumsBuiltin[idxBuiltin][i].enumName, - enumsFromBin[idxFromBin][i].enumName)) { - // copy builtIn enum value to fromBin - enumsFromBin[idxFromBin][i].enumValuePeer = - enumsBuiltin[idxBuiltin][i].enumValue; - } - else { - // mismatch, but still loop through the whole enum list - // for the "ahead" and "behind" scenarios - rc = _MIS_MATCH; - for (j = 0; j < ENUM_ENTRIES_MAX; j++) { - if (nul == enumsBuiltin[idxBuiltin][j].enumName[0]) { - break; - } - if (!strcmp(enumsFromBin[idxFromBin][i].enumName, - enumsBuiltin[idxBuiltin][j].enumName)) { - enumsFromBin[idxFromBin][i].enumValuePeer = - enumsBuiltin[idxBuiltin][j].enumValue; - break; - } - } - } - } - } - - // record match or mismatch for later data parsing use - enumMetaDataFromBin[idxFromBin].match = rc; - - // all done - return rc; -} - -static int constructATemplateEnum(_NV_STREAM_BUF *pStream, int len, - char *enumStr) -{ - int pos = 0; - _NV_TEMPLATE_ENUM (*pEnum)[ENUM_ENTRIES_MAX]; - int enumIdx = 0; - int i; - int entryIdx; - _ErrorCode errCode = _OK; - - enumIdx = (pStream[_NV_BIN_STREAM_ENUM_ID_BYTE] & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - pEnum = NvEnumsFromBin; - - // find its string name - // the logic: - // since the nv.bin doesn't encode the enum string name in the actual enum - // stream, only the first "enum of all enums" - // has the names of all enums. - if (IsIdxEnumOfAllEnums(enumIdx)) { - } - else { - for (i = 0; i < ENUM_ENTRIES_MAX; i++) { - if (nul == pEnum[0][i].enumName[0]) { - break; - } - if (pEnum[0][i].enumValue == enumIdx) { - strlcpy(enumStr, pEnum[0][i].enumName,(_ENUM_NAME_LEN + 1)); - break; - } - } - if (ENUM_ENTRIES_MAX == i) { - // without a string name, don't know what to do with the enum indexed - errCode = _ENUM_NOT_FOUND_IN_BUILT_IN; - goto _error; - } - } - - // Found the enum string name, now parsing decision time ... - // Is the entry already populated? - if (nul != pEnum[enumIdx][0].enumName[0]) { // there is data in that entry - // TBD: - // the logic here depends on how we support "parsing data based on the - // latest template". - // one way is to overwrite the template, so the subsequent parsing will - // be based on the "latest". - // the second way is to "append" the template, and the parsing should - // always be based on the "last" of the same name - // for simplicity, support the first approach for now. - // - // the logic: - // based on the parsing control (bitmap), we may proceed on overwriting - // enums with blind faith that the writing logic is correct, - // or ignore the appended. - // - } - - // overwrite entry, enumIdx - pos = _ENUM_START_POS; - entryIdx = 0; - while (pos < len) { - if (!(pos <= (len - _ENUM_MIN_LEN))) { - // error condition - errCode = _INSUFFICIENT_FOR_FIELD_PARSER_ERROR; - break; - } - - // populate the entry - memset(pEnum[enumIdx][entryIdx].enumName, '\0', - (size_t) (_ENUM_NAME_LEN +1)); - memset(pEnum[enumIdx][entryIdx].enumFullName, '\0', - (size_t) (_ENUM_FULL_NAME_LEN +1)); - pEnum[enumIdx][entryIdx].enumName[0] = pStream[pos++]; - pEnum[enumIdx][entryIdx].enumName[1] = pStream[pos++]; - pEnum[enumIdx][entryIdx].enumValue = pStream[pos++]; - entryIdx++; - } - -_error: - if (_OK != errCode) { - //printf("Error %d\n", errCode); - } - - // all done - return enumIdx; -} - -/* ----------------------------------------------------------------------------- - * - * Process data stream - * The purpose is to copy nv.bin data into built in NV data structure. - * This is the parser function. - * - * Next phase: - * With NV data in the s/w module data structure, nv.bin conforming - * to the new format can be generated. That is the nv.bin generation logic.) - * - * Data stream has the following format - * - * delimiter|streamHeader|tableID|data....|CRC|delimiter - * Note - * 1. delimiters are not present in the stream data, pStream. - * 2. nested tables do NOT have table IDs with them. - * - */ -// NV data, per built in templates -// Recursive table parsing, which is naturally depth-first -// If iterative, a bit hard to implement - -static void parseSubDataTable4Size(int tableIdx, int numElem) -{ - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - int idxSubTable; - int i; - int numSubElem = 0, idx=0; - - // "apply" template to data -- parsing the actual NV data, - // so far we have been parsing and building templates - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[tableIdx][i].fieldName[0]) { - // data parsing done for this stream - break; - } - if (IsFieldTypeBasicData(pTable[tableIdx][i].fieldId)) { - getBasicDataSize(&(pTable[tableIdx][i])); - } - else { - // number of element - idx = - _STORAGE_TYPE(pTable[tableIdx][i].fieldStorageType); - numSubElem = numElemBasedOnStorageType[idx]( - &(pTable[tableIdx][i]), 1); - // get size of the sub-table - idxSubTable = (pTable[tableIdx][i].fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - // recursive calls for the total size of the subtable - parseSubDataTable4Size(idxSubTable, numSubElem); - } - } - // update subTableSize for the number of elements - subTableSize *= numElem; - - return; -} - -static void copyDataToBuiltInFromBin(int tableIdx,int fieldId, - _NV_STREAM_BUF *pStream, int *pos, int addOffset, int tableBaseOffset) -{ - int i,j,k,storageType; - int idx=0, size1=0, size2=0, size3=0; - int enumIdx1=0, enumIdx2=0, enumIdx3=0, sizeOneElem=0; - int isFirstFieldEnum=0,isSecondFieldEnum=0,isThirdFieldEnum=0; - int index,index1,index2; - int dindex,dindex1,dindex2,totalSize; - int offset=0,sizeBuiltIn,tableIdxBuiltIn,fieldIdBuiltIn; - int idxBuiltIn=0, size1BuiltIn=0, size2BuiltIn=0, size3BuiltIn=0; - int size1Bin=0, size2Bin=0, size3Bin=0, numElemBuiltIn; - int sizeOneElemBuiltIn=0, field; - unsigned char *ptr, *dptr; - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - _NV_TEMPLATE_TABLE (*pTableBuiltIn)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn; - - storageType = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType); - field = pTable[tableIdx][fieldId].fieldId; - sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[field & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK]; - sizeBuiltIn = getBuiltInFieldCount(tableIdx, - pTable[tableIdx][fieldId].fieldName, - &tableIdxBuiltIn,&fieldIdBuiltIn,&numElemBuiltIn); - - field = pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldId; - sizeOneElemBuiltIn = sizeOneElemBasedOnFieldIdBasicDataType[field & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK]; - - if (storageType == SINGULAR ) { - ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset; - dptr = (unsigned char *)&pStream[*pos]; - - if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) { - idx = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType); - size1Bin = numElemBasedOnStorageType[idx]( - &(pTable[tableIdx][fieldId]), 1); - field = pTable[tableIdx][fieldId].fieldId; - sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[field & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK]; - - idxBuiltIn = _STORAGE_TYPE( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - size1BuiltIn = numElemBasedOnStorageType[idx]( - &(pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn]), 0); - - size1 = size1Bin; - if (size1 > size1BuiltIn) { - size1 = size1BuiltIn; - } - } - totalSize = size1 * sizeOneElem; - - offset = 0; - for (i = 0; i < size1; i++) { - memcpy(&ptr[offset], &dptr[offset], sizeOneElem); - offset = offset + sizeOneElem; - } - - *pos = *pos + (size1Bin * sizeOneElem); - } - else { - if (ARRAY_1 == storageType) { - ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset; - dptr = (unsigned char *)&pStream[*pos]; - - idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1Bin = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize1, 1); - - idx = _STORAGE_SIZE1( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size1BuiltIn = getNumElemOutOfStorageSize(idx, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, 0); - - size1 = size1Bin; - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - isFirstFieldEnum = 1; - } - else { - isFirstFieldEnum = 0; - if (size1 > size1BuiltIn) { - size1 = size1BuiltIn; - } - } - - offset = 0; - for (i = 0; i < size1; i++) { - if (isFirstFieldEnum) { - if (NvEnumsFromBin[enumIdx1][i].enumValuePeer != 0xFF) { - index = NvEnumsFromBin[enumIdx1][i].enumValuePeer; - dindex = NvEnumsFromBin[enumIdx1][i].enumValue; - - index = index * sizeOneElem; - dindex = dindex * sizeOneElem; - - memcpy(&ptr[index], &dptr[dindex], sizeOneElem); - } - } - else { - memcpy(&ptr[offset], &dptr[offset], sizeOneElem); - offset = offset + sizeOneElem; - } - } - - *pos = *pos + (size1Bin * sizeOneElem); - } - else if (ARRAY_2 == storageType) { - ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset; - dptr = (unsigned char *)&pStream[*pos]; - - idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1Bin = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize1, 1); - - idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2, - pTable[tableIdx][fieldId].fieldStorageType); - - size2Bin = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize2, 1); - - idx = _STORAGE_SIZE1( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size1BuiltIn = getNumElemOutOfStorageSize(idx, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, 0); - - idx = _STORAGE_SIZE2( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size2BuiltIn = getNumElemOutOfStorageSize(idx, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, 0); - - size1 = size1Bin; - size2 = size2Bin; - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - isFirstFieldEnum = 1; - } - else { - isFirstFieldEnum = 0; - if (size1 > size1BuiltIn) { - size1 = size1BuiltIn; - } - } - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) { - enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - isSecondFieldEnum = 1; - } - else { - isSecondFieldEnum = 0; - if (size2 > size2BuiltIn) { - size2 = size2BuiltIn; - } - } - - offset = 0; - - for (i = 0; i < size1; i++) { - if (isFirstFieldEnum) { - if (NvEnumsFromBin[enumIdx1][i].enumValuePeer == 0xFF) { - continue; - } - - index = NvEnumsFromBin[enumIdx1][i].enumValuePeer; - dindex = NvEnumsFromBin[enumIdx1][i].enumValue; - } - else { - index = dindex = i; - } - - for (j = 0; j < size2; j++) { - if (isSecondFieldEnum) { - if (NvEnumsFromBin[enumIdx2][j].enumValuePeer == 0xFF) { - continue; - } - - index1 = NvEnumsFromBin[enumIdx2][j].enumValuePeer; - dindex1 = NvEnumsFromBin[enumIdx2][j].enumValue; - } - else { - index1 = dindex1 = j; - } - - memcpy(&ptr[(index1 + index * size2BuiltIn)*sizeOneElem], - &dptr[(dindex1+dindex*size2Bin)*sizeOneElem], sizeOneElem); - offset = offset + sizeOneElem; - } - } - - *pos = *pos + size2Bin * size1Bin * sizeOneElem; - } - else if (ARRAY_3 == storageType) { - ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset; - dptr = (unsigned char *)&pStream[*pos]; - - idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1Bin = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize1, 1); - - idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2, - pTable[tableIdx][fieldId].fieldStorageType); - size2Bin = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize2, 1); - - idx = _STORAGE_SIZE3(pTable[tableIdx][fieldId].fieldStorageSize3, - pTable[tableIdx][fieldId].fieldStorageType); - size3Bin = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize3, 1); - - idx = _STORAGE_SIZE1( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size1BuiltIn = getNumElemOutOfStorageSize(idx, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, - 0); - - idx = _STORAGE_SIZE2( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size2BuiltIn = getNumElemOutOfStorageSize(idx, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, - 0); - - idx = _STORAGE_SIZE3( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size3BuiltIn = getNumElemOutOfStorageSize(idx, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3, - 0); - - size1 = size1Bin; - size2 = size2Bin; - size3 = size3Bin; - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - isFirstFieldEnum = 1; - } - else { - isFirstFieldEnum = 0; - if (size1 > size1BuiltIn) { - size1 = size1BuiltIn; - } - } - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) { - enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - isSecondFieldEnum = 1; - } - else { - isSecondFieldEnum = 0; - if (size2 > size2BuiltIn) { - size2 = size2BuiltIn; - } - } - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize3)) { - enumIdx3 = ((pTable[tableIdx][fieldId].fieldStorageSize3 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - isThirdFieldEnum = 1; - } - else { - isThirdFieldEnum = 0; - if (size3 > size3BuiltIn) { - size3 = size3BuiltIn; - } - } - - offset = 0; - for (i = 0; i < size1; i++) { - if (isFirstFieldEnum) { - if (NvEnumsFromBin[enumIdx1][i].enumValuePeer == 0xFF) { - continue; - } - - index = NvEnumsFromBin[enumIdx1][i].enumValuePeer; - dindex = NvEnumsFromBin[enumIdx1][i].enumValue; - } - else { - index = dindex = i; - } - - for (j = 0; j < size2; j++) { - if (isSecondFieldEnum) { - if (NvEnumsFromBin[enumIdx2][j].enumValuePeer == 0xFF) { - continue; - } - - index1 = NvEnumsFromBin[enumIdx2][j].enumValuePeer; - dindex1 = NvEnumsFromBin[enumIdx2][j].enumValue; - } - else { - index1 = dindex1 = j; - } - - for (k = 0; k < size3; k++) { - if (isThirdFieldEnum) { - if (NvEnumsFromBin[enumIdx2][j].enumValuePeer == 0xFF) { - continue; - } - - index2 = NvEnumsFromBin[enumIdx3][k].enumValuePeer; - dindex2 = NvEnumsFromBin[enumIdx3][k].enumValue; - } - else { - index2 = dindex2 = k; - } - - memcpy(&ptr[(index2 + (index1 * size2BuiltIn) + - (index * size3BuiltIn * size2BuiltIn)) * sizeOneElem], - &dptr[(dindex2 + (dindex1 * size2Bin) + - (dindex * size3Bin * size2Bin))*sizeOneElem], - sizeOneElem); - - offset = offset + sizeOneElem; - } - } - } - - *pos = *pos + size1Bin * size2Bin * size3Bin * sizeOneElem; - } - else { - } - } -} - -// search NvTablesBuiltIn for the same string named table, and its idx -static int getBuiltInFieldCount (int tableIdxBin, char *tableNameFromBin, - int *tblIdBuiltIn, int *fieldIdBuitIn, int *numElements) -{ - int i,idx,numElem,tableIdxBuiltin=0,fieldCnt; - _NV_TEMPLATE_TABLE (*pTableBin)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn; - int found=0, fieldIndex = 0; - - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTableBin[0][i].fieldName[0]) { - break; - } - - if ((pTableBin[0][i].fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK) == tableIdxBin) { - found = 1; - break; - } - } - - if (!found) { - return -1; - } - - //fieldName index got from tableId from Bin - fieldIndex = i; - found = 0; - - for (i=0;i<TABLE_ENTRIES_MAX;i++) { - if (nul == pTable[0][i].fieldName[0]) { - break; - } - - if (!strcmp((const char*)pTableBin[0][fieldIndex].fieldName, - (const char*)pTable[0][i].fieldName)) { - found = 1; - break; - } - } - - if (!found) { - return -1; - } - - //found tableId of builtIn - tableIdxBuiltin = *tblIdBuiltIn = - (pTable[0][i].fieldId & FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - found = 0; - - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[tableIdxBuiltin][i].fieldName[0]) { - break; - } - - if (!strcmp((const char*)tableNameFromBin, - (const char*)pTable[tableIdxBuiltin][i].fieldName)) { - found = 1; - break; - } - } - - if (!found) { - return -1; - } - - *fieldIdBuitIn = i; - - idx = _STORAGE_TYPE(pTable[tableIdxBuiltin][i].fieldStorageType); - numElem = numElemBasedOnStorageType[idx](&(pTable[tableIdxBuiltin][i]), 0); - - fieldSize = 0; - fieldCnt = getFieldCount (tableIdxBuiltin, i, numElem, 0); - - *numElements = numElem; - - return fieldCnt; -} - -static int getFieldCount(int tableIdx, int fieldId, int numElem, int nvBin) -{ - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX]; - int idxSubTable; - int i, j, storageType, field; - int numSubElem=0, idx =0, size1=0, size2=0, size3=0, sizeOneElem=0; - int enumIdx1=0, enumIdx2=0, enumIdx3=0; - - if ( nvBin ) { - pTable = NvTablesFromBin; - } - else { - pTable = NvTablesBuiltIn; - } - - storageType = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType); - - if (SINGULAR == storageType) { - if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) { - idx = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType); - size1 = numElemBasedOnStorageType[idx](&(pTable[tableIdx][fieldId]), - nvBin); - } - else { - } - } - else { - if (ARRAY_1 == storageType) { - idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1 = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize1,nvBin); - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - } - } - else if (ARRAY_2 == storageType) { - idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1 = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize1,nvBin); - - idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2, - pTable[tableIdx][fieldId].fieldStorageType); - - size2 = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize2,nvBin); - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - } - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) { - enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - } - } - else if (ARRAY_3 == storageType) { - idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1 = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize1,nvBin); - - idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2, - pTable[tableIdx][fieldId].fieldStorageType); - size2 = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize2,nvBin); - - idx = _STORAGE_SIZE3(pTable[tableIdx][fieldId].fieldStorageSize3, - pTable[tableIdx][fieldId].fieldStorageType); - size3 = getNumElemOutOfStorageSize(idx, - pTable[tableIdx][fieldId].fieldStorageSize3,nvBin); - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - } - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) { - enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - } - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize3)) { - enumIdx3 = ((pTable[tableIdx][fieldId].fieldStorageSize3 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - } - } - else { - } - } - - if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) { - field = pTable[tableIdx][fieldId].fieldId; - sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[field & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK]; - if ( size3 ) { - fieldSize = fieldSize + size3 * size2 * size1 * sizeOneElem; - } - else if ( size2 ) { - fieldSize = fieldSize + size2 * size1 * sizeOneElem; - } - else if ( size1 ) { - fieldSize = fieldSize + size1 * sizeOneElem; - } - else { - } - } - else { - idxSubTable = (pTable[tableIdx][fieldId].fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - - for (j=0; j<numElem; j++) { - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[idxSubTable][i].fieldName[0]) { - // data parsing done for this stream - break; - } - - idx = _STORAGE_TYPE(pTable[idxSubTable][i].fieldStorageType); - numSubElem = numElemBasedOnStorageType[idx]( - &(pTable[idxSubTable][i]),nvBin); - - getFieldCount(idxSubTable, i, numSubElem, nvBin); - } - } - } - - return fieldSize; -} - -static void parseSubDataTableAndCopy(int tableIdx, int numElem, int numElem2, - int numElem3, int fieldId, _NV_STREAM_BUF *pStream, int *pos, int addOffset, - int tableBaseOffset, int localAddOffset) -{ - int idxSubTable, i, j, l, m, idx1, storageType, fieldCount=0; - int size1BuiltIn, size2BuiltIn, size3BuiltIn; - int tableIdxBuiltIn, fieldIdBuiltIn, numElemBuiltIn, incAddOffset=0; - int totalOffset=0, enumIdx, size1Bin, size2Bin, size3Bin; - int numSubElem, numSubElem2, numSubElem3, sizeBuiltIn=0, idx=0; - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - _NV_TEMPLATE_TABLE (*pTableBuiltIn)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn; - - // "apply" template to data -- parsing the actual NV data, - // so far we have been parsing and building templates - if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) { - // First Entry, same as off addOffset just increment localOffset - if (pTable[tableIdx][fieldId].offset == addOffset) { - totalOffset = localAddOffset + pTable[tableIdx][fieldId].offset; - } - else { - // Multiple Entry next index array, addOffset and localOffset - totalOffset = localAddOffset + pTable[tableIdx][fieldId].offset + - addOffset; - } - copyDataToBuiltInFromBin(tableIdx, fieldId, pStream, pos, totalOffset, - tableBaseOffset); - } - else { - // number of element - // get size of the sub-table - idxSubTable = (pTable[tableIdx][fieldId].fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - - fieldSize = 0; - sizeBuiltIn = getBuiltInFieldCount(tableIdx, - pTable[tableIdx][fieldId].fieldName, - &tableIdxBuiltIn, &fieldIdBuiltIn, &numElemBuiltIn); - incAddOffset = 0; - - if (numElemBuiltIn) { - incAddOffset = sizeBuiltIn/numElemBuiltIn; - } - - storageType = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType); - - fieldSize = 0; - fieldCount = getFieldCount(tableIdx, fieldId, numElem, 1); - - idx1 = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1, - pTable[tableIdx][fieldId].fieldStorageType); - size1Bin = getNumElemOutOfStorageSize(idx1, - pTable[tableIdx][fieldId].fieldStorageSize1, 1); - - for (l=0; l < numElem3; l++) { - if (storageType == ARRAY_3) { - idx1 = _STORAGE_SIZE3(pTable[tableIdx][fieldId].fieldStorageSize3, - pTable[tableIdx][fieldId].fieldStorageType); - - size3Bin = getNumElemOutOfStorageSize(idx1, - pTable[tableIdx][fieldId].fieldStorageSize3, 1); - - fieldSize = 0; - getBuiltInFieldCount(tableIdx, - pTable[tableIdx][fieldId].fieldName, &tableIdxBuiltIn, - &fieldIdBuiltIn, &numElemBuiltIn); - - idx1 = _STORAGE_SIZE3( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - size3BuiltIn = getNumElemOutOfStorageSize(idx1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3, - 0); - - if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize3)) { - enumIdx = ((pTable[tableIdx][fieldId].fieldStorageSize3 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - if (NvEnumsFromBin[enumIdx][l].enumValuePeer == 0xFF) { - *pos = *pos + (fieldCount/size1Bin) * numElem * numElem2; - continue; - } - } - else { - if ((l+1) > size3BuiltIn) { - *pos = *pos + (fieldCount/size1Bin) * numElem * numElem2; - continue; - } - } - } - for (m=0; m < numElem2; m++) { - if (storageType == ARRAY_2) { - idx1 = _STORAGE_SIZE2( - pTable[tableIdx][fieldId].fieldStorageSize2, - pTable[tableIdx][fieldId].fieldStorageType); - size2Bin = getNumElemOutOfStorageSize(idx1, - pTable[tableIdx][fieldId].fieldStorageSize2, 1); - - fieldSize = 0; - getBuiltInFieldCount(tableIdx, - pTable[tableIdx][fieldId].fieldName, &tableIdxBuiltIn, - &fieldIdBuiltIn, &numElemBuiltIn); - - idx1 = _STORAGE_SIZE2( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size2BuiltIn = getNumElemOutOfStorageSize(idx1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, - 0); - - if (!IsFieldSizeInt( - pTable[tableIdx][fieldId].fieldStorageSize2)) { - enumIdx = ((pTable[tableIdx][fieldId].fieldStorageSize2 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - if (NvEnumsFromBin[enumIdx][m].enumValuePeer == 0xFF) { - *pos = *pos + (fieldCount/size1Bin) * numElem; - continue; - } - } - else { - if ((m+1) > size2BuiltIn) { - *pos = *pos + (fieldCount/size1Bin) * numElem; - continue; - } - } - } - for (j=0; j < numElem; j++) { - if (storageType == ARRAY_1) { - fieldSize = 0; - getBuiltInFieldCount(tableIdx, - pTable[tableIdx][fieldId].fieldName, &tableIdxBuiltIn, - &fieldIdBuiltIn, &numElemBuiltIn); - - idx1 = _STORAGE_SIZE1( - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType); - - size1BuiltIn = getNumElemOutOfStorageSize(idx1, - pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, - 0); - - if (!IsFieldSizeInt( - pTable[tableIdx][fieldId].fieldStorageSize1)) { - enumIdx = ((pTable[tableIdx][fieldId].fieldStorageSize1 & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - if (NvEnumsFromBin[enumIdx][j].enumValuePeer == 0xFF) { - *pos = *pos + (fieldCount/size1Bin); - continue; - } - } - else { - if ((j+1) > size1BuiltIn) { - *pos = *pos + (fieldCount/size1Bin); - continue; - } - } - } - - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[idxSubTable][i].fieldName[0]) { - // data parsing done for this stream - break; - } - - idx = _STORAGE_TYPE(pTable[idxSubTable][i].fieldStorageType); - numSubElem = numElemBasedOnStorageType[idx]( - &(pTable[idxSubTable][i]),1); - numSubElem2 = numSubElem3 = 1; - - if (idx == ARRAY_1) { - idx1 = _STORAGE_SIZE1( - pTable[idxSubTable][i].fieldStorageSize1, - pTable[idxSubTable][i].fieldStorageType); - numSubElem = getNumElemOutOfStorageSize(idx1, - pTable[idxSubTable][i].fieldStorageSize1, 1); - } - else if (idx == ARRAY_2) { - idx1 = _STORAGE_SIZE1( - pTable[idxSubTable][i].fieldStorageSize1, - pTable[idxSubTable][i].fieldStorageType); - numSubElem = getNumElemOutOfStorageSize(idx1, - pTable[idxSubTable][i].fieldStorageSize1, 1); - - idx1 = _STORAGE_SIZE2( - pTable[idxSubTable][i].fieldStorageSize2, - pTable[idxSubTable][i].fieldStorageType); - numSubElem2 = getNumElemOutOfStorageSize(idx1, - pTable[idxSubTable][i].fieldStorageSize2, 1); - } - else if (idx == ARRAY_3) { - idx1 = _STORAGE_SIZE1( - pTable[idxSubTable][i].fieldStorageSize1, - pTable[idxSubTable][i].fieldStorageType); - numSubElem = getNumElemOutOfStorageSize(idx1, - pTable[idxSubTable][i].fieldStorageSize1, 1); - - idx1 = _STORAGE_SIZE2( - pTable[idxSubTable][i].fieldStorageSize2, - pTable[idxSubTable][i].fieldStorageType); - numSubElem2 = getNumElemOutOfStorageSize(idx1, - pTable[idxSubTable][i].fieldStorageSize2, 1); - - idx1 = _STORAGE_SIZE3( - pTable[idxSubTable][i].fieldStorageSize3, - pTable[idxSubTable][i].fieldStorageType); - numSubElem3 = getNumElemOutOfStorageSize(idx1, - pTable[idxSubTable][i].fieldStorageSize3, 1); - } - - if (_OFFSET_NOT_SET != pTable[idxSubTable][i].offset) { - if ( pTable[tableIdx][fieldId].offset == addOffset ) { - parseSubDataTableAndCopy(idxSubTable, numSubElem, - numSubElem2, numSubElem3, i, pStream, pos, - addOffset, tableBaseOffset, localAddOffset); - } - else { - // NOT the first Entry in the table.. - if ( !pTable[tableIdx][fieldId].offset ) { - parseSubDataTableAndCopy(idxSubTable, numSubElem, - numSubElem2, numSubElem3, i, pStream, pos, - addOffset, tableBaseOffset, localAddOffset); - } - else { - //First Entry in the the table.. - //(Sending parent offset..) - parseSubDataTableAndCopy(idxSubTable, numSubElem, - numSubElem2, numSubElem3, i, pStream, pos, - addOffset, tableBaseOffset, - pTable[tableIdx][fieldId].offset); - } - } - } - else { - fieldSize = 0; - fieldCount = getFieldCount(idxSubTable, i, numSubElem, 1); - *pos += fieldCount; - } - } - - localAddOffset = localAddOffset + incAddOffset; - } - } - } - } - - return; -} - -static void processNvData(_NV_STREAM_BUF *pStream, int len) -{ - int tableIdx, pos, idx = 0, addOffset = 0, i; - int numElem = 0, additionalOffset = 0, tableBaseOffset = 0; - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - - // fetch the table template - pos = 0; // stream header byte is already checked, that's why we are here - pos += _NV_BIN_DATA_STREAM_TABLEID_BYTE; - tableIdx = (pStream[_NV_BIN_DATA_STREAM_TABLEID_BYTE] & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - pos++; - - // call the table parsing - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[0][i].fieldName[0]) { - break; - } - if (tableIdx == _TABLE_IDX(pTable[0][i].fieldId)) { - // Table base offset, stored in the "table of all tables" (index 0), - // will be added to - // fields relative offset in all tables. - tableBaseOffset = pTable[0][i].offset; - - idx = _STORAGE_TYPE(pTable[0][i].fieldStorageType); - - // number of element - numElem = numElemBasedOnStorageType[idx](&(pTable[0][i]),1); - - // recursive calls for the total size of the subtable, which may - // contain nested tables - subTableSize = 0; - parseSubDataTable4Size(tableIdx, numElem); - - // additional offset for EACH subsequent table element - additionalOffset = subTableSize/numElem; - - break; - } - } - - if (numElem) { - for (i = 0; i < numElem; i++) { - addOffset = (i * additionalOffset); - parseDataTable_new(pStream, &pos, tableIdx, addOffset, - tableBaseOffset); - } - } - - // the above recursive data table parser takes care of the nested tables - // all done - return; -} - -static void parseDataTable_new(_NV_STREAM_BUF *pStream, int* pos, int tableIdx, - int addOffset, int tableBaseOffset) -{ - _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin; - int i, idx, fieldCount; - int numElem, numElem2, numElem3, storageType, idxSubTable; - - // "apply" template to data -- parsing the actual NV data, - // so far we have been parsing and building templates - for (i = 0; i < TABLE_ENTRIES_MAX; i++) { - if (nul == pTable[tableIdx][i].fieldName[0]) { - // data parsing done for this stream - break; - } - - // get size of the sub-table - idxSubTable = (pTable[tableIdx][i].fieldId & - FIELD_ID_TABLE_OR_ENUM_IDX_MASK); - - idx = _STORAGE_TYPE(pTable[tableIdx][i].fieldStorageType); - - numElem = numElemBasedOnStorageType[idx](&(pTable[tableIdx][i]),1); - - addOffset = pTable[tableIdx][i].offset; - - fieldSize = 0; - fieldCount = getFieldCount(tableIdx, i, numElem, 1); - - numElem2 = numElem3 = 1; - - if (idx == ARRAY_1 ) { - storageType = _STORAGE_SIZE1(pTable[tableIdx][i].fieldStorageSize1, - pTable[tableIdx][i].fieldStorageType); - numElem = getNumElemOutOfStorageSize(storageType, - pTable[tableIdx][i].fieldStorageSize1, 1); - } - else if (idx == ARRAY_2) { - storageType = _STORAGE_SIZE1(pTable[tableIdx][i].fieldStorageSize1, - pTable[tableIdx][i].fieldStorageType); - - numElem = getNumElemOutOfStorageSize(storageType, - pTable[tableIdx][i].fieldStorageSize1, 1); - - storageType = _STORAGE_SIZE2(pTable[tableIdx][i].fieldStorageSize2, - pTable[tableIdx][i].fieldStorageType); - - numElem2 = getNumElemOutOfStorageSize(storageType, - pTable[tableIdx][i].fieldStorageSize2, 1); - } - else if (idx == ARRAY_3) { - storageType = _STORAGE_SIZE1(pTable[tableIdx][i].fieldStorageSize1, - pTable[tableIdx][i].fieldStorageType); - - numElem = getNumElemOutOfStorageSize(storageType, - pTable[tableIdx][i].fieldStorageSize1, 1); - - storageType = _STORAGE_SIZE2(pTable[tableIdx][i].fieldStorageSize2, - pTable[tableIdx][i].fieldStorageType); - - numElem2 = getNumElemOutOfStorageSize(storageType, - pTable[tableIdx][i].fieldStorageSize2, 1); - - storageType = _STORAGE_SIZE3(pTable[tableIdx][i].fieldStorageSize3, - pTable[tableIdx][i].fieldStorageType); - - numElem3 = getNumElemOutOfStorageSize(storageType, - pTable[tableIdx][i].fieldStorageSize3, 1); - } - - if (_OFFSET_NOT_SET != pTable[tableIdx][i].offset) { - parseSubDataTableAndCopy(tableIdx, numElem, numElem2, numElem3, i, - pStream, pos, addOffset, tableBaseOffset, 0); - } - else { - *pos += fieldCount; - } - } -} - -static void getBasicDataSize(_NV_TEMPLATE_TABLE *pTableEntry) -{ - int numElem, sizeOneElem, totalSize; - int idx, idx1; - - // number of element - idx = _STORAGE_TYPE(pTableEntry->fieldStorageType); - numElem = numElemBasedOnStorageType[idx](pTableEntry, 1); - - // size of each element - idx1 = pTableEntry->fieldId & FIELD_ID_TABLE_OR_ENUM_IDX_MASK; - sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[idx1]; - - // total size in bytes - totalSize = numElem * sizeOneElem; - - // all done, update global - subTableSize += totalSize; - - return; -} - -static int numElemSingular(_NV_TEMPLATE_TABLE *pTableEntry, int unused) -{ - return 1; -} - -static int getNumElemOutOfStorageSize(int fieldStorageSize, - uint8 fieldStorageSizeLowByte, int nvBin) -{ - int ret = 0; - if (IsFieldSizeInt(fieldStorageSizeLowByte)) { - return fieldStorageSize; - } - else { - int maxEnumVal=0, i; - _NV_TEMPLATE_ENUM (*pEnum)[ENUM_ENTRIES_MAX]; - int enumIdx = ((fieldStorageSizeLowByte & - FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB); - - if (nvBin) { - pEnum = NvEnumsFromBin; - } - else { - pEnum = NvEnumsBuiltIn; - } - - for (i = 0; i < ENUM_ENTRIES_MAX; i++) { - if (nul == pEnum[enumIdx][i].enumName[0]) { - if ( i == 0 ) { - maxEnumVal = 0; - } - else { - maxEnumVal = pEnum[enumIdx][i-1].enumValue; - } - break; - } - } - ret = (maxEnumVal + 1); - return ret; // +1 to count for 0 to maxEnumVal - } -} - -static int numElemArray1(_NV_TEMPLATE_TABLE *pTableEntry, int nvBin) -{ - int fieldStorageSize = 0; - - fieldStorageSize = getNumElemOutOfStorageSize(_STORAGE_SIZE1( - pTableEntry->fieldStorageSize1, pTableEntry->fieldStorageType), - pTableEntry->fieldStorageSize1, nvBin); - - return fieldStorageSize; -} - -static int numElemArray2(_NV_TEMPLATE_TABLE *pTableEntry, int nvBin) -{ - int fieldStorageSize1,fieldStorageSize2,fieldStorageSize; - - fieldStorageSize1 = getNumElemOutOfStorageSize(_STORAGE_SIZE1( - pTableEntry->fieldStorageSize1, - pTableEntry->fieldStorageType), - pTableEntry->fieldStorageSize1, nvBin); - - fieldStorageSize2 = getNumElemOutOfStorageSize(_STORAGE_SIZE2( - pTableEntry->fieldStorageSize2, - pTableEntry->fieldStorageType), - pTableEntry->fieldStorageSize2, nvBin); - - fieldStorageSize = fieldStorageSize1 * fieldStorageSize2; - - return fieldStorageSize; -} - -static int numElemArray3(_NV_TEMPLATE_TABLE *pTableEntry, int nvBin) -{ - int fieldStorageSize1,fieldStorageSize2,fieldStorageSize3,fieldStorageSize; - - fieldStorageSize1 = getNumElemOutOfStorageSize(_STORAGE_SIZE1( - pTableEntry->fieldStorageSize1, - pTableEntry->fieldStorageType), - pTableEntry->fieldStorageSize1, nvBin); - - fieldStorageSize2 = getNumElemOutOfStorageSize(_STORAGE_SIZE2( - pTableEntry->fieldStorageSize2, - pTableEntry->fieldStorageType), - pTableEntry->fieldStorageSize2, nvBin); - - fieldStorageSize3 = getNumElemOutOfStorageSize(_STORAGE_SIZE3( - pTableEntry->fieldStorageSize3, - pTableEntry->fieldStorageType), - pTableEntry->fieldStorageSize3, nvBin); - - fieldStorageSize = fieldStorageSize1 * fieldStorageSize2 * fieldStorageSize3; - - return fieldStorageSize; -} diff --git a/CORE/VOSS/src/wlan_nv_stream_read.c b/CORE/VOSS/src/wlan_nv_stream_read.c deleted file mode 100644 index 54a5268905ef..000000000000 --- a/CORE/VOSS/src/wlan_nv_stream_read.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/*=========================================================================== - EDIT HISTORY FOR FILE - - This section contains comments describing changes made to the module. - Notice that changes are listed in reverse chronological order. - - $Header:$ $DateTime: $ $Author: $ - - when who what, where, why - -------- --- -------------------------------------------------------- - 04/10/13 kumarpra nv stream layer creation -===========================================================================*/ - -#include "wlan_nv_stream.h" - -_STREAM_BUF streamBuf; - -static tANI_U32 deCodeData(tANI_U8 *ipdata, tANI_U32 length, tANI_U8 *opdata, - tANI_U32 *currentIndex); - -/*---------------------------------------------------------------------------- - \brief initReadStream() - stream Initialization - This function will initialize stream read - \param readBuf, length - ptr to read Buffer, number of bytes - \return success on init - \sa ---------------------------------------------------------------------------*/ -_STREAM_RC initReadStream(tANI_U8 *readBuf, tANI_U32 length) -{ - _STREAM_RC rc = RC_SUCCESS; - streamBuf.currentIndex = 0; - streamBuf.totalLength = 0; - streamBuf.totalLength = length; - streamBuf.dataBuf = (_NV_STREAM_BUF *)&readBuf[0]; - return rc; -} - -/*---------------------------------------------------------------------------- - \brief nextStream() - get next Stream in buffer - This function will provide next stream in the buffere initalized - \param readBuf, length - ptr to stream length, stream data - \return success when stream length is non-zero else error - \sa ---------------------------------------------------------------------------*/ - -_STREAM_RC nextStream(tANI_U32 *length, tANI_U8 *dataBuf) -{ - _STREAM_RC rc = RC_SUCCESS; - - if (streamBuf.currentIndex >= streamBuf.totalLength) - { - *length = 0; - } - else - { - *length = deCodeData(&streamBuf.dataBuf[streamBuf.currentIndex], - (streamBuf.totalLength - streamBuf.currentIndex), dataBuf, - &streamBuf.currentIndex); - } - - if (*length == 0) - { - rc = RC_FAIL; - } - - return rc; -} - -/*---------------------------------------------------------------------------- - \brief decodeData() - decode the input data - This function will decode stream read - \param readBuf, length - ptr to input stream, length, output stream data, - \index pointer - \return success when stream length is non-zero else error - \sa ---------------------------------------------------------------------------*/ - -tANI_U32 deCodeData(tANI_U8 *ipdata, tANI_U32 length, tANI_U8 *opdata, - tANI_U32 *currentIndex) -{ - tANI_U16 oplength = 0; - - oplength = ipdata[0]; - oplength = oplength | (ipdata[1] << 8); - - memcpy(opdata, &ipdata[sizeof(tANI_U16)], oplength); - - *currentIndex = *currentIndex + sizeof(tANI_U16) + oplength; - - return oplength; -} diff --git a/CORE/VOSS/src/wlan_nv_template_builtin.c b/CORE/VOSS/src/wlan_nv_template_builtin.c deleted file mode 100644 index ba03acf342b2..000000000000 --- a/CORE/VOSS/src/wlan_nv_template_builtin.c +++ /dev/null @@ -1,831 +0,0 @@ -/* - * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - - -/*=========================================================================== - EDIT HISTORY FOR FILE - - This section contains comments describing changes made to the module. - Notice that changes are listed in reverse chronological order. - - $Header:$ $DateTime: $ $Author: $ - - when who what, where, why - -------- --- ----------------------------------------------- - 04/10/13 kumarpra nv built in creation -===========================================================================*/ - - -/* - ----------------------------------------- - This file is generated by nvTmplRun Parser - ----------------------------------------- - To be auto-generated, or - This is the source file and the header file can be generated from this - template file. - - Template constructs - 1. TABLE_: struct - 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M} - 3. INDEX_INT: int, e.g.{min, max, increment} - 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32 - 4. Storage types: - 4.1 SINGULAR: one element of basic data type - 4.2 ARRAY_1: one dimensional array, x-axis - 4.3 ARRAY_2: two dimensional array, (x, y) - 4.4 ARRAY_3: three dimensional array, (x, y, z) - 4.5 ARRAY_4: four dimensional array, (x, y, z, t) - - Implementation notes - 1. Flow of changing NV data format: (TBD) Either change the template and - generate the header file, or modify header file and auto-generate - the template. - 2. Flow of writing NV data: encode the template in the data stream, so the - NV data is "self-sufficient". No separate template, no compability - issue, no need of version control. - 3. Flow of reading NV data: parse the binary NV data stream based on the - template info in the data stream. - 4. The above NV logic is decoupled from the actual data content, a generic, - content ergonostic parser (reading) and encoder (writing). - The NV logic is common code shared by tools, s/w - (both host and firmware), and off-line utilities. - 5. NV data parsing and "acceptanace" into an s/w moduel data structure can - be "configured" in several ways: - 5.1 only total matching of all fields, otherwise, reject the whole data - stream (a table). - 5.2 partial matching of fields allowed and the rest fields assume - reasonal default values, - The choice can be determined later, but the capability is provided. - 6. We could also design in this selection on an individual table base. - To design such capability, reserve some header bits in the data stream. - 7. The NV data streams can be modified, replaced, or intact with a new data - stream of the same table ID added to NV data. - The choice can be determined later, but the NV scheme provides such - capability. - 8. The template construct definitions can be common to all tables - (tbd: in a common section) or table specific, or updated in a - subsequent format section. - The use cases are: - - An index enum (e.g. RF channels) is common to all tables when the NV - data is created. Later new enums are added (e.g. - additional channels), one can choose to add the new index enum for new - tables appended to the NV data, or replace the - old table with new template info and data. - The template precedence is table specific then common, and later - "common" overwrites "earlier" commmon. - - A new field is added to the table, the user decides to replace the - old table data, he can simply encode the template info in the - data stream. - - In the same scenario (a new field is added), the user decides to - append a new table, he can encode the template - in the new data table and append it to NV data, or write a new common - template section and append the data. - - Key "ingredients", (re-iterate the most important features and capabilities) - 1. How to parse the data is embedded in the NV data itself. It removes the - dependency on header file matching, - version checking, compatibility among tools, host and firmware. - 2. Table field ID enables "partial" data acceptance in an s/w module data - structure. Whether full matching or reject the whole table, or "partial" - acceptance, the capabiilty is in place and further ensures the robust - NV data extensibility and compatibility. - 3. The table granularity, data stream based NV data has variable length - and flexibility of modifying an existing table data, replacing the - whole data, or leaving the existing data table intact and appending - a new table. - Misc notes: - 1. For endianness, support only 4 bytes integer or 4 1-byte - 2. String identifier needs to be shortened to save storage - 3. string_field_name, field type, field storage class, storage size -*/ - - -#include "wlan_nv_types.h" -#include "wlan_nv_stream.h" -#include "wlan_nv.h" -#include "wlan_nv_template_internal.h" -#include "wlan_nv_template_api.h" -#include "wlan_nv_template_builtin.h" - - - -static int enumNoOfFieldArray[INDEX_ENUM_BUILTIN_MAX] = - {7,1,9,5,80,14,3,55}; - -_NV_TEMPLATE_ENUM NvEnumsBuiltIn[/*INDEX_ENUM_MAX*/][ENUM_ENTRIES_MAX] = { - { // INDEX_ENUM_ALL - {"j1",INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS,0,{nul}}, - {"j2",INDEX_ENUM_NUM_REG_DOMAINS,0,{nul}}, - {"j3",INDEX_ENUM_NUM_RF_SUBBANDS,0,{nul}}, - {"j4",INDEX_ENUM_NUM_RF_CHANNELS,0,{nul}}, - {"j5",INDEX_ENUM_NUM_2_4GHZ_CHANNELS,0,{nul}}, - {"j6",INDEX_ENUM_NUM_802_11_MODES,0,{nul}}, - {"j7",INDEX_ENUM_NUM_HAL_PHY_RATES,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_ALL - - { // INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS - {"a1",PHY_TX_CHAIN_0,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS - - { // INDEX_ENUM_NUM_REG_DOMAINS - {"a3",REG_DOMAIN_FCC,0,{nul}}, - {"a4",REG_DOMAIN_ETSI,0,{nul}}, - {"a5",REG_DOMAIN_JAPAN,0,{nul}}, - {"a6",REG_DOMAIN_WORLD,0,{nul}}, - {"a7",REG_DOMAIN_N_AMER_EXC_FCC,0,{nul}}, - {"a8",REG_DOMAIN_APAC,0,{nul}}, - {"a9",REG_DOMAIN_KOREA,0,{nul}}, - {"ba",REG_DOMAIN_HI_5GHZ,0,{nul}}, - {"bb",REG_DOMAIN_NO_5GHZ,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_REG_DOMAINS - - { // INDEX_ENUM_NUM_RF_SUBBANDS - {"bd",RF_SUBBAND_2_4_GHZ,0,{nul}}, - {"be",RF_SUBBAND_5_LOW_GHZ,0,{nul}}, - {"bf",RF_SUBBAND_5_MID_GHZ,0,{nul}}, - {"bg",RF_SUBBAND_5_HIGH_GHZ,0,{nul}}, - {"bh",RF_SUBBAND_4_9_GHZ,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_RF_SUBBANDS - - { // INDEX_ENUM_NUM_RF_CHANNELS - {"bj",RF_CHAN_1,0,{nul}}, - {"bk",RF_CHAN_2,0,{nul}}, - {"bl",RF_CHAN_3,0,{nul}}, - {"bm",RF_CHAN_4,0,{nul}}, - {"bn",RF_CHAN_5,0,{nul}}, - {"bo",RF_CHAN_6,0,{nul}}, - {"bp",RF_CHAN_7,0,{nul}}, - {"bq",RF_CHAN_8,0,{nul}}, - {"br",RF_CHAN_9,0,{nul}}, - {"bs",RF_CHAN_10,0,{nul}}, - {"bt",RF_CHAN_11,0,{nul}}, - {"bu",RF_CHAN_12,0,{nul}}, - {"bv",RF_CHAN_13,0,{nul}}, - {"bw",RF_CHAN_14,0,{nul}}, - {"bx",RF_CHAN_240,0,{nul}}, - {"by",RF_CHAN_244,0,{nul}}, - {"bz",RF_CHAN_248,0,{nul}}, - {"b0",RF_CHAN_252,0,{nul}}, - {"b1",RF_CHAN_208,0,{nul}}, - {"b2",RF_CHAN_212,0,{nul}}, - {"b3",RF_CHAN_216,0,{nul}}, - {"b4",RF_CHAN_36,0,{nul}}, - {"b5",RF_CHAN_40,0,{nul}}, - {"b6",RF_CHAN_44,0,{nul}}, - {"b7",RF_CHAN_48,0,{nul}}, - {"b8",RF_CHAN_52,0,{nul}}, - {"b9",RF_CHAN_56,0,{nul}}, - {"ca",RF_CHAN_60,0,{nul}}, - {"cb",RF_CHAN_64,0,{nul}}, - {"cc",RF_CHAN_100,0,{nul}}, - {"cd",RF_CHAN_104,0,{nul}}, - {"ce",RF_CHAN_108,0,{nul}}, - {"cf",RF_CHAN_112,0,{nul}}, - {"cg",RF_CHAN_116,0,{nul}}, - {"ch",RF_CHAN_120,0,{nul}}, - {"ci",RF_CHAN_124,0,{nul}}, - {"cj",RF_CHAN_128,0,{nul}}, - {"ck",RF_CHAN_132,0,{nul}}, - {"cl",RF_CHAN_136,0,{nul}}, - {"cm",RF_CHAN_140,0,{nul}}, - {"cn",RF_CHAN_149,0,{nul}}, - {"co",RF_CHAN_153,0,{nul}}, - {"cp",RF_CHAN_157,0,{nul}}, - {"cq",RF_CHAN_161,0,{nul}}, - {"cr",RF_CHAN_165,0,{nul}}, - {"cs",RF_CHAN_BOND_3,0,{nul}}, - {"ct",RF_CHAN_BOND_4,0,{nul}}, - {"cu",RF_CHAN_BOND_5,0,{nul}}, - {"cv",RF_CHAN_BOND_6,0,{nul}}, - {"cw",RF_CHAN_BOND_7,0,{nul}}, - {"cx",RF_CHAN_BOND_8,0,{nul}}, - {"cy",RF_CHAN_BOND_9,0,{nul}}, - {"cz",RF_CHAN_BOND_10,0,{nul}}, - {"c0",RF_CHAN_BOND_11,0,{nul}}, - {"c1",RF_CHAN_BOND_242,0,{nul}}, - {"c2",RF_CHAN_BOND_246,0,{nul}}, - {"c3",RF_CHAN_BOND_250,0,{nul}}, - {"c4",RF_CHAN_BOND_210,0,{nul}}, - {"c5",RF_CHAN_BOND_214,0,{nul}}, - {"c6",RF_CHAN_BOND_38,0,{nul}}, - {"c7",RF_CHAN_BOND_42,0,{nul}}, - {"c8",RF_CHAN_BOND_46,0,{nul}}, - {"c9",RF_CHAN_BOND_50,0,{nul}}, - {"da",RF_CHAN_BOND_54,0,{nul}}, - {"db",RF_CHAN_BOND_58,0,{nul}}, - {"dc",RF_CHAN_BOND_62,0,{nul}}, - {"dd",RF_CHAN_BOND_102,0,{nul}}, - {"de",RF_CHAN_BOND_106,0,{nul}}, - {"df",RF_CHAN_BOND_110,0,{nul}}, - {"dg",RF_CHAN_BOND_114,0,{nul}}, - {"dh",RF_CHAN_BOND_118,0,{nul}}, - {"di",RF_CHAN_BOND_122,0,{nul}}, - {"dj",RF_CHAN_BOND_126,0,{nul}}, - {"dk",RF_CHAN_BOND_130,0,{nul}}, - {"dl",RF_CHAN_BOND_134,0,{nul}}, - {"dm",RF_CHAN_BOND_138,0,{nul}}, - {"dn",RF_CHAN_BOND_151,0,{nul}}, - {"do",RF_CHAN_BOND_155,0,{nul}}, - {"dp",RF_CHAN_BOND_159,0,{nul}}, - {"dq",RF_CHAN_BOND_163,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_RF_CHANNELS - - { // INDEX_ENUM_NUM_2_4GHZ_CHANNELS - {"ke",RF_CHAN_1_1,0,{nul}}, - {"kf",RF_CHAN_2_1,0,{nul}}, - {"kg",RF_CHAN_3_1,0,{nul}}, - {"kh",RF_CHAN_4_1,0,{nul}}, - {"ki",RF_CHAN_5_1,0,{nul}}, - {"kj",RF_CHAN_6_1,0,{nul}}, - {"kk",RF_CHAN_7_1,0,{nul}}, - {"kl",RF_CHAN_8_1,0,{nul}}, - {"km",RF_CHAN_9_1,0,{nul}}, - {"kn",RF_CHAN_10_1,0,{nul}}, - {"ko",RF_CHAN_11_1,0,{nul}}, - {"kp",RF_CHAN_12_1,0,{nul}}, - {"kq",RF_CHAN_13_1,0,{nul}}, - {"kr",RF_CHAN_14_1,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_2_4GHZ_CHANNELS - - { // INDEX_ENUM_NUM_802_11_MODES - {"d6",MODE_802_11B,0,{nul}}, - {"d7",MODE_802_11AG,0,{nul}}, - {"d8",MODE_802_11N,0,{nul}}, - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_802_11_MODES - - { // INDEX_ENUM_NUM_HAL_PHY_RATES - {"ez",HAL_PHY_RATE_11B_LONG_1_MBPS,0,{nul}}, - {"e0",HAL_PHY_RATE_11B_LONG_2_MBPS,0,{nul}}, - {"e1",HAL_PHY_RATE_11B_LONG_5_5_MBPS,0,{nul}}, - {"e2",HAL_PHY_RATE_11B_LONG_11_MBPS,0,{nul}}, - {"e3",HAL_PHY_RATE_11B_SHORT_2_MBPS,0,{nul}}, - {"e4",HAL_PHY_RATE_11B_SHORT_5_5_MBPS,0,{nul}}, - {"e5",HAL_PHY_RATE_11B_SHORT_11_MBPS,0,{nul}}, - {"e6",HAL_PHY_RATE_11A_6_MBPS,0,{nul}}, - {"e7",HAL_PHY_RATE_11A_9_MBPS,0,{nul}}, - {"e8",HAL_PHY_RATE_11A_12_MBPS,0,{nul}}, - {"e9",HAL_PHY_RATE_11A_18_MBPS,0,{nul}}, - {"fa",HAL_PHY_RATE_11A_24_MBPS,0,{nul}}, - {"fb",HAL_PHY_RATE_11A_36_MBPS,0,{nul}}, - {"fc",HAL_PHY_RATE_11A_48_MBPS,0,{nul}}, - {"fd",HAL_PHY_RATE_11A_54_MBPS,0,{nul}}, - {"fe",HAL_PHY_RATE_11A_DUP_6_MBPS,0,{nul}}, - {"ff",HAL_PHY_RATE_11A_DUP_9_MBPS,0,{nul}}, - {"fg",HAL_PHY_RATE_11A_DUP_12_MBPS,0,{nul}}, - {"fh",HAL_PHY_RATE_11A_DUP_18_MBPS,0,{nul}}, - {"fi",HAL_PHY_RATE_11A_DUP_24_MBPS,0,{nul}}, - {"fj",HAL_PHY_RATE_11A_DUP_36_MBPS,0,{nul}}, - {"fk",HAL_PHY_RATE_11A_DUP_48_MBPS,0,{nul}}, - {"fl",HAL_PHY_RATE_11A_DUP_54_MBPS,0,{nul}}, - {"fm",HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,0,{nul}}, - {"fn",HAL_PHY_RATE_MCS_1NSS_13_MBPS,0,{nul}}, - {"fo",HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,0,{nul}}, - {"fp",HAL_PHY_RATE_MCS_1NSS_26_MBPS,0,{nul}}, - {"fq",HAL_PHY_RATE_MCS_1NSS_39_MBPS,0,{nul}}, - {"fr",HAL_PHY_RATE_MCS_1NSS_52_MBPS,0,{nul}}, - {"fs",HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,0,{nul}}, - {"ft",HAL_PHY_RATE_MCS_1NSS_65_MBPS,0,{nul}}, - {"fu",HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,0,{nul}}, - {"fv",HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,0,{nul}}, - {"fw",HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,0,{nul}}, - {"fx",HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,0,{nul}}, - {"fy",HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,0,{nul}}, - {"fz",HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,0,{nul}}, - {"f0",HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,0,{nul}}, - {"f1",HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,0,{nul}}, - {"f2",HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,0,{nul}}, - {"f3",HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,0,{nul}}, - {"f4",HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,0,{nul}}, - {"f5",HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,0,{nul}}, - {"f6",HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,0,{nul}}, - {"f7",HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,0,{nul}}, - {"f8",HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,0,{nul}}, - {"f9",HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,0,{nul}}, - {"ga",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,0,{nul}}, - {"gb",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,0,{nul}}, - {"gc",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,0,{nul}}, - {"gd",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,0,{nul}}, - {"ge",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,0,{nul}}, - {"gf",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,0,{nul}}, - {"gg",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,0,{nul}}, - {"gh",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,0,{nul}}, -#ifdef WLAN_FEATURE_11AC - {"gj",HAL_PHY_RATE_11AC_DUP_6_MBPS,0,{nul}}, - {"gk",HAL_PHY_RATE_11AC_DUP_9_MBPS,0,{nul}}, - {"gl",HAL_PHY_RATE_11AC_DUP_12_MBPS,0,{nul}}, - {"gm",HAL_PHY_RATE_11AC_DUP_18_MBPS,0,{nul}}, - {"gn",HAL_PHY_RATE_11AC_DUP_24_MBPS,0,{nul}}, - {"go",HAL_PHY_RATE_11AC_DUP_36_MBPS,0,{nul}}, - {"gp",HAL_PHY_RATE_11AC_DUP_48_MBPS,0,{nul}}, - {"gq",HAL_PHY_RATE_11AC_DUP_54_MBPS,0,{nul}}, - {"gr",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,0,{nul}}, - {"gs",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,0,{nul}}, - {"gt",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,0,{nul}}, - {"gu",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,0,{nul}}, - {"gv",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,0,{nul}}, - {"gw",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,0,{nul}}, - {"gx",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,0,{nul}}, - {"gy",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,0,{nul}}, - {"gz",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,0,{nul}}, -#ifdef WCN_PRONTO - {"j8",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,0,{nul}}, -#endif - {"g0",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,0,{nul}}, - {"g1",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,0,{nul}}, - {"g2",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,0,{nul}}, - {"g3",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,0,{nul}}, - {"g4",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,0,{nul}}, - {"g5",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,0,{nul}}, - {"g6",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,0,{nul}}, - {"g7",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,0,{nul}}, - {"g8",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,0,{nul}}, -#ifdef WCN_PRONTO - {"j9",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,0,{nul}}, -#endif - {"g9",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,0,{nul}}, - {"ha",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,0,{nul}}, - {"hb",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,0,{nul}}, - {"hc",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,0,{nul}}, - {"hd",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,0,{nul}}, - {"he",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,0,{nul}}, - {"hf",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,0,{nul}}, - {"hg",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,0,{nul}}, - {"hh",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,0,{nul}}, - {"hi",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,0,{nul}}, - {"hj",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,0,{nul}}, - {"hk",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,0,{nul}}, - {"hl",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,0,{nul}}, - {"hm",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,0,{nul}}, - {"hn",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,0,{nul}}, - {"ho",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,0,{nul}}, - {"hp",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,0,{nul}}, - {"hq",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,0,{nul}}, - {"hr",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,0,{nul}}, - {"hs",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,0,{nul}}, - {"ht",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,0,{nul}}, - {"hu",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,0,{nul}}, - {"hv",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,0,{nul}}, - {"hw",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,0,{nul}}, - {"hx",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,0,{nul}}, - {"hy",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,0,{nul}}, - {"hz",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,0,{nul}}, - {"h0",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,0,{nul}}, - {"h1",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,0,{nul}}, - {"h2",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,0,{nul}}, - {"h3",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,0,{nul}}, - {"h4",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,0,{nul}}, - {"h5",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,0,{nul}}, - {"h6",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,0,{nul}}, - {"h7",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,0,{nul}}, - {"h8",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,0,{nul}}, - {"h9",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,0,{nul}}, - {"ia",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,0,{nul}}, - {"ib",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,0,{nul}}, - {"ic",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,0,{nul}}, -#endif - {{nul},0, 0,{nul}}, - }, // INDEX_ENUM_NUM_HAL_PHY_RATES - - { //INDEX_ENUM_LAST - {{nul},0, 0,{nul}}, - }, //INDEX_ENUM_LAST -}; // END _NV_TEMPLATE_ENUM - - -int getEnumNoOfFields(int enumIdx){ -#ifdef WLAN_FEATURE_11AC - enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 17; -#ifdef WCN_PRONTO - enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 1; -#endif - enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 9; -#ifdef WCN_PRONTO - enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 1; -#endif - enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 40; -#endif - - return enumNoOfFieldArray[enumIdx]; -} - - -static int tableNoOfFieldArray[TABLE_BUILTIN_MAX] = - {14,12,2,2,16,1,2,2,23,1,1,1,4,2,13}; - -_NV_TEMPLATE_TABLE NvTablesBuiltIn[/*TABLES_MAX*/][TABLE_ENTRIES_MAX] = { - { // TABLE_sHalNv - {"jz",_TABLE_IDX(TABLE_sNvFields),SINGULAR,0,0,0, - ((char *)&(nvDefaults.fields) - (char *)&nvDefaults),"fields"}, - {"jm",_TABLE_IDX(TABLE_tRateGroupPwr),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0, - ((char *)&(nvDefaults.tables.pwrOptimum[0]) - (char *)&nvDefaults.tables), - "pwrOptimum"}, - {"dx",_TABLE_IDX(TABLE_sRegulatoryChannel),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0].channels[0]) - - (char *)&nvDefaults.tables.regDomains[0]),"channels"}, - {"jn",_TABLE_IDX(TABLE_sRegulatoryDomains),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_REG_DOMAINS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0]) - (char *)&nvDefaults.tables), - "regDomains"}, - {"jo",_TABLE_IDX(TABLE_sDefaultCountry),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.defaultCountryTable) - - (char *)&nvDefaults.tables),"defaultCountryTable"}, - {"jp",_TABLE_IDX(TABLE_tTpcPowerTable),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.plutCharacterized[0]) - - (char *)&nvDefaults.tables),"plutCharacterized"}, - {"jr",_TABLE_IDX(TABLE_tRateGroupPwrVR),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0, - ((char *)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) - - (char *)&nvDefaults.tables),"pwrOptimum_virtualRate"}, - {"js",_TABLE_IDX(TABLE_sFwConfig),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig) - (char *)&nvDefaults.tables), - "fwConfig"}, - {"jt",_TABLE_IDX(TABLE_sRssiChannelOffsets),(_ADD_SIZE1(2)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|(FIELD_SIZE_VALUE_BITS(2))), - 0,0,((char *)&(nvDefaults.tables.rssiChanOffsets[0]) - - (char *)&nvDefaults.tables),"rssiChanOffsets"}, - {"er",_TABLE_IDX(TABLE_sCalData),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData) - - (char *)&nvDefaults.tables.hwCalValues),"calData"}, - {"ju",_TABLE_IDX(TABLE_sHwCalValues),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues) - (char *)&nvDefaults.tables), - "hwCalValues"}, - {"jx",_TABLE_IDX(TABLE_sOfdmCmdPwrOffset),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset) - (char *)&nvDefaults.tables), - "ofdmCmdPwrOffset"}, - {"jy",_TABLE_IDX(TABLE_sTxBbFilterMode),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.txbbFilterMode) - (char *)&nvDefaults.tables), - "txbbFilterMode"}, - {"j0",_TABLE_IDX(TABLE_sNvTables),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables) - (char *)&nvDefaults),"tables"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sHalNv - - { // TABLE_sNvFields - {"ap",_ID_U16,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.productId) - - (char *)&nvDefaults.fields),"productId"}, - {"aq",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.productBands) - - (char *)&nvDefaults.fields),"productBands"}, - {"ar",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.wlanNvRevId) - - (char *)&nvDefaults.fields),"wlanNvRevId"}, - {"as",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.numOfTxChains) - - (char *)&nvDefaults.fields),"numOfTxChains"}, - {"at",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.numOfRxChains) - - (char *)&nvDefaults.fields),"numOfRxChains"}, - {"au",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0, - ((char *)&(nvDefaults.fields.macAddr[0]) - (char *)&nvDefaults.fields), - "macAddr"}, - {"av",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0, - ((char *)&(nvDefaults.fields.macAddr2[0]) - (char *)&nvDefaults.fields), - "macAddr2"}, - {"aw",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0, - ((char *)&(nvDefaults.fields.macAddr3[0]) - (char *)&nvDefaults.fields), - "macAddr3"}, - {"ax",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0, - ((char *)&(nvDefaults.fields.macAddr4[0]) - (char *)&nvDefaults.fields), - "macAddr4"}, - {"ay",_ID_U8,(_ADD_SIZE1(NV_FIELD_MFG_SN_SIZE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NV_FIELD_MFG_SN_SIZE))),0,0, - ((char *)&(nvDefaults.fields.mfgSN[0]) - (char *)&nvDefaults.fields),"mfgSN"} - , - {"az",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.couplerType) - - (char *)&nvDefaults.fields),"couplerType"}, - {"a0",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.nvVersion) - - (char *)&nvDefaults.fields),"nvVersion"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sNvFields - - { // TABLE_sRegulatoryChannel - {"dv",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.regDomains[0].channels[0].enabled) - - (char *)&nvDefaults.tables.regDomains[0].channels[0]),"enabled"}, - {"dw",_ID_S8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.regDomains[0].channels[0].pwrLimit) - - (char *)&nvDefaults.tables.regDomains[0].channels[0]),"pwrLimit"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sRegulatoryChannel - - { // TABLE_sRssiChannelOffsets - {"d1",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.rssiChanOffsets[0].bRssiOffset[0]) - - (char *)&nvDefaults.tables.rssiChanOffsets[0]),"bRssiOffset"}, - {"d2",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.rssiChanOffsets[0].gnRssiOffset[0]) - - (char *)&nvDefaults.tables.rssiChanOffsets[0]),"gnRssiOffset"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sRssiChannelOffsets - - { // TABLE_sCalData - {"ea",_ID_U16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHd2G) - - (char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHd2G"}, - {"eb",_ID_U16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHd5G) - - (char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHd5G"}, - {"ec",_ID_U16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) - - (char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHdxLNA5G"}, - {"ed",_ID_U8,SINGULAR,0,0,0, - (((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) + - sizeof(uint16)) - (char *)&nvDefaults.tables.hwCalValues.calData), - "nv_TxBBFSel9MHz"}, - {"ee",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam2) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam2"}, - {"ef",_ID_U16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.custom_tcxo_reg8) - - (char *)&nvDefaults.tables.hwCalValues.calData),"custom_tcxo_reg8"}, - {"eg",_ID_U16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.custom_tcxo_reg9) - - (char *)&nvDefaults.tables.hwCalValues.calData),"custom_tcxo_reg9"}, - {"eh",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam3) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam3"}, - {"ei",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam4) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam4"}, - {"ej",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam5) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam5"}, - {"ek",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam6) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam6"}, - {"el",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam7) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam7"}, - {"em",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam8) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam8"}, - {"en",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam9) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam9"}, - {"eo",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam10) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam10"}, - {"ep",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam11) - - (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam11"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sCalData - - { // TABLE_sTxBbFilterMode - {"es",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.txbbFilterMode.txFirFilterMode) - - (char *)&nvDefaults.tables.txbbFilterMode),"txFirFilterMode"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sTxBbFilterMode - - { // TABLE_sOfdmCmdPwrOffset - {"et",_ID_S16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset.ofdmPwrOffset) - - (char *)&nvDefaults.tables.ofdmCmdPwrOffset),"ofdmPwrOffset"}, - {"eu",_ID_S16,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset.rsvd) - - (char *)&nvDefaults.tables.ofdmCmdPwrOffset),"rsvd"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sOfdmCmdPwrOffset - - { // TABLE_sDefaultCountry - {"if",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.defaultCountryTable.regDomain) - - (char *)&nvDefaults.tables.defaultCountryTable),"regDomain"}, - {"ig",_ID_U8,(_ADD_SIZE1(NV_FIELD_COUNTRY_CODE_SIZE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NV_FIELD_COUNTRY_CODE_SIZE))),0,0, - ((char *)&(nvDefaults.tables.defaultCountryTable.countryCode[0]) - - (char *)&nvDefaults.tables.defaultCountryTable),"countryCode"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sDefaultCountry - - { // TABLE_sFwConfig - {"ih",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.skuID) - - (char *)&nvDefaults.tables.fwConfig),"skuID"}, - {"ii",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.tpcMode2G) - - (char *)&nvDefaults.tables.fwConfig),"tpcMode2G"}, - {"ij",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.tpcMode5G) - - (char *)&nvDefaults.tables.fwConfig),"tpcMode5G"}, - {"ik",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem1) - - (char *)&nvDefaults.tables.fwConfig),"configItem1"}, - {"il",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPA2G) - - (char *)&nvDefaults.tables.fwConfig),"xPA2G"}, - {"im",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPA5G) - - (char *)&nvDefaults.tables.fwConfig),"xPA5G"}, - {"in",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.extPaCtrl0Polarity) - - (char *)&nvDefaults.tables.fwConfig),"extPaCtrl0Polarity"}, - {"io",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.extPaCtrl1Polarity) - - (char *)&nvDefaults.tables.fwConfig),"extPaCtrl1Polarity"}, - {"ip",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xLNA2G) - - (char *)&nvDefaults.tables.fwConfig),"xLNA2G"}, - {"iq",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xLNA5G) - - (char *)&nvDefaults.tables.fwConfig),"xLNA5G"}, - {"ir",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xCoupler2G) - - (char *)&nvDefaults.tables.fwConfig),"xCoupler2G"}, - {"is",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xCoupler5G) - - (char *)&nvDefaults.tables.fwConfig),"xCoupler5G"}, - {"it",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPdet2G) - - (char *)&nvDefaults.tables.fwConfig),"xPdet2G"}, - {"iu",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPdet5G) - - (char *)&nvDefaults.tables.fwConfig),"xPdet5G"}, - {"iv",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.enableDPD2G) - - (char *)&nvDefaults.tables.fwConfig),"enableDPD2G"}, - {"iw",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.enableDPD5G) - - (char *)&nvDefaults.tables.fwConfig),"enableDPD5G"}, - {"ix",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect2G) - - (char *)&nvDefaults.tables.fwConfig),"pdadcSelect2G"}, - {"iy",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect5GLow) - - (char *)&nvDefaults.tables.fwConfig),"pdadcSelect5GLow"}, - {"iz",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect5GMid) - - (char *)&nvDefaults.tables.fwConfig),"pdadcSelect5GMid"}, - {"i0",_ID_U8,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect5GHigh) - - (char *)&nvDefaults.tables.fwConfig),"pdadcSelect5GHigh"}, - {"i1",_ID_U32,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem2) - - (char *)&nvDefaults.tables.fwConfig),"configItem2"}, - {"i2",_ID_U32,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem3) - - (char *)&nvDefaults.tables.fwConfig),"configItem3"}, - {"i3",_ID_U32,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem4) - - (char *)&nvDefaults.tables.fwConfig),"configItem4"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sFwConfig - - { // TABLE_tTpcPowerTable - {"kc",_ID_U8,(_ADD_SIZE2(TPC_MEM_POWER_LUT_DEPTH)|ARRAY_2), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS))), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(TPC_MEM_POWER_LUT_DEPTH))),0, - ((char *)&(nvDefaults.tables.plutCharacterized[0]) - - (char *)&nvDefaults.tables.plutCharacterized[0]),"tTpcPowerTable"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_tTpcPowerTable - - { // TABLE_tRateGroupPwr - {"kb",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_HAL_PHY_RATES))),0,0, - ((char *)&(nvDefaults.tables.pwrOptimum[0]) - - (char *)&nvDefaults.tables.pwrOptimum[0]),"tRateGroupPwr"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_tRateGroupPwr - - { // TABLE_tRateGroupPwrVR - {"kd",_ID_U32,(_ADD_SIZE1(NUM_RF_VR_RATE)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))| - (FIELD_SIZE_VALUE_BITS(NUM_RF_VR_RATE))),0,0, - ((char *)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) - - (char *)&nvDefaults.tables.pwrOptimum_virtualRate[0]),"tRateGroupPwrVR"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_tRateGroupPwrVR - - { // TABLE_sRegulatoryDomains - {"dx",_TABLE_IDX(TABLE_sRegulatoryChannel),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0].channels[0]) - - (char *)&nvDefaults.tables.regDomains[0]),"channels"}, - {"dy",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0].antennaGain[0]) - - (char *)&nvDefaults.tables.regDomains[0]),"antennaGain"}, - {"dz",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_2_4GHZ_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0].bRatePowerOffset[0]) - - (char *)&nvDefaults.tables.regDomains[0]),"bRatePowerOffset"}, - {"d0",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0].gnRatePowerOffset[0]) - - (char *)&nvDefaults.tables.regDomains[0]),"gnRatePowerOffset"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sRegulatoryDomains - - { // TABLE_sHwCalValues - {"eq",_ID_U32,SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.validBmap) - - (char *)&nvDefaults.tables.hwCalValues),"validBmap"}, - {"er",_TABLE_IDX(TABLE_sCalData),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues.calData) - - (char *)&nvDefaults.tables.hwCalValues),"calData"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sHwCalValues - - { // TABLE_sNvTables - {"jm",_TABLE_IDX(TABLE_tRateGroupPwr),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0, - ((char *)&(nvDefaults.tables.pwrOptimum[0]) - (char *)&nvDefaults.tables), - "pwrOptimum"}, - {"jn",_TABLE_IDX(TABLE_sRegulatoryDomains),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_REG_DOMAINS))),0,0, - ((char *)&(nvDefaults.tables.regDomains[0]) - (char *)&nvDefaults.tables), - "regDomains"}, - {"jo",_TABLE_IDX(TABLE_sDefaultCountry),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.defaultCountryTable) - - (char *)&nvDefaults.tables),"defaultCountryTable"}, - {"jp",_TABLE_IDX(TABLE_tTpcPowerTable),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.plutCharacterized[0]) - - (char *)&nvDefaults.tables),"plutCharacterized"}, - {"jq",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.plutPdadcOffset[0]) - - (char *)&nvDefaults.tables),"plutPdadcOffset"}, - {"jr",_TABLE_IDX(TABLE_tRateGroupPwrVR),(ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0, - ((char *)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) - - (char *)&nvDefaults.tables),"pwrOptimum_virtualRate"}, - {"js",_TABLE_IDX(TABLE_sFwConfig),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.fwConfig) - (char *)&nvDefaults.tables), - "fwConfig"}, - {"jt",_TABLE_IDX(TABLE_sRssiChannelOffsets),(_ADD_SIZE1(2)|ARRAY_1), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|(FIELD_SIZE_VALUE_BITS(2))), - 0,0,((char *)&(nvDefaults.tables.rssiChanOffsets[0]) - - (char *)&nvDefaults.tables),"rssiChanOffsets"}, - {"ju",_TABLE_IDX(TABLE_sHwCalValues),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.hwCalValues) - (char *)&nvDefaults.tables), - "hwCalValues"}, - {"jv",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0, - ((char *)&(nvDefaults.tables.antennaPathLoss[0]) - - (char *)&nvDefaults.tables),"antennaPathLoss"}, - {"jw",_ID_S16,(ARRAY_2),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_802_11_MODES))), - ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))| - (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0, - ((char *)&(nvDefaults.tables.pktTypePwrLimits[0][0]) - - (char *)&nvDefaults.tables),"pktTypePwrLimits"}, - {"jx",_TABLE_IDX(TABLE_sOfdmCmdPwrOffset),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset) - (char *)&nvDefaults.tables), - "ofdmCmdPwrOffset"}, - {"jy",_TABLE_IDX(TABLE_sTxBbFilterMode),SINGULAR,0,0,0, - ((char *)&(nvDefaults.tables.txbbFilterMode) - (char *)&nvDefaults.tables), - "txbbFilterMode"}, - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, // TABLE_sNvTables - - { //INDEX_TABLE_LAST - {{nul}, 0, 0, 0, 0, 0, 0,{nul}}, - }, //INDEX_TABLE_LAST -}; // END _NV_TEMPLATE_TABLE - -int getTableNoOfFields(int tblIdx) -{ - return tableNoOfFieldArray[tblIdx]; -} diff --git a/CORE/WDA/src/wlan_nv.c b/CORE/WDA/src/wlan_nv.c deleted file mode 100644 index c7a063f6bfd3..000000000000 --- a/CORE/WDA/src/wlan_nv.c +++ /dev/null @@ -1,5376 +0,0 @@ -/* - * Copyright (c) 2012 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/** ------------------------------------------------------------------------- * - ------------------------------------------------------------------------- * - - - \file wlan_nv.c - - \brief Contains collection of table default values to use in - case a table is not found in NV - - $Id$ - - ========================================================================== */ - -#ifndef WLAN_NV_C -#define WLAN_NV_C - -#include "palTypes.h" -#include "wlan_nv.h" -//#include "wlan_hal_msg.h" - -const sHalNv nvDefaults = -{ - { - 0, // tANI_U16 productId; - 1, // tANI_U8 productBands; - 2, // tANI_U8 wlanNvRevId; //0: WCN1312, 1: WCN1314, 2: WCN3660 - 1, // tANI_U8 numOfTxChains; - 1, // tANI_U8 numOfRxChains; - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE]; - { "\0" }, - 0, // tANI_U8 couplerType; - WLAN_NV_VERSION, // tANI_U8 nvVersion; - }, //fields - - { - // NV_TABLE_RATE_POWER_SETTINGS - { - // typedef tANI_S16 tPowerdBm; - //typedef tPowerdBm tRateGroupPwr[NUM_HAL_PHY_RATES]; - //tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; - //2.4G - { - //802.11b Rates - {1900}, // HAL_PHY_RATE_11B_LONG_1_MBPS, - {1900}, // HAL_PHY_RATE_11B_LONG_2_MBPS, - {1900}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS, - {1900}, // HAL_PHY_RATE_11B_LONG_11_MBPS, - {1900}, // HAL_PHY_RATE_11B_SHORT_2_MBPS, - {1900}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS, - {1900}, // HAL_PHY_RATE_11B_SHORT_11_MBPS, - - //11A 20MHz Rates - {1700}, // HAL_PHY_RATE_11A_6_MBPS, - {1700}, // HAL_PHY_RATE_11A_9_MBPS, - {1700}, // HAL_PHY_RATE_11A_12_MBPS, - {1650}, // HAL_PHY_RATE_11A_18_MBPS, - {1600}, // HAL_PHY_RATE_11A_24_MBPS, - {1550}, // HAL_PHY_RATE_11A_36_MBPS, - {1550}, // HAL_PHY_RATE_11A_48_MBPS, - {1550}, // HAL_PHY_RATE_11A_54_MBPS, - - //DUP 11A 40MHz Rates - {1700}, // HAL_PHY_RATE_11A_DUP_6_MBPS, - {1700}, // HAL_PHY_RATE_11A_DUP_9_MBPS, - {1700}, // HAL_PHY_RATE_11A_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_24_MBPS, - {1550}, // HAL_PHY_RATE_11A_DUP_36_MBPS, - {1550}, // HAL_PHY_RATE_11A_DUP_48_MBPS, - {1500}, // HAL_PHY_RATE_11A_DUP_54_MBPS, - - //MCS Index #0-7(20/40MHz) - {1700}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS, - {1700}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS, - {1650}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS, - {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS, - {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS, - {1650}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS, - - //MCS Index #8-15(20/40MHz) - {1700}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS, - {1700}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS, - {1650}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS, - {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS, - {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS, - {1650}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS, - -#ifdef WLAN_FEATURE_11AC - //11AC rates - //11A duplicate 80MHz Rates - {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS, - {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS, - {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS, - - //11ac 20MHZ NG, SG - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS, -#ifdef WCN_PRONTO - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS, -#endif - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS, - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS, -#ifdef WCN_PRONTO - {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS, -#endif - - //11ac 40MHZ NG, SG - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS, - {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS, - - //11ac 80MHZ NG, SG - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS, - {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS, -#endif - }, // RF_SUBBAND_2_4_GHZ - // 5G Low - { - //802.11b Rates - {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS, - - ///11A 20MHz Rates - {1600}, // HAL_PHY_RATE_11A_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_12_MBPS, - {1550}, // HAL_PHY_RATE_11A_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_54_MBPS, - - ///DUP 11A 40MHz Rates - {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS, - - ///MCS Index #0-7(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS, - {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS, - - ///MCS Index #8-15(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS, - -#ifdef WLAN_FEATUURE_11AC - ///11AC rates - ///11A duplicate 80MHz Rates - {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS, - {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS, - {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS, - - ///11ac 20MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS, -#endif - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS, -#endif - //11ac 40MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS, - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS, - - - //11ac 80MHZ NG, SG - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS, - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS, -#endif - }, // RF_SUBBAND_5_LOW_GHZ - // 5G Mid - { - //802.11b Rates - {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS, - - ///11A 20MHz Rates - {1600}, // HAL_PHY_RATE_11A_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_12_MBPS, - {1550}, // HAL_PHY_RATE_11A_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_54_MBPS, - - ///DU P 11A 40MHz Rates - {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS, - - ///MCSS Index #0-7(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS, - {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS, - - ///MCSS Index #8-15(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS, - -#ifdef WLAN_FEATUURE_111AC - ///11CAC rates - ///11Ad duplicate 80MHz Rates - {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS, - {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS, - {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS, - - ///11a c 20MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS, -#endif - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS, -#endif - //11ac 40MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS, - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS, - - - ///11a c 80MHZ NG, SG - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS, - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS, -#endif - }, // // RF_SUBBAND_5_MID_GHZ - // 5G High - { - //802.11b Rates - {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS, - - ///11A 20MHz Rates - {1600}, // HAL_PHY_RATE_11A_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_12_MBPS, - {1550}, // HAL_PHY_RATE_11A_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_54_MBPS, - - ///DU P 11A 40MHz Rates - {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS, - - ///MCSS Index #0-7(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS, - {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS, - - ///MCSS Index #8-15(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS, - -#ifdef WLAN_FEATUURE_11AC - ///11CAC rates - ///11Ad duplicate 80MHz Rates - {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS, - {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS, - {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS, - - ///11a c 20MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS, -#endif - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS, -#endif - //11ac 40MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS, - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS, - - - ///11a c 80MHZ NG, SG - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS, - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS, -#endif - }, // RF_SUBBAND_5_HIGH_GHZ, - // 4.9G - - { - //802.11b Rates - {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS, - {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS, - - ///11A 20MHz Rates - {1600}, // HAL_PHY_RATE_11A_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_12_MBPS, - {1550}, // HAL_PHY_RATE_11A_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_54_MBPS, - - ///DU P 11A 40MHz Rates - {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS, - {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS, - {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS, - {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS, - {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS, - - ///MCSS Index #0-7(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS, - {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS, - - ///MCSS Index #8-15(20/40MHz) - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS, - {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS, - {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS, - {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS, - {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS, - {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS, - {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS, - {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS, - -#ifdef WLAN_FEATUURE_11AC - ///11CAC rates - ///11Ad duplicate 80MHz Rates - {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS, - {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS, - {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS, - {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS, - {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS, - {1500,, // HAL_PHY_RATE_11AC_DUP_54_MBPS, - - ///11a c 20MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS, -#endif - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS, - {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS, - {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS, - {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS, - {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS, - {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS, - {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS, - { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS, -#ifdef WCN_PRONTO - { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS, -#endif - //11ac 40MHZ NG, SG - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS, - {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS, - {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS, - {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS, - {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS, - { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS, - { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS, - - - ///11a c 80MHZ NG, SG - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS, - {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS, - {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS, - {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS, - { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS, - { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS, -#endif - }, // RF_SUBBAND_4_9_GHZ - }, - - // NV_TABLE_REGULATORY_DOMAINS - { - // typedef struct - // { - // tANI_BOOLEAN enabled; - // tPowerdBm pwrLimit; - // }sRegulatoryChannel; - - // typedef struct - // { - // sRegulatoryChannel channels[NUM_RF_CHANNELS]; - // uAbsPwrPrecision antennaGain[NUM_RF_SUBBANDS]; - // uAbsPwrPrecision bRatePowerOffset[NUM_2_4GHZ_CHANNELS]; - // }sRegulatoryDomains; - - //sRegulatoryDomains regDomains[NUM_REG_DOMAINS]; - - - { // REG_DOMAIN_FCC start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_11, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_12, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_52, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_56, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_60, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DFS, 22}, //RF_CHAN_100, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_104, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_108, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_112, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_116, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_132, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_136, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_FCC end - - { // REG_DOMAIN_ETSI start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 19}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 19}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_48, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_52, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_56, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_60, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_100, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_104, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_108, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_112, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_116, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_132, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_136, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_149, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_153, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_157, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_161, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_ETSI end - - { // REG_DOMAIN_JAPAN start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_13, - {NV_CHANNEL_ENABLE, 18}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_52, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_56, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_60, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DFS, 22}, //RF_CHAN_100, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_104, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_108, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_112, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_116, - {NV_CHANNEL_DFS, 0}, //RF_CHAN_120, - {NV_CHANNEL_DFS, 0}, //RF_CHAN_124, - {NV_CHANNEL_DFS, 0}, //RF_CHAN_128, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_132, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_136, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_JAPAN end - - { // REG_DOMAIN_WORLD start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_52, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_56, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_60, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DFS, 22}, //RF_CHAN_100, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_104, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_108, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_112, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_116, - {NV_CHANNEL_DFS, 0}, //RF_CHAN_120, - {NV_CHANNEL_DFS, 0}, //RF_CHAN_124, - {NV_CHANNEL_DFS, 0}, //RF_CHAN_128, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_132, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_136, - {NV_CHANNEL_DFS, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_WORLD end - - { // REG_DOMAIN_N_AMER_EXC_FCC start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_11, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_12, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_N_AMER_EXC_FCC end - - { // REG_DOMAIN_APAC start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_APAC end - - { // REG_DOMAIN_KOREA start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_KOREA end - - { // REG_DOMAIN_HI_5GHZ start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band, none CB - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14, - - //4.9GHz Band, none CB - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212, - {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216, - - //5GHz Low & Mid U-NII Band, none CB - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44, - {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64, - - //5GHz Mid Band - ETSI, none CB - {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136, - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140, - - //5GHz High U-NII Band, none CB - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165, - - //2.4GHz Band, channel bonded channels - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7, - {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8, - {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10, - {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11, - - // 4.9GHz Band, channel bonded channels - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214, - - //5GHz Low & Mid U-NII Band, channel bonded channels - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42, - {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54, - {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58, - {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62, - - //5GHz Mid Band - ETSI, channel bonded channels - {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126 - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134 - {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138 - - //5GHz High U-NII Band, channel bonded channels - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155, - {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163 - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - }, // REG_DOMAIN_HI_5GHZ end - - { // REG_DOMAIN_NO_5GHZ start - { //sRegulatoryChannel start - //enabled, pwrLimit - //2.4GHz Band - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_1, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_2, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_3, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_4, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_5, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_6, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_7, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_8, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_9, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_10, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_11, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_12, - {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_13, - {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14, - }, //sRegulatoryChannel end - - { - { 0 }, // RF_SUBBAND_2_4_GHZ - {0}, // RF_SUBBAND_5_LOW_GHZ - {0}, // RF_SUBBAND_5_MID_GHZ - {0}, // RF_SUBBAND_5_HIGH_GHZ - {0} // RF_SUBBAND_4_9_GHZ - }, - - { // bRatePowerOffset start - //2.4GHz Band - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - }, // bRatePowerOffset end - - { // gnRatePowerOffset start - //apply to all 2.4 and 5G channels - { 0 }, //RF_CHAN_1, - { 0 }, //RF_CHAN_2, - { 0 }, //RF_CHAN_3, - { 0 }, //RF_CHAN_4, - { 0 }, //RF_CHAN_5, - { 0 }, //RF_CHAN_6, - { 0 }, //RF_CHAN_7, - { 0 }, //RF_CHAN_8, - { 0 }, //RF_CHAN_9, - { 0 }, //RF_CHAN_10, - { 0 }, //RF_CHAN_11, - { 0 }, //RF_CHAN_12, - { 0 }, //RF_CHAN_13, - { 0 }, //RF_CHAN_14, - } // gnRatePowerOffset end - } // REG_DOMAIN_NO_5GHZ end - }, - - // NV_TABLE_DEFAULT_COUNTRY - { - // typedef struct - // { - // tANI_U8 regDomain; //from eRegDomainId - // tANI_U8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier - // }sDefaultCountry; - - 0, // regDomain - { 'U', 'S', 'I' } // countryCode - }, - - //NV_TABLE_TPC_POWER_TABLE - { - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 53 , //7 - 55 , //8 - 56 , //9 - 58 , //10 - 59 , //11 - 60 , //12 - 62 , //13 - 63 , //14 - 64 , //15 - 65 , //16 - 67 , //17 - 68 , //18 - 69 , //19 - 70 , //20 - 71 , //21 - 72 , //22 - 73 , //23 - 74 , //24 - 75 , //25 - 75 , //26 - 76 , //27 - 77 , //28 - 78 , //29 - 78 , //30 - 79 , //31 - 80 , //32 - 81 , //33 - 82 , //34 - 82 , //35 - 83 , //36 - 83 , //37 - 84 , //38 - 85 , //39 - 86 , //40 - 86 , //41 - 87 , //42 - 88 , //43 - 89 , //44 - 89 , //45 - 90 , //46 - 91 , //47 - 91 , //48 - 92 , //49 - 92 , //50 - 93 , //51 - 93 , //52 - 94 , //53 - 94 , //54 - 95 , //55 - 95 , //56 - 95 , //57 - 96 , //58 - 96 , //59 - 97 , //60 - 97 , //61 - 98 , //62 - 98 , //63 - 98 , //64 - 99 , //65 - 99 , //66 - 99 , //67 - 100, //68 - 100, //69 - 100, //70 - 101, //71 - 101, //72 - 102, //73 - 102, //74 - 102, //75 - 102, //76 - 103, //77 - 103, //78 - 103, //79 - 103, //80 - 104, //81 - 104, //82 - 104, //83 - 104, //84 - 105, //85 - 105, //86 - 105, //87 - 105, //88 - 105, //89 - 106, //90 - 106, //91 - 106, //92 - 106, //93 - 106, //94 - 106, //95 - 106, //96 - 106, //97 - 106, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 106, //103 - 106, //104 - 106, //105 - 107, //106 - 107, //107 - 107, //108 - 107, //109 - 107, //110 - 107, //111 - 107, //112 - 107, //113 - 107, //114 - 107, //115 - 107, //116 - 107, //117 - 107, //118 - 107, //119 - 107, //120 - 107, //121 - 107, //122 - 107, //123 - 107, //124 - 107, //125 - 107, //126 - 107, //127 - 107, - } - }, //RF_CHAN_1 - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 52 , //7 - 54 , //8 - 56 , //9 - 57 , //10 - 59 , //11 - 60 , //12 - 61 , //13 - 62 , //14 - 64 , //15 - 65 , //16 - 66 , //17 - 67 , //18 - 68 , //19 - 69 , //20 - 70 , //21 - 71 , //22 - 72 , //23 - 73 , //24 - 74 , //25 - 75 , //26 - 75 , //27 - 76 , //28 - 77 , //29 - 78 , //30 - 79 , //31 - 79 , //32 - 80 , //33 - 81 , //34 - 82 , //35 - 82 , //36 - 83 , //37 - 84 , //38 - 85 , //39 - 85 , //40 - 86 , //41 - 87 , //42 - 88 , //43 - 88 , //44 - 89 , //45 - 89 , //46 - 90 , //47 - 91 , //48 - 91 , //49 - 92 , //50 - 92 , //51 - 93 , //52 - 93 , //53 - 94 , //54 - 94 , //55 - 95 , //56 - 95 , //57 - 96 , //58 - 96 , //59 - 96 , //60 - 97 , //61 - 97 , //62 - 98 , //63 - 98 , //64 - 98 , //65 - 99 , //66 - 99 , //67 - 99 , //68 - 100, //69 - 100, //70 - 101, //71 - 101, //72 - 101, //73 - 101, //74 - 102, //75 - 102, //76 - 102, //77 - 103, //78 - 103, //79 - 103, //80 - 104, //81 - 104, //82 - 104, //83 - 104, //84 - 105, //85 - 105, //86 - 105, //87 - 105, //88 - 105, //89 - 106, //90 - 106, //91 - 106, //92 - 106, //93 - 106, //94 - 106, //95 - 106, //96 - 106, //97 - 106, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 107, //103 - 107, //104 - 107, //105 - 107, //106 - 107, //107 - 107, //108 - 107, //109 - 107, //110 - 107, //111 - 107, //112 - 107, //113 - 107, //114 - 107, //115 - 107, //116 - 107, //117 - 107, //118 - 107, //119 - 107, //120 - 107, //121 - 107, //122 - 107, //123 - 107, //124 - 107, //125 - 107, //126 - 107, //127 - 107, - } - }, //RF_CHAN_2 - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 52 , //7 - 54 , //8 - 55 , //9 - 57 , //10 - 58 , //11 - 60 , //12 - 61 , //13 - 62 , //14 - 64 , //15 - 65 , //16 - 66 , //17 - 67 , //18 - 68 , //19 - 69 , //20 - 70 , //21 - 71 , //22 - 72 , //23 - 73 , //24 - 74 , //25 - 75 , //26 - 75 , //27 - 76 , //28 - 77 , //29 - 78 , //30 - 78 , //31 - 79 , //32 - 80 , //33 - 81 , //34 - 82 , //35 - 82 , //36 - 83 , //37 - 84 , //38 - 84 , //39 - 85 , //40 - 86 , //41 - 87 , //42 - 87 , //43 - 88 , //44 - 89 , //45 - 89 , //46 - 90 , //47 - 90 , //48 - 91 , //49 - 91 , //50 - 92 , //51 - 93 , //52 - 93 , //53 - 94 , //54 - 94 , //55 - 94 , //56 - 95 , //57 - 95 , //58 - 96 , //59 - 96 , //60 - 97 , //61 - 97 , //62 - 97 , //63 - 98 , //64 - 98 , //65 - 99 , //66 - 99 , //67 - 99 , //68 - 100, //69 - 100, //70 - 100, //71 - 101, //72 - 101, //73 - 101, //74 - 102, //75 - 102, //76 - 102, //77 - 103, //78 - 103, //79 - 103, //80 - 103, //81 - 104, //82 - 104, //83 - 104, //84 - 104, //85 - 104, //86 - 105, //87 - 105, //88 - 105, //89 - 105, //90 - 105, //91 - 105, //92 - 105, //93 - 105, //94 - 105, //95 - 105, //96 - 105, //97 - 105, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 106, //103 - 106, //104 - 106, //105 - 106, //106 - 106, //107 - 106, //108 - 106, //109 - 106, //110 - 106, //111 - 106, //112 - 106, //113 - 106, //114 - 106, //115 - 106, //116 - 106, //117 - 106, //118 - 106, //119 - 106, //120 - 106, //121 - 106, //122 - 106, //123 - 106, //124 - 106, //125 - 106, //126 - 106, //127 - 107, - } - }, //RF_CHAN_3 - { - { - 0 , //0 - 42 , //1 - 44 , //2 - 46 , //3 - 48 , //4 - 49 , //5 - 51 , //6 - 53 , //7 - 55 , //8 - 57 , //9 - 58 , //10 - 60 , //11 - 61 , //12 - 62 , //13 - 63 , //14 - 64 , //15 - 66 , //16 - 67 , //17 - 68 , //18 - 69 , //19 - 70 , //20 - 71 , //21 - 72 , //22 - 73 , //23 - 74 , //24 - 75 , //25 - 75 , //26 - 76 , //27 - 77 , //28 - 78 , //29 - 78 , //30 - 79 , //31 - 80 , //32 - 81 , //33 - 82 , //34 - 82 , //35 - 83 , //36 - 84 , //37 - 84 , //38 - 85 , //39 - 86 , //40 - 87 , //41 - 87 , //42 - 88 , //43 - 88 , //44 - 89 , //45 - 90 , //46 - 90 , //47 - 91 , //48 - 91 , //49 - 92 , //50 - 92 , //51 - 93 , //52 - 93 , //53 - 94 , //54 - 94 , //55 - 95 , //56 - 95 , //57 - 95 , //58 - 96 , //59 - 96 , //60 - 97 , //61 - 97 , //62 - 98 , //63 - 98 , //64 - 98 , //65 - 99 , //66 - 99 , //67 - 99 , //68 - 100, //69 - 100, //70 - 100, //71 - 101, //72 - 101, //73 - 101, //74 - 102, //75 - 102, //76 - 102, //77 - 103, //78 - 103, //79 - 103, //80 - 103, //81 - 104, //82 - 104, //83 - 104, //84 - 104, //85 - 104, //86 - 104, //87 - 104, //88 - 104, //89 - 105, //90 - 105, //91 - 105, //92 - 105, //93 - 105, //94 - 105, //95 - 105, //96 - 105, //97 - 105, //98 - 105, //99 - 105, //100 - 105, //101 - 105, //102 - 105, //103 - 105, //104 - 106, //105 - 106, //106 - 106, //107 - 106, //108 - 106, //109 - 106, //110 - 106, //111 - 106, //112 - 106, //113 - 106, //114 - 106, //115 - 106, //116 - 106, //117 - 106, //118 - 106, //119 - 106, //120 - 106, //121 - 106, //122 - 106, //123 - 106, //124 - 106, //125 - 106, //126 - 106, //127 - 106, - } - }, //RF_CHAN_4 - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 53 , //7 - 54 , //8 - 56 , //9 - 57 , //10 - 59 , //11 - 60 , //12 - 62 , //13 - 63 , //14 - 65 , //15 - 66 , //16 - 67 , //17 - 68 , //18 - 69 , //19 - 69 , //20 - 71 , //21 - 72 , //22 - 72 , //23 - 73 , //24 - 74 , //25 - 75 , //26 - 76 , //27 - 77 , //28 - 78 , //29 - 79 , //30 - 79 , //31 - 80 , //32 - 81 , //33 - 82 , //34 - 83 , //35 - 83 , //36 - 84 , //37 - 85 , //38 - 86 , //39 - 87 , //40 - 87 , //41 - 88 , //42 - 89 , //43 - 89 , //44 - 90 , //45 - 91 , //46 - 91 , //47 - 92 , //48 - 92 , //49 - 93 , //50 - 93 , //51 - 94 , //52 - 94 , //53 - 95 , //54 - 95 , //55 - 96 , //56 - 96 , //57 - 96 , //58 - 97 , //59 - 97 , //60 - 98 , //61 - 98 , //62 - 98 , //63 - 99 , //64 - 99 , //65 - 100, //66 - 100, //67 - 100, //68 - 101, //69 - 101, //70 - 101, //71 - 102, //72 - 102, //73 - 102, //74 - 103, //75 - 103, //76 - 103, //77 - 103, //78 - 104, //79 - 104, //80 - 104, //81 - 104, //82 - 105, //83 - 105, //84 - 105, //85 - 105, //86 - 105, //87 - 105, //88 - 105, //89 - 105, //90 - 105, //91 - 106, //92 - 106, //93 - 106, //94 - 106, //95 - 106, //96 - 106, //97 - 106, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 106, //103 - 106, //104 - 106, //105 - 106, //106 - 106, //107 - 106, //108 - 106, //109 - 106, //110 - 106, //111 - 106, //112 - 106, //113 - 106, //114 - 106, //115 - 106, //116 - 106, //117 - 106, //118 - 106, //119 - 106, //120 - 106, //121 - 106, //122 - 106, //123 - 106, //124 - 106, //125 - 106, //126 - 106, //127 - 106, - } - }, //RF_CHAN_5 - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 53 , //7 - 55 , //8 - 56 , //9 - 58 , //10 - 59 , //11 - 61 , //12 - 62 , //13 - 63 , //14 - 64 , //15 - 65 , //16 - 66 , //17 - 68 , //18 - 69 , //19 - 70 , //20 - 71 , //21 - 72 , //22 - 73 , //23 - 74 , //24 - 75 , //25 - 76 , //26 - 77 , //27 - 77 , //28 - 78 , //29 - 79 , //30 - 80 , //31 - 80 , //32 - 81 , //33 - 82 , //34 - 83 , //35 - 83 , //36 - 84 , //37 - 85 , //38 - 86 , //39 - 87 , //40 - 87 , //41 - 88 , //42 - 89 , //43 - 89 , //44 - 90 , //45 - 91 , //46 - 91 , //47 - 92 , //48 - 92 , //49 - 93 , //50 - 93 , //51 - 94 , //52 - 94 , //53 - 95 , //54 - 95 , //55 - 96 , //56 - 96 , //57 - 97 , //58 - 97 , //59 - 98 , //60 - 98 , //61 - 98 , //62 - 99 , //63 - 99 , //64 - 100, //65 - 100, //66 - 100, //67 - 101, //68 - 101, //69 - 101, //70 - 102, //71 - 102, //72 - 102, //73 - 103, //74 - 103, //75 - 103, //76 - 103, //77 - 104, //78 - 104, //79 - 104, //80 - 104, //81 - 104, //82 - 105, //83 - 105, //84 - 105, //85 - 105, //86 - 105, //87 - 105, //88 - 105, //89 - 106, //90 - 106, //91 - 106, //92 - 106, //93 - 106, //94 - 106, //95 - 106, //96 - 106, //97 - 106, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 106, //103 - 106, //104 - 106, //105 - 106, //106 - 106, //107 - 106, //108 - 106, //109 - 106, //110 - 107, //111 - 107, //112 - 107, //113 - 107, //114 - 107, //115 - 107, //116 - 107, //117 - 107, //118 - 107, //119 - 107, //120 - 107, //121 - 107, //122 - 107, //123 - 107, //124 - 107, //125 - 107, //126 - 107, //127 - 107, - } - }, //RF_CHAN_6 - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 53 , //7 - 55 , //8 - 56 , //9 - 58 , //10 - 60 , //11 - 61 , //12 - 62 , //13 - 63 , //14 - 64 , //15 - 66 , //16 - 67 , //17 - 68 , //18 - 69 , //19 - 70 , //20 - 71 , //21 - 72 , //22 - 73 , //23 - 74 , //24 - 75 , //25 - 76 , //26 - 77 , //27 - 77 , //28 - 78 , //29 - 79 , //30 - 80 , //31 - 80 , //32 - 81 , //33 - 82 , //34 - 83 , //35 - 84 , //36 - 84 , //37 - 85 , //38 - 86 , //39 - 87 , //40 - 87 , //41 - 88 , //42 - 88 , //43 - 89 , //44 - 90 , //45 - 90 , //46 - 91 , //47 - 91 , //48 - 92 , //49 - 92 , //50 - 93 , //51 - 93 , //52 - 94 , //53 - 94 , //54 - 95 , //55 - 95 , //56 - 96 , //57 - 96 , //58 - 97 , //59 - 97 , //60 - 97 , //61 - 98 , //62 - 98 , //63 - 99 , //64 - 99 , //65 - 99 , //66 - 100, //67 - 100, //68 - 100, //69 - 101, //70 - 101, //71 - 101, //72 - 102, //73 - 102, //74 - 102, //75 - 103, //76 - 103, //77 - 103, //78 - 103, //79 - 104, //80 - 104, //81 - 104, //82 - 104, //83 - 104, //84 - 104, //85 - 105, //86 - 105, //87 - 105, //88 - 105, //89 - 105, //90 - 105, //91 - 105, //92 - 105, //93 - 105, //94 - 105, //95 - 105, //96 - 105, //97 - 106, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 106, //103 - 106, //104 - 106, //105 - 106, //106 - 106, //107 - 106, //108 - 106, //109 - 106, //110 - 106, //111 - 106, //112 - 106, //113 - 106, //114 - 106, //115 - 106, //116 - 106, //117 - 106, //118 - 106, //119 - 106, //120 - 106, //121 - 106, //122 - 106, //123 - 106, //124 - 106, //125 - 106, //126 - 106, //127 - 106, - } - }, //RF_CHAN_7 - { - { - 0 , //0 - 40 , //1 - 42 , //2 - 45 , //3 - 47 , //4 - 49 , //5 - 51 , //6 - 52 , //7 - 54 , //8 - 56 , //9 - 58 , //10 - 59 , //11 - 61 , //12 - 62 , //13 - 63 , //14 - 65 , //15 - 66 , //16 - 67 , //17 - 68 , //18 - 69 , //19 - 70 , //20 - 71 , //21 - 72 , //22 - 73 , //23 - 74 , //24 - 75 , //25 - 76 , //26 - 77 , //27 - 77 , //28 - 78 , //29 - 79 , //30 - 80 , //31 - 81 , //32 - 81 , //33 - 82 , //34 - 83 , //35 - 84 , //36 - 85 , //37 - 86 , //38 - 86 , //39 - 87 , //40 - 88 , //41 - 89 , //42 - 89 , //43 - 90 , //44 - 91 , //45 - 91 , //46 - 92 , //47 - 92 , //48 - 93 , //49 - 93 , //50 - 94 , //51 - 94 , //52 - 95 , //53 - 95 , //54 - 96 , //55 - 96 , //56 - 97 , //57 - 97 , //58 - 97 , //59 - 98 , //60 - 98 , //61 - 99 , //62 - 99 , //63 - 99 , //64 - 100, //65 - 100, //66 - 100, //67 - 101, //68 - 101, //69 - 102, //70 - 102, //71 - 102, //72 - 103, //73 - 103, //74 - 103, //75 - 104, //76 - 104, //77 - 104, //78 - 104, //79 - 105, //80 - 105, //81 - 105, //82 - 105, //83 - 105, //84 - 105, //85 - 105, //86 - 105, //87 - 106, //88 - 106, //89 - 106, //90 - 106, //91 - 106, //92 - 106, //93 - 106, //94 - 106, //95 - 106, //96 - 106, //97 - 106, //98 - 106, //99 - 106, //100 - 106, //101 - 106, //102 - 106, //103 - 106, //104 - 107, //105 - 107, //106 - 107, //107 - 107, //108 - 107, //109 - 107, //110 - 107, //111 - 107, //112 - 107, //113 - 107, //114 - 107, //115 - 107, //116 - 107, //117 - 107, //118 - 107, //119 - 107, //120 - 107, //121 - 107, //122 - 107, //123 - 107, //124 - 107, //125 - 107, //126 - 107, //127 - 107, - } - }, //RF_CHAN_8 - { - { - 0 , //0 - 41 , //1 - 44 , //2 - 46 , //3 - 48 , //4 - 50 , //5 - 52 , //6 - 54 , //7 - 56 , //8 - 58 , //9 - 59 , //10 - 60 , //11 - 62 , //12 - 63 , //13 - 64 , //14 - 66 , //15 - 67 , //16 - 68 , //17 - 69 , //18 - 70 , //19 - 71 , //20 - 72 , //21 - 73 , //22 - 74 , //23 - 75 , //24 - 76 , //25 - 77 , //26 - 78 , //27 - 79 , //28 - 79 , //29 - 80 , //30 - 81 , //31 - 82 , //32 - 83 , //33 - 83 , //34 - 84 , //35 - 85 , //36 - 86 , //37 - 87 , //38 - 87 , //39 - 88 , //40 - 89 , //41 - 89 , //42 - 90 , //43 - 91 , //44 - 91 , //45 - 92 , //46 - 92 , //47 - 93 , //48 - 93 , //49 - 94 , //50 - 94 , //51 - 95 , //52 - 95 , //53 - 96 , //54 - 96 , //55 - 97 , //56 - 97 , //57 - 98 , //58 - 98 , //59 - 98 , //60 - 99 , //61 - 99 , //62 - 100, //63 - 100, //64 - 100, //65 - 101, //66 - 101, //67 - 101, //68 - 102, //69 - 102, //70 - 103, //71 - 103, //72 - 103, //73 - 104, //74 - 104, //75 - 104, //76 - 104, //77 - 105, //78 - 105, //79 - 105, //80 - 105, //81 - 105, //82 - 105, //83 - 106, //84 - 106, //85 - 106, //86 - 106, //87 - 106, //88 - 106, //89 - 106, //90 - 106, //91 - 106, //92 - 106, //93 - 106, //94 - 106, //95 - 106, //96 - 106, //97 - 106, //98 - 107, //99 - 107, //100 - 107, //101 - 107, //102 - 107, //103 - 107, //104 - 107, //105 - 107, //106 - 107, //107 - 107, //108 - 107, //109 - 107, //110 - 107, //111 - 107, //112 - 107, //113 - 107, //114 - 107, //115 - 107, //116 - 107, //117 - 107, //118 - 107, //119 - 107, //120 - 107, //121 - 107, //122 - 107, //123 - 107, //124 - 107, //125 - 107, //126 - 107, //127 - 107, - } - }, //RF_CHAN_9 - { - { - 0 , //0 - 41 , //1 - 43 , //2 - 47 , //3 - 48 , //4 - 50 , //5 - 52 , //6 - 53 , //7 - 55 , //8 - 57 , //9 - 58 , //10 - 60 , //11 - 62 , //12 - 63 , //13 - 64 , //14 - 65 , //15 - 67 , //16 - 68 , //17 - 69 , //18 - 70 , //19 - 71 , //20 - 72 , //21 - 73 , //22 - 74 , //23 - 75 , //24 - 76 , //25 - 77 , //26 - 77 , //27 - 78 , //28 - 79 , //29 - 80 , //30 - 81 , //31 - 82 , //32 - 83 , //33 - 84 , //34 - 85 , //35 - 85 , //36 - 86 , //37 - 87 , //38 - 88 , //39 - 89 , //40 - 89 , //41 - 90 , //42 - 90 , //43 - 91 , //44 - 92 , //45 - 92 , //46 - 93 , //47 - 94 , //48 - 94 , //49 - 95 , //50 - 95 , //51 - 96 , //52 - 96 , //53 - 96 , //54 - 97 , //55 - 97 , //56 - 98 , //57 - 98 , //58 - 99 , //59 - 99 , //60 - 99 , //61 - 100, //62 - 100, //63 - 101, //64 - 101, //65 - 102, //66 - 102, //67 - 102, //68 - 103, //69 - 103, //70 - 103, //71 - 104, //72 - 104, //73 - 104, //74 - 105, //75 - 105, //76 - 105, //77 - 105, //78 - 105, //79 - 106, //80 - 106, //81 - 106, //82 - 106, //83 - 106, //84 - 106, //85 - 106, //86 - 106, //87 - 106, //88 - 107, //89 - 107, //90 - 107, //91 - 107, //92 - 107, //93 - 107, //94 - 107, //95 - 107, //96 - 107, //97 - 107, //98 - 107, //99 - 107, //100 - 107, //101 - 107, //102 - 107, //103 - 107, //104 - 107, //105 - 107, //106 - 107, //107 - 107, //108 - 107, //109 - 107, //110 - 107, //111 - 107, //112 - 107, //113 - 107, //114 - 107, //115 - 107, //116 - 107, //117 - 107, //118 - 107, //119 - 107, //120 - 107, //121 - 107, //122 - 107, //123 - 107, //124 - 107, //125 - 107, //126 - 107, //127 - 107, - } - }, //RF_CHAN_10 - { - { - 0 , //0 - 42 , //1 - 44 , //2 - 47 , //3 - 49 , //4 - 51 , //5 - 52 , //6 - 54 , //7 - 55 , //8 - 57 , //9 - 58 , //10 - 60 , //11 - 61 , //12 - 63 , //13 - 64 , //14 - 65 , //15 - 66 , //16 - 67 , //17 - 69 , //18 - 70 , //19 - 71 , //20 - 72 , //21 - 73 , //22 - 74 , //23 - 75 , //24 - 76 , //25 - 77 , //26 - 77 , //27 - 78 , //28 - 79 , //29 - 80 , //30 - 81 , //31 - 82 , //32 - 82 , //33 - 83 , //34 - 84 , //35 - 85 , //36 - 86 , //37 - 86 , //38 - 87 , //39 - 88 , //40 - 89 , //41 - 90 , //42 - 90 , //43 - 91 , //44 - 91 , //45 - 92 , //46 - 92 , //47 - 93 , //48 - 93 , //49 - 94 , //50 - 94 , //51 - 95 , //52 - 96 , //53 - 96 , //54 - 97 , //55 - 97 , //56 - 97 , //57 - 98 , //58 - 98 , //59 - 99 , //60 - 99 , //61 - 100, //62 - 100, //63 - 100, //64 - 101, //65 - 101, //66 - 101, //67 - 102, //68 - 102, //69 - 102, //70 - 103, //71 - 103, //72 - 103, //73 - 103, //74 - 103, //75 - 103, //76 - 104, //77 - 104, //78 - 104, //79 - 104, //80 - 104, //81 - 104, //82 - 104, //83 - 104, //84 - 104, //85 - 104, //86 - 104, //87 - 105, //88 - 105, //89 - 105, //90 - 105, //91 - 105, //92 - 105, //93 - 105, //94 - 105, //95 - 105, //96 - 105, //97 - 105, //98 - 105, //99 - 105, //100 - 105, //101 - 105, //102 - 105, //103 - 105, //104 - 105, //105 - 105, //106 - 105, //107 - 105, //108 - 105, //109 - 105, //110 - 105, //111 - 105, //112 - 105, //113 - 105, //114 - 105, //115 - 105, //116 - 105, //117 - 105, //118 - 105, //119 - 105, //120 - 105, //121 - 105, //122 - 105, //123 - 105, //124 - 105, //125 - 105, //126 - 105, //127 - } - }, //RF_CHAN_11 - { - { - 0 , //0 - 41 , //1 - 44 , //2 - 46 , //3 - 48 , //4 - 50 , //5 - 52 , //6 - 54 , //7 - 56 , //8 - 57 , //9 - 59 , //10 - 60 , //11 - 61 , //12 - 63 , //13 - 64 , //14 - 65 , //15 - 66 , //16 - 67 , //17 - 69 , //18 - 70 , //19 - 71 , //20 - 72 , //21 - 73 , //22 - 74 , //23 - 75 , //24 - 76 , //25 - 77 , //26 - 77 , //27 - 78 , //28 - 79 , //29 - 80 , //30 - 80 , //31 - 81 , //32 - 82 , //33 - 83 , //34 - 83 , //35 - 84 , //36 - 85 , //37 - 86 , //38 - 86 , //39 - 87 , //40 - 88 , //41 - 88 , //42 - 89 , //43 - 90 , //44 - 90 , //45 - 91 , //46 - 92 , //47 - 92 , //48 - 93 , //49 - 93 , //50 - 94 , //51 - 94 , //52 - 95 , //53 - 95 , //54 - 96 , //55 - 96 , //56 - 96 , //57 - 97 , //58 - 97 , //59 - 98 , //60 - 98 , //61 - 99 , //62 - 99 , //63 - 99 , //64 - 100, //65 - 100, //66 - 100, //67 - 101, //68 - 101, //69 - 101, //70 - 102, //71 - 102, //72 - 102, //73 - 103, //74 - 103, //75 - 103, //76 - 103, //77 - 103, //78 - 103, //79 - 103, //80 - 104, //81 - 104, //82 - 104, //83 - 104, //84 - 104, //85 - 104, //86 - 104, //87 - 104, //88 - 104, //89 - 104, //90 - 104, //91 - 104, //92 - 104, //93 - 105, //94 - 105, //95 - 105, //96 - 105, //97 - 105, //98 - 105, //99 - 105, //100 - 105, //101 - 105, //102 - 105, //103 - 105, //104 - 105, //105 - 105, //106 - 105, //107 - 105, //108 - 105, //109 - 105, //110 - 105, //111 - 105, //112 - 105, //113 - 105, //114 - 105, //115 - 105, //116 - 105, //117 - 105, //118 - 105, //119 - 105, //120 - 105, //121 - 105, //122 - 105, //123 - 105, //124 - 105, //125 - 105, //126 - 105, //127 - 105, - } - }, //RF_CHAN_12 - { - { - 0 , //0 - 42 , //1 - 44 , //2 - 46 , //3 - 48 , //4 - 50 , //5 - 52 , //6 - 54 , //7 - 56 , //8 - 58 , //9 - 59 , //10 - 60 , //11 - 61 , //12 - 63 , //13 - 64 , //14 - 65 , //15 - 66 , //16 - 68 , //17 - 69 , //18 - 70 , //19 - 71 , //20 - 72 , //21 - 73 , //22 - 74 , //23 - 75 , //24 - 75 , //25 - 76 , //26 - 77 , //27 - 78 , //28 - 79 , //29 - 80 , //30 - 80 , //31 - 81 , //32 - 82 , //33 - 83 , //34 - 83 , //35 - 84 , //36 - 85 , //37 - 86 , //38 - 86 , //39 - 87 , //40 - 88 , //41 - 89 , //42 - 89 , //43 - 90 , //44 - 91 , //45 - 91 , //46 - 92 , //47 - 93 , //48 - 93 , //49 - 94 , //50 - 94 , //51 - 95 , //52 - 95 , //53 - 96 , //54 - 96 , //55 - 97 , //56 - 97 , //57 - 97 , //58 - 98 , //59 - 98 , //60 - 99 , //61 - 99 , //62 - 100, //63 - 100, //64 - 100, //65 - 101, //66 - 101, //67 - 101, //68 - 102, //69 - 102, //70 - 102, //71 - 103, //72 - 103, //73 - 103, //74 - 103, //75 - 103, //76 - 103, //77 - 104, //78 - 104, //79 - 104, //80 - 104, //81 - 104, //82 - 104, //83 - 104, //84 - 104, //85 - 104, //86 - 104, //87 - 104, //88 - 104, //89 - 105, //90 - 105, //91 - 105, //92 - 105, //93 - 105, //94 - 105, //95 - 105, //96 - 105, //97 - 105, //98 - 105, //99 - 105, //100 - 105, //101 - 105, //102 - 105, //103 - 105, //104 - 105, //105 - 105, //106 - 105, //107 - 105, //108 - 105, //109 - 105, //110 - 105, //111 - 105, //112 - 105, //113 - 105, //114 - 105, //115 - 105, //116 - 105, //117 - 105, //118 - 105, //119 - 105, //120 - 105, //121 - 105, //122 - 105, //123 - 105, //124 - 105, //125 - 105, //126 - 105, //127 - 105, - } - }, //RF_CHAN_13 - { - { - 0, //0 - 40, //1 - 43, //2 - 45, //3 - 47, //4 - 49, //5 - 50, //6 - 52, //7 - 54, //8 - 56, //9 - 57, //10 - 58, //11 - 59, //12 - 60, //13 - 62, //14 - 63, //15 - 64, //16 - 65, //17 - 66, //18 - 67, //19 - 68, //20 - 69, //21 - 70, //22 - 71, //23 - 72, //24 - 73, //25 - 74, //26 - 74, //27 - 75, //28 - 76, //29 - 77, //30 - 78, //31 - 78, //32 - 79, //33 - 80, //34 - 81, //35 - 82, //36 - 83, //37 - 83, //38 - 84, //39 - 85, //40 - 85, //41 - 86, //42 - 87, //43 - 87, //44 - 88, //45 - 89, //46 - 89, //47 - 90, //48 - 90, //49 - 91, //50 - 91, //51 - 92, //52 - 92, //53 - 93, //54 - 93, //55 - 94, //56 - 94, //57 - 95, //58 - 95, //59 - 96, //60 - 96, //61 - 96, //62 - 97, //63 - 97, //64 - 97, //65 - 98, //66 - 98, //67 - 98, //68 - 98, //69 - 99, //70 - 99, //71 - 99, //72 - 99, //73 - 99, //74 - 99, //75 - 99, //76 - 99, //77 - 99, //78 - 99, //79 - 100, //80 - 100, //81 - 100, //82 - 100, //83 - 100, //84 - 100, //85 - 100, //86 - 100, //87 - 100, //88 - 100, //89 - 100, //90 - 100, //91 - 100, //92 - 100, //93 - 100, //94 - 100, //95 - 100, //96 - 100, //97 - 100, //98 - 100, //99 - 100, //100 - 100, //101 - 100, //102 - 100, //103 - 100, //104 - 100, //105 - 100, //106 - 100, //107 - 100, //108 - 100, //109 - 100, //110 - 100, //111 - 100, //112 - 100, //113 - 100, //114 - 100, //115 - 100, //116 - 100, //117 - 100, //118 - 100, //119 - 100, //120 - 100, //121 - 100, //122 - 100, //123 - 100, //124 - 100, //125 - 100, //126 - 100, //127 - 100, - } - }, //RF_CHAN_14 - }, - - //NV_TABLE_TPC_PDADC_OFFSETS - { - 98, // RF_CHAN_1 - 101, // RF_CHAN_2 - 101, // RF_CHAN_3 - 100, // RF_CHAN_4 - 98, // RF_CHAN_5 - 97, // RF_CHAN_6 - 94, // RF_CHAN_7 - 94, // RF_CHAN_8 - 92, // RF_CHAN_9 - 90, // RF_CHAN_10 - 94, // RF_CHAN_11 - 95, // RF_CHAN_12 - 97, // RF_CHAN_13 - 104, // RF_CHAN_14 - 100, // RF_CHAN_240 - 100, // RF_CHAN_244 - 100, // RF_CHAN_248 - 100, // RF_CHAN_252 - 100, // RF_CHAN_208 - 100, // RF_CHAN_212 - 100, // RF_CHAN_216 - 100, // RF_CHAN_36 - 100, // RF_CHAN_40 - 100, // RF_CHAN_44 - 100, // RF_CHAN_48 - 100, // RF_CHAN_52 - 100, // RF_CHAN_56 - 100, // RF_CHAN_60 - 100, // RF_CHAN_64 - 100, // RF_CHAN_100 - 100, // RF_CHAN_104 - 100, // RF_CHAN_108 - 100, // RF_CHAN_112 - 100, // RF_CHAN_116 - 100, // RF_CHAN_120 - 100, // RF_CHAN_124 - 100, // RF_CHAN_128 - 100, // RF_CHAN_132 - 100, // RF_CHAN_136 - 100, // RF_CHAN_140 - 100, // RF_CHAN_149 - 100, // RF_CHAN_153 - 100, // RF_CHAN_157 - 100, // RF_CHAN_161 - 100, // RF_CHAN_165 - //CHANNEL BONDED CHANNELS - 100, // RF_CHAN_BOND_3 - 100, // RF_CHAN_BOND_4 - 100, // RF_CHAN_BOND_5 - 100, // RF_CHAN_BOND_6 - 100, // RF_CHAN_BOND_7 - 100, // RF_CHAN_BOND_8 - 100, // RF_CHAN_BOND_9 - 100, // RF_CHAN_BOND_10 - 100, // RF_CHAN_BOND_11 - 100, // RF_CHAN_BOND_242 - 100, // RF_CHAN_BOND_246 - 100, // RF_CHAN_BOND_250 - 100, // RF_CHAN_BOND_210 - 100, // RF_CHAN_BOND_214 - 100, // RF_CHAN_BOND_38 - 100, // RF_CHAN_BOND_42 - 100, // RF_CHAN_BOND_46 - 100, // RF_CHAN_BOND_50 - 100, // RF_CHAN_BOND_54 - 100, // RF_CHAN_BOND_58 - 100, // RF_CHAN_BOND_62 - 100, // RF_CHAN_BOND_102 - 100, // RF_CHAN_BOND_106 - 100, // RF_CHAN_BOND_110 - 100, // RF_CHAN_BOND_114 - 100, // RF_CHAN_BOND_118 - 100, // RF_CHAN_BOND_122 - 100, // RF_CHAN_BOND_126 - 100, // RF_CHAN_BOND_130 - 100, // RF_CHAN_BOND_134 - 100, // RF_CHAN_BOND_138 - 100, // RF_CHAN_BOND_151 - 100, // RF_CHAN_BOND_155 - 100, // RF_CHAN_BOND_159 - 100, // RF_CHAN_BOND_163 - }, - - //NV_TABLE_VIRTUAL_RATE - // typedef tANI_S16 tPowerdBm; - //typedef tPowerdBm tRateGroupPwr[NUM_HAL_PHY_RATES]; - //tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS]; - { - // 2.4G RF Subband - { - //802.11b Rates - {100}, // HAL_PHY_VRATE_11A_54_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - }, - // 5G Low RF Subband - { - //802.11b Rates - {100}, // HAL_PHY_VRATE_11A_54_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - }, - // 5G Middle RF Subband - { - //802.11b Rates - {100}, // HAL_PHY_VRATE_11A_54_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - }, - // 5G High RF Subband - { - //802.11b Rates - {100}, // HAL_PHY_VRATE_11A_54_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - }, - // 4.9G RF Subband - { - //802.11b Rates - {100}, // HAL_PHY_VRATE_11A_54_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS, - {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS - {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - {100}, // RESERVED, - } - }, - -#if 0 //FIXME_PRIMA - //NV_TABLE_CAL_MEMORY - { - 0x7FFF, // tANI_U16 process_monitor; - 0x00, // tANI_U8 hdet_cal_code; - 0x00, // tANI_U8 rxfe_gm_2; - - 0x00, // tANI_U8 tx_bbf_rtune; - 0x00, // tANI_U8 pa_rtune_reg; - 0x00, // tANI_U8 rt_code; - 0x00, // tANI_U8 bias_rtune; - - 0x00, // tANI_U8 bb_bw1; - 0x00, // tANI_U8 bb_bw2; - { 0x00, 0x00 }, // tANI_U8 reserved[2]; - - 0x00, // tANI_U8 bb_bw3; - 0x00, // tANI_U8 bb_bw4; - 0x00, // tANI_U8 bb_bw5; - 0x00, // tANI_U8 bb_bw6; - - 0x7FFF, // tANI_U16 rcMeasured; - 0x00, // tANI_U8 tx_bbf_ct; - 0x00, // tANI_U8 tx_bbf_ctr; - - 0x00, // tANI_U8 csh_maxgain_reg; - 0x00, // tANI_U8 csh_0db_reg; - 0x00, // tANI_U8 csh_m3db_reg; - 0x00, // tANI_U8 csh_m6db_reg; - - 0x00, // tANI_U8 cff_0db_reg; - 0x00, // tANI_U8 cff_m3db_reg; - 0x00, // tANI_U8 cff_m6db_reg; - 0x00, // tANI_U8 rxfe_gpio_ctl_1; - - 0x00, // tANI_U8 mix_bal_cnt_2; - 0x00, // tANI_S8 rxfe_lna_highgain_bias_ctl_delta; - 0x00, // tANI_U8 rxfe_lna_load_ctune; - 0x00, // tANI_U8 rxfe_lna_ngm_rtune; - - 0x00, // tANI_U8 rx_im2_i_cfg0; - 0x00, // tANI_U8 rx_im2_i_cfg1; - 0x00, // tANI_U8 rx_im2_q_cfg0; - 0x00, // tANI_U8 rx_im2_q_cfg1; - - 0x00, // tANI_U8 pll_vfc_reg3_b0; - 0x00, // tANI_U8 pll_vfc_reg3_b1; - 0x00, // tANI_U8 pll_vfc_reg3_b2; - 0x00, // tANI_U8 pll_vfc_reg3_b3; - - 0x7FFF, // tANI_U16 tempStart; - 0x7FFF, // tANI_U16 tempFinish; - - { //txLoCorrections - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_1 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_2 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_3 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_4 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_5 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_6 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_7 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_8 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_9 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_10 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_11 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_12 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - }, //RF_CHAN_13 - { - { 0x00, 0x00 }, // TX_GAIN_STEP_0 - { 0x00, 0x00 }, // TX_GAIN_STEP_1 - { 0x00, 0x00 }, // TX_GAIN_STEP_2 - { 0x00, 0x00 }, // TX_GAIN_STEP_3 - { 0x00, 0x00 }, // TX_GAIN_STEP_4 - { 0x00, 0x00 }, // TX_GAIN_STEP_5 - { 0x00, 0x00 }, // TX_GAIN_STEP_6 - { 0x00, 0x00 }, // TX_GAIN_STEP_7 - { 0x00, 0x00 }, // TX_GAIN_STEP_8 - { 0x00, 0x00 }, // TX_GAIN_STEP_9 - { 0x00, 0x00 }, // TX_GAIN_STEP_10 - { 0x00, 0x00 }, // TX_GAIN_STEP_11 - { 0x00, 0x00 }, // TX_GAIN_STEP_12 - { 0x00, 0x00 }, // TX_GAIN_STEP_13 - { 0x00, 0x00 }, // TX_GAIN_STEP_14 - { 0x00, 0x00 } // TX_GAIN_STEP_15 - } //RF_CHAN_14 - }, // tTxLoCorrections txLoValues; - - { //sTxIQChannel - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_1 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_2 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_3 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_4 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_5 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_6 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_7 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_8 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_9 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_10 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_11 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_12 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - }, //RF_CHAN_13 - { - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15 - } //RF_CHAN_14 - }, // sTxIQChannel txIqValues; - - { //sRxIQChannel - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_1 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_2 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_3 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_4 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_5 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_6 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_7 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_8 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_9 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_10 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_11 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_12 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - }, //RF_CHAN_13 - { - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13 - { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14 - { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15 - } //RF_CHAN_14 - }, // sRxIQChannel rxIqValues; - - { // tTpcConfig clpcData[MAX_TPC_CHANNELS] - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_1 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_2 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_3 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_4 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_5 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_6 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_7 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_8 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_9 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_10 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_11 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_12 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - }, // RF_CHAN_13 - { - { - { - { 0x00, 0x00 }, //CAL_POINT_0 - { 0x00, 0x00 }, //CAL_POINT_1 - { 0x00, 0x00 }, //CAL_POINT_2 - { 0x00, 0x00 }, //CAL_POINT_3 - { 0x00, 0x00 }, //CAL_POINT_4 - { 0x00, 0x00 }, //CAL_POINT_5 - { 0x00, 0x00 }, //CAL_POINT_6 - { 0x00, 0x00 } //CAL_POINT_7 - } // PHY_TX_CHAIN_0 - } // empirical - } // RF_CHAN_14 - }, // tTpcConfig clpcData[MAX_TPC_CHANNELS]; - - { - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_1: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_2: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_3: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_4: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_5: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_6: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_7: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_8: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_9: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_10: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_11: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_12: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_13: pdadc_offset, reserved[2] - { 0x0000, { 0x00, 0x00 } } // RF_CHAN_14: pdadc_offset, reserved[2] - } // tTpcParams clpcParams[MAX_TPC_CHANNELS]; - - }, //NV_TABLE_CAL_MEMORY -#endif - //NV_TABLE_FW_CONFIG - { - 0, //skuID - 0, //tpcMode2G - 0, //tpcMode5G - 0, //reserved1 - - 0, //xPA2G - 0, //xPA5G; - 0, //paPolarityTx; - 0, //paPolarityRx; - - 0, //xLNA2G; - 0, //xLNA5G; - 0, //xCoupler2G; - 0, //xCoupler5G; - - 0, //xPdet2G; - 0, //xPdet5G; - 0, //enableDPD2G; - 1, //enableDPD5G; - - 1, //pdadcSelect2G; - 1, //pdadcSelect5GLow; - 1, //pdadcSelect5GMid; - 1, //pdadcSelect5GHigh; - - 0, //reserved2 - 0, //reserved3 - 0, //reserved4 - }, - - - //NV_TABLE_RSSI_CHANNEL_OFFSETS - { - //PHY_RX_CHAIN_0 - { - //bRssiOffset - {300}, // apply to all channles - - //gnRssiOffset - {300} // apply to all channles - }, - //rsvd - { - //bRssiOffset - {0}, // apply to all channles - - //gnRssiOffset - {0} // apply to all channles - } - }, - - //NV_TABLE_HW_CAL_VALUES - { - 0x0, //validBmap - { - 1400, //psSlpTimeOvrHd2G; - 1400, //psSlpTimeOvrHd5G; - - 1600, //psSlpTimeOvrHdxLNA5G; - 0, //nv_TxBBFSel9MHz - 0, //hwParam1 - 0, //hwParam2 - - 0x1B, //custom_tcxo_reg8 - 0xFF, //custom_tcxo_reg9 - - 0, //hwParam3; - 0, //hwParam4; - 0, //hwParam5; - 0, //hwParam6; - 0, //hwParam7; - 0, //hwParam8; - 0, //hwParam9; - 0, //hwParam10; - 0, //hwParam11; - } - }, - - - //NV_TABLE_ANTENNA_PATH_LOSS - { - 280, // RF_CHAN_1 - 270, // RF_CHAN_2 - 270, // RF_CHAN_3 - 270, // RF_CHAN_4 - 270, // RF_CHAN_5 - 270, // RF_CHAN_6 - 280, // RF_CHAN_7 - 280, // RF_CHAN_8 - 290, // RF_CHAN_9 - 300, // RF_CHAN_10 - 300, // RF_CHAN_11 - 310, // RF_CHAN_12 - 310, // RF_CHAN_13 - 310, // RF_CHAN_14 - 280, // RF_CHAN_240 - 280, // RF_CHAN_244 - 280, // RF_CHAN_248 - 280, // RF_CHAN_252 - 280, // RF_CHAN_208 - 280, // RF_CHAN_212 - 280, // RF_CHAN_216 - 280, // RF_CHAN_36 - 280, // RF_CHAN_40 - 280, // RF_CHAN_44 - 280, // RF_CHAN_48 - 280, // RF_CHAN_52 - 280, // RF_CHAN_56 - 280, // RF_CHAN_60 - 280, // RF_CHAN_64 - 280, // RF_CHAN_100 - 280, // RF_CHAN_104 - 280, // RF_CHAN_108 - 280, // RF_CHAN_112 - 280, // RF_CHAN_116 - 280, // RF_CHAN_120 - 280, // RF_CHAN_124 - 280, // RF_CHAN_128 - 280, // RF_CHAN_132 - 280, // RF_CHAN_136 - 280, // RF_CHAN_140 - 280, // RF_CHAN_149 - 280, // RF_CHAN_153 - 280, // RF_CHAN_157 - 280, // RF_CHAN_161 - 280, // RF_CHAN_165 - //CHANNEL BONDED CHANNELS - 280, // RF_CHAN_BOND_3 - 280, // RF_CHAN_BOND_4 - 280, // RF_CHAN_BOND_5 - 280, // RF_CHAN_BOND_6 - 280, // RF_CHAN_BOND_7 - 280, // RF_CHAN_BOND_8 - 280, // RF_CHAN_BOND_9 - 280, // RF_CHAN_BOND_10 - 280, // RF_CHAN_BOND_11 - 280, // RF_CHAN_BOND_242 - 280, // RF_CHAN_BOND_246 - 280, // RF_CHAN_BOND_250 - 280, // RF_CHAN_BOND_210 - 280, // RF_CHAN_BOND_214 - 280, // RF_CHAN_BOND_38 - 280, // RF_CHAN_BOND_42 - 280, // RF_CHAN_BOND_46 - 280, // RF_CHAN_BOND_50 - 280, // RF_CHAN_BOND_54 - 280, // RF_CHAN_BOND_58 - 280, // RF_CHAN_BOND_62 - 280, // RF_CHAN_BOND_102 - 280, // RF_CHAN_BOND_106 - 280, // RF_CHAN_BOND_110 - 280, // RF_CHAN_BOND_114 - 280, // RF_CHAN_BOND_118 - 280, // RF_CHAN_BOND_122 - 280, // RF_CHAN_BOND_126 - 280, // RF_CHAN_BOND_130 - 280, // RF_CHAN_BOND_134 - 280, // RF_CHAN_BOND_138 - 280, // RF_CHAN_BOND_151 - 280, // RF_CHAN_BOND_155 - 280, // RF_CHAN_BOND_159 - 280, // RF_CHAN_BOND_163 - }, - - //NV_TABLE_PACKET_TYPE_POWER_LIMITS - { - { 2150 }, // applied to all channels, MODE_802_11B - { 1850 }, // applied to all channels,MODE_802_11AG - { 1750 } // applied to all channels,MODE_802_11N - }, - - //NV_TABLE_OFDM_CMD_PWR_OFFSET - { - 0, 0 - }, - - //NV_TABLE_TX_BB_FILTER_MODE - { - 0 - } - - } // tables -}; - -#endif @@ -643,10 +643,7 @@ VOSS_OBJS := $(VOSS_SRC_DIR)/vos_api.o \ $(VOSS_SRC_DIR)/vos_timer.o \ $(VOSS_SRC_DIR)/vos_trace.o \ $(VOSS_SRC_DIR)/vos_types.o \ - $(VOSS_SRC_DIR)/vos_utils.o \ - $(VOSS_SRC_DIR)/wlan_nv_parser.o \ - $(VOSS_SRC_DIR)/wlan_nv_stream_read.o \ - $(VOSS_SRC_DIR)/wlan_nv_template_builtin.o + $(VOSS_SRC_DIR)/vos_utils.o ifeq ($(BUILD_DIAG_VERSION),1) VOSS_OBJS += $(VOSS_SRC_DIR)/vos_diag.o @@ -780,7 +777,9 @@ WMA_DIR := CORE/SERVICES/WMA WMA_INC := -I$(WLAN_ROOT)/$(WMA_DIR) WMA_OBJS := $(WMA_DIR)/wma.o \ - $(WMA_DIR)/wma_dfs_interface.o + $(WMA_DIR)/wma_dfs_interface.o \ + $(WMA_DIR)/wlan_nv.o + ifeq ($(CONFIG_QCA_WIFI_ISOC), 1) WMA_OBJS += $(WMA_DIR)/wma_isoc.o @@ -799,8 +798,7 @@ WDA_INC := -I$(WLAN_ROOT)/$(WDA_INC_DIR) \ -I$(WLAN_ROOT)/$(WDA_SRC_DIR) WDA_OBJS := $(WDA_SRC_DIR)/wlan_qct_wda_debug.o \ - $(WDA_SRC_DIR)/wlan_qct_wda_legacy.o \ - $(WDA_SRC_DIR)/wlan_nv.o + $(WDA_SRC_DIR)/wlan_qct_wda_legacy.o ############ WDI ############ WDI_DIR := CORE/WDI diff --git a/firmware_bin/WCNSS_qcom_wlan_nv.bin b/firmware_bin/WCNSS_qcom_wlan_nv.bin Binary files differdeleted file mode 100644 index 9ecfc087d029..000000000000 --- a/firmware_bin/WCNSS_qcom_wlan_nv.bin +++ /dev/null diff --git a/wcnss/inc/pttFrameGen.h b/wcnss/inc/pttFrameGen.h deleted file mode 100644 index 0d57ab681270..000000000000 --- a/wcnss/inc/pttFrameGen.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2014 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/** ------------------------------------------------------------------------- * - ------------------------------------------------------------------------- * - - - \file pttFrameGen.h - - \brief Definitions for PTT frame generation - - $Id$========================================================================== */ - -#ifndef PTTFRAMEGEN_H -#define PTTFRAMEGEN_H - - -//#define MAX_PKT_GEN_BUF_ENTRY (HAL_HIF_MAX_TX_RING_ENTRY >> 1) - - - -#define MAX_PAYLOAD_SIZE 2400 -#define MAX_TX_PAYLOAD_SIZE 4096 - -typedef enum { - TEST_PAYLOAD_NONE, - TEST_PAYLOAD_FILL_BYTE, - TEST_PAYLOAD_RANDOM, - TEST_PAYLOAD_RAMP, - TEST_PAYLOAD_TEMPLATE, - TEST_PAYLOAD_MAX = 0X3FFFFFFF, //dummy value to set enum to 4 bytes -} ePayloadContents; - - -#define MAC_ADDR_SIZE ( 6 ) - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 numTestPackets; - tANI_U32 interFrameSpace; - eHalPhyRates rate; - ePayloadContents payloadContents; - tANI_U16 payloadLength; - tANI_U8 payloadFillByte; - tANI_BOOLEAN pktAutoSeqNum; //seq num setting (hw or not) for packet gen - - tANI_U8 addr1[MAC_ADDR_SIZE]; - tANI_U8 addr2[MAC_ADDR_SIZE]; - tANI_U8 addr3[MAC_ADDR_SIZE]; - tANI_U8 tx_mode; - tANI_BOOLEAN crc; //0 = no FCS calculated = power detector works = receive won't work?, - //1 = crc calculated = receive works, but power detector workaround doesn't - - ePhyDbgPreamble preamble; -} sPttFrameGenParams; - - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 legacy; //11g OFDM preamble - tANI_U32 gfSimo20; //greenfield preamble - tANI_U32 mmSimo20; //mixed mode preamble - tANI_U32 gfSimo40; //greenfield preamble - tANI_U32 mmSimo40; //mixed mode preamble - tANI_U32 txbShort; //11b short - tANI_U32 txbLong; //11b long - tANI_U32 acSimo204080; //11ac SIMO 20,40,80 - tANI_U32 total; -} sTxFrameCounters; - -#endif diff --git a/wcnss/inc/pttModule.h b/wcnss/inc/pttModule.h deleted file mode 100644 index 963d44171e40..000000000000 --- a/wcnss/inc/pttModule.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2014 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/** - pttModule.h: global variable structure for pttModule - Author: Mark Nelson - Date: 6/27/05 - - History - - Date Modified by Modification Information - -------------------------------------------------------------------------- - - */ - -#ifndef PTTMODULE_H -#define PTTMODULE_H -#include <wlan_phy.h> -#include <pttFrameGen.h> - -#ifdef BUILD_QWPTTSTATIC -#include "wlan_hal_msg.h" // it is needed to build qwptt static lib -#endif - -// Max NV fragment size -#define MAX_NV_BIN_SIZE 2000 - -enum -{ - PTT_STATUS_SUCCESS = 0, - PTT_STATUS_FAILURE = 1, - PTT_MAX_VAL = 0XFFFF, -}; -typedef tANI_U32 eQWPttStatus; - - -typedef PACKED_PRE struct PACKED_POST { - tANI_U16 drvMjr; - tANI_U16 drvMnr; - tANI_U16 drvPtch; - tANI_U16 drvBld; - tANI_U16 pttMax; - tANI_U16 pttMin; - //FwVersionInfo fwVer; -} sBuildReleaseParams; - -typedef PACKED_PRE struct PACKED_POST { - tANI_BOOLEAN agPktsDisabled; //802.11ag - tANI_BOOLEAN bPktsDisabled; //802.11b - tANI_BOOLEAN slrPktsDisabled; //deprecated in Riva - tANI_BOOLEAN n40PktsDisabled; //11N 40 - tANI_BOOLEAN ac80PktsDisabled; //11AC 80 - tANI_BOOLEAN rsvd; -} sRxTypesDisabled; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 totalRxPackets; - tANI_U32 totalMacRxPackets; - tANI_U32 totalMacFcsErrPackets; -} sRxFrameCounters; - - - - -/* GRAB RAM types */ -//TODO: Change Grab RAM interface as appropriate to Taurus -typedef enum { - GRAB_RAM_RXFIR, - GRAB_RAM_ADC, - GRAB_RAM_ADC_80, - GRAB_RAM_MAX_VAL = 0XFFFF, -} eGrabRamType; - -#define GRAB_RAM_SIZE 6000 -#define GRAB_RAM_SIZE_80MHZ_1_CHAIN 12000 - - - -/// Enum used to specify the trigger type for the aniGrabRam API -typedef enum eGramDumpTrigType { - eGRAM_DUMP_UNTRIGGERED, - eGRAM_DUMP_TRIG_ON_11A, - eGRAM_DUMP_TRIG_ON_11B, - eGRAM_DUMP_TRIG_ON_11A_OR_11B -} tGramDumpTrigType; - -typedef PACKED_PRE struct PACKED_POST { - //common to both transmit chains - eHalPhyRates rate; //current rate - ePhyChanBondState cbState; //current Channel bonded state - - tANI_U8 channelId; //current channel Id - tANI_U8 pwrTemplateIndex; //5-bit template index used for the current rate - tANI_U8 reserved[2]; - - //specific transmit chain power - tTxChainPower txChains[PHY_MAX_TX_CHAINS]; //output power for Tx chains -} tTxPowerReport; - -#define RXP_MAX_FILTER_IDX 64 - -typedef PACKED_PRE struct PACKED_POST -{ - uint32 rxpFilterForFTMPER[RXP_MAX_FILTER_IDX]; - uint32 max_pktlen; - uint32 flt_disable0; - uint32 flt_disable1; - uint32 config2; - uint32 push_wq_ctrl; - uint32 push_wq_ctrl2; - uint32 extra_frame_flt; -} sMACConfig; - - -typedef PACKED_PRE struct PACKED_POST { - /* - * The idea here is to store only those things which cannot be - * handled directly within the individual function calls. - * Most things will go straight to registers or come from registers. - */ - sPttFrameGenParams frameGenParams; - tANI_U8 payload[MAX_PAYLOAD_SIZE]; - - //Tx Waveform Gen Service - tANI_U16 numWfmSamples; - tANI_BOOLEAN wfmEnabled; - tANI_BOOLEAN wfmStored; - - //Tx Frame Power Service - tTxGain forcedTxGain[PHY_MAX_TX_CHAINS]; //use TXPWR_OVERRIDE for wfm, and fill gain table otherwise - tANI_U8 tpcPowerLut[PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH]; - tTxGain tpcGainLut[PHY_MAX_TX_CHAINS][TPC_MEM_GAIN_LUT_DEPTH]; - - //Tx Frame Gen Service - tANI_BOOLEAN frameGenEnabled; - tANI_BOOLEAN phyDbgFrameGen; //this says use phyDbg for frames - leave this in place until we know that PhyDbg will suffice - - // for FTM PER feature - tANI_U8 tx_mode; - - tANI_BOOLEAN ftm_per_settings_saved; - - //Rx Gain Service - sRxChainsAgcEnable agcEnables; - - tANI_U32 *pADCCaptureCache; //pointer to allocate ADC capture cache - - //TX_TIMER adcRssiStatsTimer; //Create adc rssi stat collection timer - - sRxChainsRssi rssi; -} tPttModuleVariables; - -#ifdef WCN_PRONTO -extern sMACConfig macConfig; -#endif - -#endif /* PTTMODULE_H */ diff --git a/wcnss/inc/pttMsgApi.h b/wcnss/inc/pttMsgApi.h deleted file mode 100644 index 71b3288594cf..000000000000 --- a/wcnss/inc/pttMsgApi.h +++ /dev/null @@ -1,962 +0,0 @@ -/* - * Copyright (c) 2012 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/** - pttMsgApi.h: Contains messages to PTT Module for physical layer testing - Author: Mark Nelson - Date: 6/21/05 - - History - - Date Modified by Modification Information - -------------------------------------------------------------------------- - - */ - -#ifndef PTT_MSG_API_H -#define PTT_MSG_API_H - -#include "halCompiler.h" -#include "wlan_nv.h" -#include "wlan_phy.h" -#include "pttFrameGen.h" -#include "pttModule.h" - -#include "halLegacyPalTypes.h" - -typedef tANI_U8 tQWPTT_U8; -typedef tANI_S8 tQWPTT_S8; - -typedef tANI_U16 tQWPTT_U16; -typedef tANI_S16 tQWPTT_S16; - -typedef tANI_U32 tQWPTT_U32; -typedef tANI_S32 tQWPTT_S32; - -typedef tANI_U8 tQWPTT_BYTE; -typedef tANI_S9 tQWPTT_S9; - -typedef tANI_U8 tQWPTT_BOOLEAN; - -#define PTT_MEM_ACCESS_MAX_SIZE 256 - -//Messages to/from socket or pttApi.c -typedef enum { - PTT_MSG_TYPES_BEGIN = 0x3000, - - // Init - PTT_MSG_INIT = PTT_MSG_TYPES_BEGIN, //extra: internal only - -//NV Service - PTT_MSG_GET_TPC_CAL_STATE_OBSOLETE = 0x3011, - PTT_MSG_RESET_TPC_CAL_STATE_OBSOLETE = 0x3012, - - PTT_MSG_SET_NV_CKSUM_OBSOLETE = 0x3013, - PTT_MSG_GET_NV_CKSUM_OBSOLETE = 0x3014, - PTT_MSG_GET_NV_TABLE = 0x3016, - PTT_MSG_SET_NV_TABLE = 0x3017, - PTT_MSG_SET_NV_IMAGE_OBSOLETE = 0x3018, - PTT_MSG_BLANK_NV = 0x3019, - PTT_MSG_GET_NV_IMAGE_OBSOLETE = 0x301E, - PTT_MSG_DEL_NV_TABLE = 0x301F, - PTT_MSG_GET_NV_FIELD = 0x3020, - PTT_MSG_SET_NV_FIELD = 0x3021, - PTT_MSG_STORE_NV_TABLE = 0x3022, - PTT_MSG_SET_REG_DOMAIN = 0x3023, - -//new NV format Service - PTT_MSG_GET_NV_BIN = 0x3030, - PTT_MSG_SET_NV_BIN = 0x3031, - PTT_MSG_GET_DICTIONARY = 0x3032, - -//Device Register Access - PTT_MSG_DBG_READ_REGISTER = 0x3040, - PTT_MSG_DBG_WRITE_REGISTER = 0x3041, - PTT_MSG_API_WRITE_REGISTER_OBSOLETE = 0x3042, - PTT_MSG_API_READ_REGISTER_OBSOLETE = 0x3043, - PTT_MSG_DBG_READ_MEMORY = 0x3044, - PTT_MSG_DBG_WRITE_MEMORY = 0x3045, - -//Device MAC Test Setup - PTT_MSG_ENABLE_CHAINS = 0x304F, - PTT_MSG_SET_CHANNEL = 0x3050, - -//Tx Waveform Gen Service - PTT_MSG_SET_WAVEFORM = 0x3071, - PTT_MSG_SET_TX_WAVEFORM_GAIN = 0x3072, - PTT_MSG_GET_WAVEFORM_POWER_ADC = 0x3073, - PTT_MSG_START_WAVEFORM = 0x3074, - PTT_MSG_STOP_WAVEFORM = 0x3075, - PTT_MSG_SET_RX_WAVEFORM_GAIN = 0x3076, - PTT_MSG_SET_TX_WAVEFORM_GAIN_PRIMA_V1 = 0x3077, - -//Tx Frame Gen Service - PTT_MSG_CONFIG_TX_PACKET_GEN = 0x3081, - PTT_MSG_START_STOP_TX_PACKET_GEN = 0x3082, - PTT_MSG_POLL_TX_PACKET_PROGRESS_OBSOLETE = 0x3083, - PTT_MSG_FRAME_GEN_STOP_IND_OBSOLETE = 0x3088, - PTT_MSG_QUERY_TX_STATUS = 0x3089, - - -//Tx Frame Power Service - PTT_MSG_CLOSE_TPC_LOOP = 0x30A0, - -//open loop service - PTT_MSG_SET_PACKET_TX_GAIN_TABLE = 0x30A1, - PTT_MSG_SET_PACKET_TX_GAIN_INDEX = 0x30A2, - PTT_MSG_FORCE_PACKET_TX_GAIN = 0x30A3, - -//closed loop(CLPC) service - PTT_MSG_SET_PWR_INDEX_SOURCE = 0x30A4, - PTT_MSG_SET_TX_POWER = 0x30A5, - PTT_MSG_GET_TX_POWER_REPORT = 0x30A7, - PTT_MSG_SAVE_TX_PWR_CAL_TABLE_OBSOLETE = 0x30A8, - PTT_MSG_SET_POWER_LUT = 0x30A9, - PTT_MSG_GET_POWER_LUT = 0x30AA, - PTT_MSG_GET_PACKET_TX_GAIN_TABLE = 0x30AB, - PTT_MSG_SAVE_TX_PWR_FREQ_TABLE_OBSOLETE = 0x30AC, - PTT_MSG_CLPC_TEMP_COMPENSATION_OBSOLETE = 0x30AD, - -//Rx Gain Service - PTT_MSG_DISABLE_AGC_TABLES = 0x30D0, - PTT_MSG_ENABLE_AGC_TABLES = 0x30D1, - PTT_MSG_SET_AGC_TABLES_OBSOLETE = 0x30D2, - PTT_MSG_GET_RX_RSSI = 0x30D3, - PTT_MSG_GET_AGC_TABLE_OBSOLETE = 0x30D5, - -//Rx Frame Catcher Service - PTT_MSG_SET_RX_DISABLE_MODE = 0x30D4, - PTT_MSG_GET_RX_PKT_COUNTS = 0x30E0, - PTT_MSG_RESET_RX_PACKET_STATISTICS = 0x30E2, - PTT_MSG_GET_UNI_CAST_MAC_PKT_RX_RSSI = 0x30E3, - PTT_MSG_GET_UNI_CAST_MAC_PKT_RX_RSSI_CONFIG = 0x30E4, - -//Rx Symbol Service - PTT_MSG_GRAB_RAM = 0x30F0, - PTT_MSG_GRAB_RAM_ONE_CHAIN_OBSOLETE = 0x30F1, - -//Phy Calibration Service - PTT_MSG_RX_IQ_CAL = 0x3100, - PTT_MSG_RX_DCO_CAL = 0x3101, - PTT_MSG_TX_CARRIER_SUPPRESS_CAL = 0x3102, - PTT_MSG_TX_IQ_CAL = 0x3103, - PTT_MSG_EXECUTE_INITIAL_CALS = 0x3104, - PTT_MSG_HDET_CAL = 0x3105, - PTT_MSG_VCO_LINEARITY_CAL_OBSOLETE = 0x3106, - -//Phy Calibration Override Service - PTT_MSG_SET_TX_CARRIER_SUPPRESS_CORRECT = 0x3110, - PTT_MSG_GET_TX_CARRIER_SUPPRESS_CORRECT = 0x3111, - PTT_MSG_SET_TX_IQ_CORRECT = 0x3112, - PTT_MSG_GET_TX_IQ_CORRECT = 0x3113, - PTT_MSG_SET_RX_IQ_CORRECT = 0x3114, - PTT_MSG_GET_RX_IQ_CORRECT = 0x3115, - PTT_MSG_SET_RX_DCO_CORRECT = 0x3116, - PTT_MSG_GET_RX_DCO_CORRECT = 0x3117, - PTT_MSG_SET_TX_IQ_PHASE_NV_TABLE_OBSOLETE = 0x3118, - PTT_MSG_GET_HDET_CORRECT_OBSOLETE = 0x3119, - -//RF Chip Access - PTT_MSG_GET_TEMP_ADC = 0x3202, - PTT_MSG_READ_RF_REG = 0x3203, - PTT_MSG_WRITE_RF_REG = 0x3204, - PTT_MSG_GET_RF_VERSION = 0x3205, - -//Deep sleep support - PTT_MSG_DEEP_SLEEP = 0x3220, - PTT_MSG_READ_SIF_BAR4_REGISTER = 0x3221, - PTT_MSG_WRITE_SIF_BAR4_REGISTER = 0x3222, - PTT_MSG_ENTER_FULL_POWER = 0x3223, - -//Misc - PTT_MSG_SYSTEM_RESET = 0x32A0, //is there any meaning for this in Gen6? - PTT_MSG_LOG_DUMP = 0x32A1, - PTT_MSG_GET_BUILD_RELEASE_NUMBER = 0x32A2, - - -//Messages for Socket App - PTT_MSG_ADAPTER_DISABLED_RSP_OBSOLETE = 0x32A3, - PTT_MSG_ENABLE_ADAPTER = 0x32A4, - PTT_MSG_DISABLE_ADAPTER = 0x32A5, - PTT_MSG_PAUSE_RSP_OBSOLETE = 0x32A6, - PTT_MSG_CONTINUE_RSP_OBSOLETE = 0x32A7, - - PTT_MSG_HALPHY_INIT = 0x32A8, - PTT_MSG_TEST_RXIQ_CAL = 0x32A9, - PTT_MSG_START_TONE_GEN = 0x32AA, - PTT_MSG_STOP_TONE_GEN = 0x32AB, - PTT_MSG_RX_IM2_CAL = 0x32AC, - PTT_MSG_SET_RX_IM2_CORRECT = 0x31AD, - PTT_MSG_GET_RX_IM2_CORRECT = 0x31AE, - PTT_MSG_TEST_DPD_CAL = 0x32AF, // not handle - PTT_MSG_SET_CALCONTROL_BITMAP = 0x32B0, - -//[RY] specific new messages for PRIMA - PTT_MSG_START_WAVEFORM_RF = 0x32B1, - PTT_MSG_STOP_WAVEFORM_RF = 0x32B2, - PTT_MSG_HKDAC_TX_IQ_CAL = 0x32B3, - PTT_MSG_SET_HKADC_TX_IQ_CORRECT = 0x32B4, - PTT_MSG_GET_HKADC_TX_IQ_CORRECT = 0x32B5, - PTT_MSG_SET_DPD_CORRECT = 0x32B6, - PTT_MSG_GET_DPD_CORRECT = 0x32B7, - PTT_MSG_SET_WAVEFORM_RF = 0x32B8, - PTT_MSG_LNA_BAND_CAL = 0x32B9, - PTT_MSG_GET_LNA_BAND_CORRECT = 0x32BA, - PTT_MSG_SET_LNA_BAND_CORRECT = 0x32BB, - PTT_MSG_DPD_CAL = 0x32BC, - -// Suffix'ed Message ID to differential from existing Message name. -// =============================================================== - PTT_MSG_GET_NV_TABLE_PRIMA_V1 = 0x32BD, - PTT_MSG_SET_NV_TABLE_PRIMA_V1 = 0x32BE, - PTT_MSG_RX_IQ_CAL_PRIMA_V1 = 0x32BF, - PTT_MSG_TX_IQ_CAL_PRIMA_V1 = 0x32C0, - PTT_MSG_SET_TX_IQ_CORRECT_PRIMA_V1 = 0x32C1, - PTT_MSG_GET_TX_IQ_CORRECT_PRIMA_V1 = 0x32C2, - PTT_MSG_SET_RX_IQ_CORRECT_PRIMA_V1 = 0x32C3, - PTT_MSG_GET_RX_IQ_CORRECT_PRIMA_V1 = 0x32C4, - PTT_MSG_START_WAVEFORM_PRIMA_V1 = 0x32C5, - PTT_MSG_FORCE_PACKET_TX_GAIN_PRIMA_V1 = 0x32C6, - PTT_MSG_CLPC_CAL_SETUP_PRIMA_V1 = 0x32C7, - PTT_MSG_CLPC_CAL_RESTORE_PRIMA_V1 = 0x32C8, - PTT_MSG_CLOSE_TPC_LOOP_PRIMA_V1 = 0x32C9, - PTT_MSG_SW_CLPC_CAL_PRIMA_V1 = 0x32CA, - PTT_MSG_CLPC_CAL_EXTRA_MEASUREMENT_PRIMA_V1 = 0x32CB, - PTT_MSG_PRIMA_GENERIC_CMD = 0x32CC, - PTT_MSG_DIGITAL_PIN_CONNECTIVITY_TEST_RES = 0X32CD, - - PTT_MSG_EXIT = 0x32ff, - PTT_MAX_MSG_ID = PTT_MSG_EXIT -} ePttMsgId; - -enum -{ - PTT_MSG_PRIMA_GENERIC_CMD_FAST_SET_CHANNEL = 0x0, -}; - -#define PTT_MSG_TYPES_BEGIN_30 PTT_MSG_TYPES_BEGIN -#define PTT_MSG_TYPES_BEGIN_31 PTT_MSG_TYPES_BEGIN + 0x100 -#define PTT_MSG_TYPES_BEGIN_32 PTT_MSG_TYPES_BEGIN + 0x200 - -// for FTM PER feature -enum { -Legacy_FTM = 0, -FTM_PER_TX = 1, -FTM_PER_RX = 2, -}; - -#ifndef tANI_BOOLEAN -#define tANI_BOOLEAN tANI_U8 -#endif - - - -/****************************************************************************************************************** - PTT MESSAGES -******************************************************************************************************************/ -//Init -typedef PACKED_PRE struct PACKED_POST { - tPttModuleVariables ptt; -} tMsgPttMsgInit; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 tableSize; - tANI_U32 chunkSize; - eNvTable nvTable; -} tMsgPttGetNvTable; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 tableSize; - tANI_U32 chunkSize; - eNvTable nvTable; -} tMsgPttSetNvTable; - -typedef PACKED_PRE struct PACKED_POST { - eNvTable nvTable; -} tMsgPttDelNvTable; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttBlankNv; - -typedef PACKED_PRE struct PACKED_POST { - eNvField nvField; - uNvFields fieldData; -} tMsgPttGetNvField; - -typedef PACKED_PRE struct PACKED_POST { - eNvField nvField; - uNvFields fieldData; -} tMsgPttSetNvField; - -typedef PACKED_PRE struct PACKED_POST { - eNvTable nvTable; -} tMsgPttStoreNvTable; - -typedef PACKED_PRE struct PACKED_POST { - eRegDomainId regDomainId; -} tMsgPttSetRegDomain; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 tableSize; - tANI_U32 chunkSize; - eNvTable nvTable; - tANI_U8 nvData[MAX_NV_BIN_SIZE]; -} tMsgPttGetNvBin; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 tableSize; - tANI_U32 chunkSize; - eNvTable nvTable; - tANI_U8 nvData[MAX_NV_BIN_SIZE]; -} tMsgPttSetNvBin; - -//Device Register Access -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 regAddr; - tANI_U32 regValue; -} tMsgPttDbgReadRegister; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 regAddr; - tANI_U32 regValue; -} tMsgPttDbgWriteRegister; - -#define PTT_READ_MEM_MAX 512 -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 memAddr; - tANI_U32 nBytes; - tANI_U32 pMemBuf[PTT_READ_MEM_MAX]; //caller should allocate space -} tMsgPttDbgReadMemory; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 memAddr; - tANI_U32 nBytes; - tANI_U32 pMemBuf[PTT_READ_MEM_MAX]; -} tMsgPttDbgWriteMemory; - -//Device MAC Test Setup -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 chId; - ePhyChanBondState cbState; -} tMsgPttSetChannel; - -typedef PACKED_PRE struct PACKED_POST { - ePhyChainSelect chainSelect; -} tMsgPttEnableChains; - -typedef tIQSamples tWaveformSample; - -//Tx Waveform Gen Service -typedef PACKED_PRE struct PACKED_POST { - tWaveformSample waveform[MAX_TEST_WAVEFORM_SAMPLES]; - tANI_U16 numSamples; - tANI_BOOLEAN clk80; - tANI_U8 reserved[1]; -} tMsgPttSetWaveform; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - tANI_U8 gain; -} tMsgPttSetTxWaveformGain; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - tANI_U32 gain; -} tMsgPttSetTxWaveformGain_PRIMA_V1; - -typedef PACKED_PRE struct PACKED_POST { - ePhyRxChains rxChain; - tANI_U8 gain; -} tMsgPttSetRxWaveformGain; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsPowerAdcReadings txPowerAdc; -} tMsgPttGetWaveformPowerAdc; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttStopWaveform; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttClpcCalSetup_PRIMA_V1; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U16 setup_measure; - tANI_U16 setup_txDmdPwrOffset; - tANI_U16 measure_totalExtraPt; - tANI_U16 measure_currentMeasurePtIdx; - tANI_U8 plut[256]; -} tMsgPttClpcCalExtraMeasurement_PRIMA_V1; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttClpcCalRestore_PRIMA_V1; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 startIndex; - tANI_U32 numSamples; -} tMsgPttStartWaveform; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 startIndex; - tANI_U32 numSamples; -} tMsgPttStartWaveform_PRIMA_V1; - -// Added for PRIMA -typedef PACKED_PRE struct PACKED_POST { - tWaveformSample waveform[MAX_TEST_WAVEFORM_SAMPLES]; - tANI_U16 numSamples; - tANI_BOOLEAN clk80; - tANI_U8 reserved[1]; -} tMsgPttSetWaveformRF; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 startIndex; - tANI_U32 numSamples; -} tMsgPttStartWaveformRF; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttStopWaveformRF; - -//Tx Frame Gen Service -typedef PACKED_PRE struct PACKED_POST { - sPttFrameGenParams frameParams; -} tMsgPttConfigTxPacketGen; - -typedef PACKED_PRE struct PACKED_POST { - tANI_BOOLEAN startStop; - tANI_U8 reserved[3]; -} tMsgPttStartStopTxPacketGen; - -typedef PACKED_PRE struct PACKED_POST { - sTxFrameCounters numFrames; - tANI_BOOLEAN status; - tANI_U8 reserved[3]; -} tMsgPttQueryTxStatus; - -//Tx Frame Power Service -typedef PACKED_PRE struct PACKED_POST { - tANI_BOOLEAN tpcClose; - tANI_U8 reserved[3]; -} tMsgPttCloseTpcLoop; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 tpcClose; -} tMsgPttCloseTpcLoop_PRIMA_V1; - - - //open loop service -typedef PACKED_PRE struct PACKED_POST { - - ePhyTxChains txChain; - tANI_U8 minIndex; - tANI_U8 maxIndex; - tANI_U8 reserved[2]; - tANI_U8 gainTable[TPC_MEM_GAIN_LUT_DEPTH]; -} tMsgPttSetPacketTxGainTable; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - tANI_U8 gainTable[TPC_MEM_GAIN_LUT_DEPTH]; -} tMsgPttGetPacketTxGainTable; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U8 index; - tANI_U8 reserved[3]; -} tMsgPttSetPacketTxGainIndex; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - tANI_U8 gain; - tANI_U8 reserved[3]; -} tMsgPttForcePacketTxGain; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - tANI_U32 gain; -} tMsgPttForcePacketTxGain_PRIMA_V1; - - -typedef PACKED_PRE struct PACKED_POST { - ePowerTempIndexSource indexSource; -} tMsgPttSetPwrIndexSource; - -typedef PACKED_PRE struct PACKED_POST { - t2Decimal dbmPwr; - tANI_U8 reserved[2]; -} tMsgPttSetTxPower; - -typedef tTxPowerReport tMsgPttGetTxPowerReport; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - - tANI_U8 minIndex; - tANI_U8 maxIndex; - tANI_U8 reserved[2]; - - tANI_U8 powerLut[TPC_MEM_POWER_LUT_DEPTH]; -} tMsgPttSetPowerLut; - -typedef PACKED_PRE struct PACKED_POST { - ePhyTxChains txChain; - - tANI_U8 powerLut[TPC_MEM_POWER_LUT_DEPTH]; -} tMsgPttGetPowerLut; - - -//Rx Gain Service -typedef PACKED_PRE struct PACKED_POST { - sRxChainsAgcDisable gains; -} tMsgPttDisableAgcTables; - - -typedef PACKED_PRE struct PACKED_POST { - sRxChainsAgcEnable enables; -} tMsgPttEnableAgcTables; - -typedef PACKED_PRE struct PACKED_POST { - sRxChainsRssi rssi; -} tMsgPttGetRxRssi; - -typedef PACKED_PRE struct PACKED_POST { - sRxChainsRssi rssi; -}tMsgPttGetUnicastMacPktRxRssi; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 conf; -}tMsgPttGetUnicastMacPktRxRssiConf_PRIMA_V1; - -//Rx Frame Catcher Service -typedef PACKED_PRE struct PACKED_POST { - sRxTypesDisabled disabled; -} tMsgPttSetRxDisableMode; - -typedef PACKED_PRE struct PACKED_POST { - sRxFrameCounters counters; -} tMsgPttGetRxPktCounts; - - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttResetRxPacketStatistics; - - - - - -//ADC Sample Service -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 startSample; //index of first requested sample, 0 causes new capture - tANI_U32 numSamples; //number of samples to transfer to host - eGrabRamSampleType sampleType; - tGrabRamSample grabRam[MAX_REQUESTED_GRAB_RAM_SAMPLES]; -} tMsgPttGrabRam; - - -//Phy Calibration Service -typedef PACKED_PRE struct PACKED_POST { - sRxChainsIQCalValues calValues; - eGainSteps gain; -} tMsgPttRxIqCal; - -typedef PACKED_PRE struct PACKED_POST { - tRxChainsDcoCorrections calValues; - tANI_U8 gain; -} tMsgPttRxDcoCal; - -typedef PACKED_PRE struct PACKED_POST { - tRxChainsIm2Corrections calValues; - eGainSteps gain; - tANI_U8 im2CalOnly; -} tMsgPttRxIm2Cal; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsLoCorrections calValues; - tANI_U8 reserve[2]; - eGainSteps gain; -} tMsgPttTxCarrierSuppressCal; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsIQCalValues calValues; - tANI_U8 reserve[2]; - eGainSteps gain; -} tMsgPttTxIqCal; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsHKIQCalValues calValues; - eGainSteps gain; -} tMsgPttHKdacTxIqCal; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 unused; -} tMsgPttExecuteInitialCals; - -typedef PACKED_PRE struct PACKED_POST { - sRfHdetCalValues hdetCalValues; -} tMsgPttHdetCal; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U16 clpcMode; - tANI_U16 txCmdPwr; - tANI_U16 pwrMax_pwrMin; - tANI_U16 step; - tANI_U8 plut[256]; -} tMsgPttClpcSwCal_PRIMA_V1; - - -//Phy Calibration Override Service -typedef PACKED_PRE struct PACKED_POST { - sTxChainsLoCorrections calValues; - tANI_U8 reserve[2]; - eGainSteps gain; -} tMsgPttSetTxCarrierSuppressCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsLoCorrections calValues; - tANI_U8 reserve[2]; - eGainSteps gain; -} tMsgPttGetTxCarrierSuppressCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsIQCalValues calValues; - tANI_U8 reserve[2]; - eGainSteps gain; -} tMsgPttSetTxIqCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsIQCalValues calValues; - tANI_U8 reserve[2]; - eGainSteps gain; -} tMsgPttGetTxIqCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsHKIQCalValues calValues; - eGainSteps gain; -} tMsgPttHKdacSetTxIqCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsHKIQCalValues calValues; - eGainSteps gain; -} tMsgPttHKdacGetTxIqCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sRxChainsIQCalValues calValues; - eGainSteps gain; -} tMsgPttSetRxIqCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sRxChainsIQCalValues calValues; - eGainSteps gain; -} tMsgPttGetRxIqCorrect; - -typedef PACKED_PRE struct PACKED_POST { - tRxChainsDcoCorrections calValues; - tANI_U8 gain; -} tMsgPttSetRxDcoCorrect; - -typedef PACKED_PRE struct PACKED_POST { - tRxChainsDcoCorrections calValues; - tANI_U8 gain; -} tMsgPttGetRxDcoCorrect; - -typedef PACKED_PRE struct PACKED_POST { - tRxChainsIm2Corrections calValues; - tANI_U8 dummy; -} tMsgPttSetRxIm2Correct; - -typedef PACKED_PRE struct PACKED_POST { - tRxChainsIm2Corrections calValues; - tANI_U8 dummy; -} tMsgPttGetRxIm2Correct; - -typedef PACKED_PRE struct PACKED_POST { - eRfTempSensor tempSensor; - tTempADCVal tempAdc; - tANI_U8 reserved[4 - sizeof(tTempADCVal)]; -} tMsgPttGetTempAdc; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 addr; - tANI_U32 mask; - tANI_U32 shift; - tANI_U32 value; -} tMsgPttReadRfField; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 addr; - tANI_U32 mask; - tANI_U32 shift; - tANI_U32 value; -} tMsgPttWriteRfField; - -//SIF bar4 Register Access -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 sifRegAddr; - tANI_U32 sifRegValue; -} tMsgPttReadSifBar4Register; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 sifRegAddr; - tANI_U32 sifRegValue; -} tMsgPttWriteSifBar4Register; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttDeepSleep; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttEnterFullPower; - -//Misc. -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 notUsed; -} tMsgPttSystemReset; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 cmd; - tANI_U32 arg1; - tANI_U32 arg2; - tANI_U32 arg3; - tANI_U32 arg4; -} tMsgPttLogDump; - -typedef PACKED_PRE struct PACKED_POST { - sBuildReleaseParams relParams; -} tMsgPttGetBuildReleaseNumber; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 revId; -} tMsgPttGetRFVersion; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 option; //dummy variable -} tMsgPttCalControlBitmap; - -//#ifdef VERIFY_HALPHY_SIMV_MODEL - - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 option; //dummy variable -} tMsgPttHalPhyInit; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 option; //dummy variable -} tMsgPttRxIQTest; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsDPDCalValues calValues; - eGainSteps gain; -} tMsgPttDpdCal; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U8 lutIdx; - tANI_U8 band; -} tMsgPttStartToneGen; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U32 option; //dummy variable -} tMsgPttStopToneGen; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsLnaBandCalValues calValues; - eGainSteps gain; -} tMsgPttLnaBandCal; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsLnaBandCalValues calValues; - eGainSteps gain; -} tMsgPttGetLnaBandCalCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsLnaBandCalValues calValues; - eGainSteps gain; -} tMsgPttSetLnaBandCalCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsDPDCalValues calValues; - eGainSteps gain; -}tMsgPttSetDPDCorrect; - -typedef PACKED_PRE struct PACKED_POST { - sTxChainsDPDCalValues calValues; - eGainSteps gain; -}tMsgPttGetDPDCorrect; - -typedef PACKED_PRE struct PACKED_POST { - tQWPTT_U32 cmdIdx; - tQWPTT_U32 param1; - tQWPTT_U32 param2; - tQWPTT_U32 param3; - tQWPTT_U32 param4; -} tMsgPttPrimaGenericCmd; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U16 testID; - tANI_U16 result; -} tMsgPttPinConnTestRes; -//#endif - -/****************************************************************************************************************** - END OF PTT MESSAGES -******************************************************************************************************************/ - -typedef PACKED_PRE union PACKED_POST pttMsgUnion{ -//typedef union pttMsgUnion { - tMsgPttMsgInit MsgInit; - tMsgPttGetNvTable GetNvTable; - tMsgPttSetNvTable SetNvTable; - tMsgPttDelNvTable DelNvTable; - tMsgPttBlankNv BlankNv; - tMsgPttStoreNvTable StoreNvTable; - tMsgPttSetRegDomain SetRegDomain; - tMsgPttGetNvField GetNvField; - tMsgPttSetNvField SetNvField; - tMsgPttGetNvBin GetNvBin; - tMsgPttSetNvBin SetNvBin; - tMsgPttDbgReadRegister DbgReadRegister; - tMsgPttDbgWriteRegister DbgWriteRegister; - tMsgPttDbgReadMemory DbgReadMemory; - tMsgPttDbgWriteMemory DbgWriteMemory; - tMsgPttEnableChains EnableChains; - tMsgPttSetChannel SetChannel; - tMsgPttSetWaveform SetWaveform; - tMsgPttSetTxWaveformGain SetTxWaveformGain; - tMsgPttSetTxWaveformGain_PRIMA_V1 SetTxWaveformGain_PRIMA_V1; - tMsgPttGetWaveformPowerAdc GetWaveformPowerAdc; - tMsgPttStartWaveform StartWaveform; - tMsgPttStartWaveform_PRIMA_V1 StartWaveform_PRIMA_V1; - tMsgPttStopWaveform StopWaveform; - tMsgPttSetRxWaveformGain SetRxWaveformGain; - tMsgPttConfigTxPacketGen ConfigTxPacketGen; - tMsgPttStartStopTxPacketGen StartStopTxPacketGen; - tMsgPttQueryTxStatus QueryTxStatus; - tMsgPttCloseTpcLoop CloseTpcLoop; - tMsgPttCloseTpcLoop_PRIMA_V1 CloseTpcLoop_PRIMA_V1; - tMsgPttSetPacketTxGainTable SetPacketTxGainTable; - tMsgPttGetPacketTxGainTable GetPacketTxGainTable; - tMsgPttSetPacketTxGainIndex SetPacketTxGainIndex; - tMsgPttForcePacketTxGain ForcePacketTxGain; - tMsgPttForcePacketTxGain_PRIMA_V1 ForcePacketTxGain_PRIMA_V1; - tMsgPttSetPwrIndexSource SetPwrIndexSource; - tMsgPttSetTxPower SetTxPower; - tMsgPttGetTxPowerReport GetTxPowerReport; - tMsgPttSetPowerLut SetPowerLut; - tMsgPttGetPowerLut GetPowerLut; - tMsgPttDisableAgcTables DisableAgcTables; - tMsgPttEnableAgcTables EnableAgcTables; - tMsgPttGetRxRssi GetRxRssi; - tMsgPttGetUnicastMacPktRxRssi GetUnicastMacPktRxRssi; - tMsgPttGetUnicastMacPktRxRssiConf_PRIMA_V1 GetUnicastMacPktRxRssiConf_PRIMA_V1; - tMsgPttSetRxDisableMode SetRxDisableMode; - tMsgPttGetRxPktCounts GetRxPktCounts; - tMsgPttResetRxPacketStatistics ResetRxPacketStatistics; - tMsgPttGrabRam GrabRam; - tMsgPttRxIqCal RxIqCal; - tMsgPttRxDcoCal RxDcoCal; - tMsgPttRxIm2Cal RxIm2Cal; - - tMsgPttExecuteInitialCals ExecuteInitialCals; - tMsgPttTxCarrierSuppressCal TxCarrierSuppressCal; - tMsgPttTxIqCal TxIqCal; - tMsgPttHKdacTxIqCal HKdacTxIqCal; - tMsgPttClpcCalSetup_PRIMA_V1 ClpcCalSetup_PRIMA_V1; - tMsgPttClpcCalRestore_PRIMA_V1 ClpcCalRestore_PRIMA_V1; - tMsgPttHdetCal HdetCal; - tMsgPttClpcSwCal_PRIMA_V1 ClpcSwCal_PRIMA_V1; - tMsgPttClpcCalExtraMeasurement_PRIMA_V1 ClpcCalExtraMeasurement_PRIMA_V1; - tMsgPttSetTxCarrierSuppressCorrect SetTxCarrierSuppressCorrect; - tMsgPttGetTxCarrierSuppressCorrect GetTxCarrierSuppressCorrect; - tMsgPttSetTxIqCorrect SetTxIqCorrect; - tMsgPttGetTxIqCorrect GetTxIqCorrect; - tMsgPttSetRxIqCorrect SetRxIqCorrect; - tMsgPttGetRxIqCorrect GetRxIqCorrect; - tMsgPttSetRxDcoCorrect SetRxDcoCorrect; - tMsgPttGetRxDcoCorrect GetRxDcoCorrect; - tMsgPttSetRxIm2Correct SetRxIm2Correct; - tMsgPttGetRxIm2Correct GetRxIm2Correct; - tMsgPttHKdacSetTxIqCorrect HKdacSetTxIqCorrect; - tMsgPttHKdacGetTxIqCorrect HKdacGetTxIqCorrect; - - tMsgPttGetTempAdc GetTempAdc; - tMsgPttReadRfField ReadRfField; - tMsgPttWriteRfField WriteRfField; - tMsgPttCalControlBitmap SetCalControlBitmap; - -//#ifdef VERIFY_HALPHY_SIMV_MODEL - - tMsgPttHalPhyInit InitOption; - tMsgPttRxIQTest RxIQTest; - tMsgPttDpdCal DpdCal; - tMsgPttStartToneGen StartToneGen; - tMsgPttStopToneGen StopToneGen; -//#endif - tMsgPttDeepSleep DeepSleep; - tMsgPttReadSifBar4Register ReadSifBar4Register; - tMsgPttWriteSifBar4Register WriteSifBar4Register; - tMsgPttEnterFullPower EnterFullPower; - tMsgPttSystemReset SystemReset; - tMsgPttLogDump LogDump; - tMsgPttGetBuildReleaseNumber GetBuildReleaseNumber; - tMsgPttGetRFVersion GetRFVersion; - -//[RY] added for PRIMA - tMsgPttSetWaveformRF SetWaveformRF; - tMsgPttStopWaveformRF StopWaveformRF; - tMsgPttStartWaveformRF StartWaveformRF; - tMsgPttLnaBandCal LnaBandCal; - tMsgPttGetLnaBandCalCorrect GetLnaBandCalCorrect; - tMsgPttSetLnaBandCalCorrect SetLnaBandCalCorrect; - tMsgPttGetDPDCorrect GetDPDCorrect; - tMsgPttSetDPDCorrect SetDPDCorrect; - tMsgPttDpdCal DPDCal; - tMsgPttPrimaGenericCmd PrimaGenericCmd; - tMsgPttPinConnTestRes PinConnTestRes; -} uPttMsgs; - -typedef PACKED_PRE struct PACKED_POST { - tANI_U16 msgId; - tANI_U16 msgBodyLength; //actually, the length of all the fields in this structure - eQWPttStatus msgResponse; - uPttMsgs msgBody; -} tPttMsgbuffer, *tpPttMsgbuffer; - - -typedef PACKED_PRE struct PACKED_POST { - /* - * success or failure - */ - tANI_U32 status; - tPttMsgbuffer pttMsgBuffer; -} tProcessPttRspParams, *tpProcessPttRspParams; - -/* End of Ptt Parameters */ - -#endif |
