|
@@ -1748,6 +1748,8 @@ typedef enum {
|
|
|
/* Event to indicate completion on RF path */
|
|
|
WMI_PDEV_SET_RF_PATH_RESP_EVENTID,
|
|
|
|
|
|
+ /* Event to get AOA phasedelta values for all gain tables from HALPHY */
|
|
|
+ WMI_PDEV_ENHANCED_AOA_PHASEDELTA_EVENTID,
|
|
|
|
|
|
/* VDEV specific events */
|
|
|
/** VDEV started event in response to VDEV_START request */
|
|
@@ -40444,6 +40446,131 @@ typedef struct {
|
|
|
A_UINT32 perChainIbfCalVal[WMI_MAX_CHAINS_FOR_AOA_RCC];
|
|
|
} wmi_pdev_aoa_phasedelta_evt_fixed_param;
|
|
|
|
|
|
+#define WMI_AOA_MAX_SUPPORTED_CHAINS_GET(chain_data) \
|
|
|
+ WMI_GET_BITS(chain_data, 0, 16)
|
|
|
+#define WMI_AOA_MAX_SUPPORTED_CHAINS_SET(chain_data, value) \
|
|
|
+ WMI_SET_BITS(chain_data, 0, 16, value)
|
|
|
+
|
|
|
+#define WMI_AOA_SUPPORTED_CHAINMASK_GET(chain_data) \
|
|
|
+ WMI_GET_BITS(chain_data, 16, 16)
|
|
|
+#define WMI_AOA_SUPPORTED_CHAINMASK_SET(chain_data, value) \
|
|
|
+ WMI_SET_BITS(chain_data, 16, 16, value)
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ /** TLV tag and len; tag equals
|
|
|
+ * WMITLV_TAG_STRUC_wmi_pdev_enhanced_aoa_phasedelta_eventid */
|
|
|
+ A_UINT32 tlv_header;
|
|
|
+ /* Current Operating Channel Frequency in MHz */
|
|
|
+ A_UINT32 freq;
|
|
|
+ /** pdev_id:
|
|
|
+ * Identify the MAC.
|
|
|
+ * See macros starting with WMI_PDEV_ID_ for values.
|
|
|
+ * In non-DBDC case host should set it to 0.
|
|
|
+ */
|
|
|
+ A_UINT32 pdev_id;
|
|
|
+ /** chain_info:
|
|
|
+ * B0 -- B15 : Max number of chains supported
|
|
|
+ * B16 --B31 : Data shared for chainmask -
|
|
|
+ * indicates the chains to which the data shared.
|
|
|
+ */
|
|
|
+ union {
|
|
|
+ struct {
|
|
|
+ A_UINT32 max_supported_chains:16,
|
|
|
+ data_for_chainmask:16;
|
|
|
+ };
|
|
|
+ A_UINT32 chain_info;
|
|
|
+ };
|
|
|
+ /** XBAR configuration to get RF2BB/BB2RF chain mapping
|
|
|
+ * Samples of xbar_config,
|
|
|
+ * If xbar_config is 0xFAC688(hex):
|
|
|
+ * RF chains 0-7 are connected to BB chains 0-7
|
|
|
+ * here,
|
|
|
+ * bits 0 to 2 = 0, maps BB chain 0 for RF chain 0
|
|
|
+ * bits 3 to 5 = 1, maps BB chain 1 for RF chain 1
|
|
|
+ * bits 6 to 8 = 2, maps BB chain 2 for RF chain 2
|
|
|
+ * bits 9 to 11 = 3, maps BB chain 3 for RF chain 3
|
|
|
+ * bits 12 to 14 = 4, maps BB chain 4 for RF chain 4
|
|
|
+ * bits 15 to 17 = 5, maps BB chain 5 for RF chain 5
|
|
|
+ * bits 18 to 20 = 6, maps BB chain 6 for RF chain 6
|
|
|
+ * bits 21 to 23 = 7, maps BB chain 7 for RF chain 7
|
|
|
+ *
|
|
|
+ * If xbar_config is 0x688FAC(hex):
|
|
|
+ * RF chains 0-3 are connected to BB chains 4-7
|
|
|
+ * RF chains 4-7 are connected to BB chains 0-3
|
|
|
+ * here,
|
|
|
+ * bits 0 to 2 = 4, maps BB chain 4 for RF chain 0
|
|
|
+ * bits 3 to 5 = 5, maps BB chain 5 for RF chain 1
|
|
|
+ * bits 6 to 8 = 6, maps BB chain 6 for RF chain 2
|
|
|
+ * bits 9 to 11 = 7, maps BB chain 7 for RF chain 3
|
|
|
+ * bits 12 to 14 = 0, maps BB chain 0 for RF chain 4
|
|
|
+ * bits 15 to 17 = 1, maps BB chain 1 for RF chain 5
|
|
|
+ * bits 18 to 20 = 2, maps BB chain 2 for RF chain 6
|
|
|
+ * bits 21 to 23 = 3, maps BB chain 3 for RF chain 7
|
|
|
+ */
|
|
|
+ A_UINT32 xbar_config;
|
|
|
+ /**
|
|
|
+ * IBF cal values:
|
|
|
+ * Used for final AoA calculation
|
|
|
+ * [AoAPhase = ( PhaseDeltaValue + IBFcalValue ) % 1024]
|
|
|
+ */
|
|
|
+ A_UINT32 per_chain_ibf_cal_val[WMI_MAX_CHAINS];
|
|
|
+ /**
|
|
|
+ * This TLV is followed by TLV arrays containing
|
|
|
+ * different types of data header and data buffer TLVs:
|
|
|
+ * 1. wmi_enhanced_aoa_gain_phase_data_hdr.
|
|
|
+ * This TLV contains the array of structure fields which indicate
|
|
|
+ * the type and format of data carried in the following data buffer
|
|
|
+ * TLV.
|
|
|
+ * 2. aoa_data_buf[] - Data buffer TLV.
|
|
|
+ * TLV header contains the total buffer size.
|
|
|
+ * Data buffer contains the phase_delta_array[Chains][GainEntries]
|
|
|
+ * in absolute phase values ranging 0-1024 and
|
|
|
+ * gain_delta_array[Chains][GainEntries] are gain index values.
|
|
|
+ */
|
|
|
+} wmi_pdev_enhanced_aoa_phasedelta_evt_fixed_param;
|
|
|
+
|
|
|
+#define WMI_AOA_DATA_TYPE_GET(data_info) \
|
|
|
+ WMI_GET_BITS(data_info, 0, 8)
|
|
|
+#define WMI_AOA_DATA_TYPE_SET(data_info,value) \
|
|
|
+ WMI_SET_BITS(data_info, 0, 8, value)
|
|
|
+
|
|
|
+#define WMI_AOA_NUM_ENTIRES_GET(data_info) \
|
|
|
+ WMI_GET_BITS(data_info, 8, 8)
|
|
|
+#define WMI_AOA_NUM_DATA_ENTRIES_SET(data_info,value) \
|
|
|
+ WMI_SET_BITS(data_info, 8, 8, value)
|
|
|
+
|
|
|
+typedef enum _WMI_AOA_EVENT_DATA_TYPE {
|
|
|
+ WMI_PHASE_DELTA_ARRAY = 0x0,
|
|
|
+ WMI_GAIN_GROUP_STOP_ARRAY = 0x1,
|
|
|
+ /* add new types here */
|
|
|
+ WMI_MAX_DATA_TYPE_ARRAY,
|
|
|
+} WMI_AOA_EVENT_DATA_TYPE;
|
|
|
+
|
|
|
+typedef struct {
|
|
|
+ /** TLV tag and len; tag equals
|
|
|
+ * WMITLV_TAG_STRUC_wmi_pdev_enhanced_aoa_phasedelta_eventid */
|
|
|
+ A_UINT32 tlv_header;
|
|
|
+ /** data_info:
|
|
|
+ * Data follows the LSB first and MSB second order in a 32bit word
|
|
|
+ * bit mapping:
|
|
|
+ * B0 -- B7 : Data type
|
|
|
+ * B8 -- B15 : Number of entries to be parsed in terms of 32bit word
|
|
|
+ *
|
|
|
+ * If data is Phase delta values - Data type is 0x0
|
|
|
+ * group stop gain index values - Data type is 0x1
|
|
|
+ *
|
|
|
+ * num_entries - Total number of data entries in uint32
|
|
|
+ */
|
|
|
+ union {
|
|
|
+ struct {
|
|
|
+ A_UINT32 data_type:8,
|
|
|
+ num_entries:8,
|
|
|
+ reserved:16;
|
|
|
+ };
|
|
|
+ A_UINT32 data_info;
|
|
|
+ };
|
|
|
+} wmi_enhanced_aoa_gain_phase_data_hdr;
|
|
|
+
|
|
|
/* WMI_HALPHY_CAL_LIST:
|
|
|
*
|
|
|
* Below is the list of HALPHY online CAL currently enabled in
|