From 3e8b9ccb6648a0971777f53cbf1b7d1c4ef2d210 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 31 Jul 2023 03:36:03 -0700 Subject: [PATCH] fw-api: CL 24006951 - update fw common interface files Change-Id: I5d9f4263a88223680b349335c9a89ea79be669c9 WMI: add enhanced_aoa_gain_table_capabilities in SERVICE_READY_EXT2_EVENT msg CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 6 ++- fw/wmi_unified.h | 98 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 104 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 0f6d8929d3..50be005e9a 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1396,6 +1396,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_enhanced_aoa_gain_phase_data_hdr, WMITLV_TAG_STRUC_wmi_ctrl_path_sta_rrm_stats_struct, WMITLV_TAG_STRUC_wmi_pdev_wsi_stats_info_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_enhanced_aoa_caps_param, + WMITLV_TAG_STRUC_wmi_enhanced_aoa_per_band_caps_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -5519,7 +5521,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_sw_cal_ver_cap, sw_cal_ver_cap, WMITLV_SIZE_VAR) \ WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_INT32, A_INT32, hw_tx_power_signed, WMITLV_SIZE_FIX, WMI_HW_TX_POWER_CAPS_MAX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WMI_COEX_FIX_CHANNEL_CAPABILITIES, coex_fix_channel_caps, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_aux_dev_capabilities, aux_dev_caps, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_aux_dev_capabilities, aux_dev_caps, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_caps_param, aoa_caps_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_enhanced_aoa_per_band_caps_param, aoa_per_band_caps_param, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EXT2_EVENTID); #define WMITLV_TABLE_WMI_SPECTRAL_CAPABILITIES_EVENTID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index c00fcf5393..94a6f819a3 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -40597,6 +40597,104 @@ typedef struct { }; } wmi_enhanced_aoa_gain_phase_data_hdr; +typedef enum _WMI_AGC_GAIN_TABLE_IDX { + WMI_AGC_DG_TABLE_IDX = 0, + WMI_AGC_LG_TABLE_IDX, + WMI_AGC_VLG_TABLE_IDX, + WMI_AGC_MAX_GAIN_TABLE_IDX = 8, +} WMI_AGC_GAIN_TABLE_IDX; + +#define WMI_AOA_BDF_NUM_GAIN_TBL_ELEMS_PER_WORD 4 +#define WMI_AOA_NUM_GAIN_TBL_ELEMS_PER_WORD 2 +#define WMI_AOA_NUM_BYTES_FOR_BDF_GAIN_TBL_ELEM 1 +#define WMI_AOA_NUM_BYTES_FOR_GAIN_TBL_ELEM 2 + +/* Number of words required to store max number of gain table elements = ((max number of gain table elements)/(number of gain table elements per word)) */ +/* 2 bytes (at most)used to store each gain table elements */ +#define WMI_AOA_NUM_WORD_ENTRIES_FOR_MAX_NUM_AGC_TBL_ELEMS (WMI_AGC_MAX_GAIN_TABLE_IDX / WMI_AOA_NUM_GAIN_TBL_ELEMS_PER_WORD) + +/* 1 byte (at most) used to store each gain table elements obtained from BDF */ +#define WMI_AOA_BDF_NUM_WORD_ENTRIES_FOR_MAX_NUM_AGC_TBL_ELEMS (WMI_AGC_MAX_GAIN_TABLE_IDX / WMI_AOA_BDF_NUM_GAIN_TBL_ELEMS_PER_WORD) + +typedef enum { + WMI_AOA_2G = 0, + WMI_AOA_5G, + WMI_AOA_6G, + WMI_AOA_MAX_BAND, +} WMI_AOA_SUPPORTED_BANDS; + +#define WMI_AOA_MAX_AGC_GAIN_GET(pcap_var, tbl_idx, output) \ + do { \ + A_UINT8 word_idx = 0; \ + A_UINT8 bit_index = 0; \ + A_UINT8 nth_byte = 0; \ + word_idx = tbl_idx >> 1; \ + nth_byte = (tbl_idx % WMI_AOA_NUM_GAIN_TBL_ELEMS_PER_WORD); \ + bit_index = nth_byte * 8 * WMI_AOA_NUM_BYTES_FOR_GAIN_TBL_ELEM; \ + output = WMI_GET_BITS(*(pcap_var + word_idx), bit_index, 16); \ + } while (0) + +#define WMI_AOA_MAX_AGC_GAIN_SET(pcap_var, tbl_idx, value) \ + do { \ + A_UINT8 word_idx = 0; \ + A_UINT8 bit_index = 0; \ + A_UINT8 nth_byte = 0; \ + word_idx = tbl_idx >> 1; \ + nth_byte = (tbl_idx % WMI_AOA_NUM_GAIN_TBL_ELEMS_PER_WORD); \ + bit_index = nth_byte * 8 * WMI_AOA_NUM_BYTES_FOR_GAIN_TBL_ELEM; \ + WMI_SET_BITS(*(pcap_var+word_idx), bit_index, 16, value); \ + } while (0) + +#define WMI_AOA_MAX_BDF_ENTRIES_GET(pcap_var, tbl_idx, output) \ + do { \ + A_UINT8 word_idx = 0; \ + A_UINT8 bit_index = 0; \ + A_UINT8 nth_byte = 0; \ + word_idx = tbl_idx >> 2; \ + nth_byte = (tbl_idx % WMI_AOA_BDF_NUM_GAIN_TBL_ELEMS_PER_WORD); \ + bit_index = nth_byte * 8 * WMI_AOA_NUM_BYTES_FOR_BDF_GAIN_TBL_ELEM; \ + output = WMI_GET_BITS(*(pcap_var+word_idx), bit_index, 8); \ + } while (0) + +#define WMI_AOA_MAX_BDF_ENTRIES_SET(pcap_var, tbl_idx, value) \ + do { \ + A_UINT8 word_idx = 0; \ + A_UINT8 nth_byte = 0; \ + A_UINT8 bit_index = 0; \ + word_idx = tbl_idx >> 2; \ + nth_byte = (tbl_idx % WMI_AOA_BDF_NUM_GAIN_TBL_ELEMS_PER_WORD); \ + bit_index = nth_byte * 8 * WMI_AOA_NUM_BYTES_FOR_BDF_GAIN_TBL_ELEM; \ + WMI_SET_BITS(*(pcap_var+word_idx), bit_index, 8, value); \ + } while (0) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_enhanced_aoa_caps_param */ + A_UINT32 tlv_header; + + /* Maximum number of Rx AGC gain tables supported */ + A_UINT32 max_agc_gain_tbls; + + /* 1 byte is used to store bdf max number of elements in each gain tables */ + A_UINT32 max_bdf_gain_entries[WMI_AOA_BDF_NUM_WORD_ENTRIES_FOR_MAX_NUM_AGC_TBL_ELEMS]; + + /** This TLV is followed by TLV array - wmi_enhanced_aoa_per_band_caps_param + * containing band specifc agc gain table information. + */ +} wmi_enhanced_aoa_caps_param; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_enhanced_aoa_per_band_caps_param */ + A_UINT32 tlv_header; + + /* Band information - WMI_AOA_SUPPORTED_BANDS */ + A_UINT32 band_info; + + /* 2 bytes are used to store agc max number of elements in each gain tables */ + A_UINT32 max_agc_gain[WMI_AOA_NUM_WORD_ENTRIES_FOR_MAX_NUM_AGC_TBL_ELEMS]; +} wmi_enhanced_aoa_per_band_caps_param; + /* WMI_HALPHY_CAL_LIST: * * Below is the list of HALPHY online CAL currently enabled in diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 7b7159003f..0512f840d4 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1376 +#define __WMI_REVISION_ 1377 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work