From 40b76f40b3e45bc1b5c33b791d52a2775a1f811d Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 29 May 2026 18:05:45 -0700 Subject: [PATCH] fw-api: CL 32697676 - update fw common interface files Change-Id: Ieb8df0407342ff4a8a8c3eec180765795e75a2a1 CRs-Fixed: 3830439 --- fw/wmi_services.h | 7 ++++ fw/wmi_tlv_defs.h | 40 ++++++++++++++++++ fw/wmi_unified.h | 104 ++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 152 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 830df224684c..43b84dad12bb 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -834,6 +834,13 @@ typedef enum { WMI_SERVICE_WMI_ANOMALY_REPORTING = 517, + /* + * Indicates that FW supports C-TAS power indication reporting and + * power limit enquiring through cmds WMI_SET_MODIFY_TX_PLIM_CMDID, + * WMI_GET_AVG_TX_POWER_CMDID and WMI_GET_TX_POWER_CALLING_CMDID. + */ + WMI_SERVICE_CTAS_PLIM_INDICATION_SUPPORT = 518, + WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index d9ad9c4d8b16..aeff9c6e8d85 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1648,6 +1648,14 @@ typedef enum { WMITLV_TAG_STRUC_wmi_nan_disc_service_req_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_nan_disc_cancel_service_req_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_nan_disc_service_req_terminated_event_fixed_param, + WMITLV_TAG_STRUC_wmi_set_modify_tx_plim_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_get_avg_tx_power_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_get_tx_power_calling_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_modify_tx_plim_event_fixed_param, + WMITLV_TAG_STRUC_wmi_avg_tx_power_event_fixed_param, + WMITLV_TAG_STRUC_wmi_avg_tx_power_region_per_antenna_chain, + WMITLV_TAG_STRUC_wmi_plimit_table_event_fixed_param, + WMITLV_TAG_STRUC_wmi_tx_power_per_antenna_chain, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2261,6 +2269,9 @@ typedef enum { OP(WMI_PEER_SET_MAPC_PARAMS_CMDID) \ OP(WMI_NAN_DISC_SERVICE_REQ_CMDID) \ OP(WMI_NAN_DISC_CANCEL_SERVICE_REQ_CMDID) \ + OP(WMI_SET_MODIFY_TX_PLIM_CMDID) \ + OP(WMI_GET_AVG_TX_POWER_CMDID) \ + OP(WMI_GET_TX_POWER_CALLING_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2635,6 +2646,9 @@ typedef enum { OP(WMI_NAN_DISC_SERVICE_RSP_EVENTID) \ OP(WMI_NAN_DISC_MATCH_EVENTID) \ OP(WMI_NAN_DISC_SERVICE_REQ_TERMINATED_EVENTID) \ + OP(WMI_MODIFY_TX_PLIM_EVENTID) \ + OP(WMI_AVG_TX_POWER_EVENTID) \ + OP(WMI_PLIMIT_TABLE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -6358,6 +6372,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_scan_cache_result_cmd_fixed_param, wmi_get_scan_cache_result_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_GET_SCAN_CACHE_RESULT_CMDID); +#define WMITLV_TABLE_WMI_SET_MODIFY_TX_PLIM_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_modify_tx_plim_cmd_fixed_param, wmi_set_modify_tx_plim_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SET_MODIFY_TX_PLIM_CMDID); + +#define WMITLV_TABLE_WMI_GET_AVG_TX_POWER_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_avg_tx_power_cmd_fixed_param, wmi_get_avg_tx_power_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_AVG_TX_POWER_CMDID); + +#define WMITLV_TABLE_WMI_GET_TX_POWER_CALLING_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_tx_power_calling_cmd_fixed_param, wmi_get_tx_power_calling_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_GET_TX_POWER_CALLING_CMDID); + #define WMITLV_TABLE_WMI_SAWF_EZMESH_HOP_COUNT_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sawf_ezmesh_hop_count_cmd_fixed_param, wmi_sawf_ezmesh_hop_count_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); @@ -8978,6 +9004,20 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_POWER_BOOST_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_scan_cache_info, scan_cache_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SCAN_CACHE_RESULT_EVENTID); +#define WMITLV_TABLE_WMI_MODIFY_TX_PLIM_EVENTID(id, op , buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_modify_tx_plim_event_fixed_param, wmi_modify_tx_plim_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MODIFY_TX_PLIM_EVENTID); + +#define WMITLV_TABLE_WMI_AVG_TX_POWER_EVENTID(id, op , buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_avg_tx_power_event_fixed_param, wmi_avg_tx_power_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_avg_tx_power_region_per_antenna_chain, avg_tx_power_region_per_antenna_chain, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_AVG_TX_POWER_EVENTID); + +#define WMITLV_TABLE_WMI_PLIMIT_TABLE_EVENTID(id, op , buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_plimit_table_event_fixed_param, wmi_plimit_table_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tx_power_per_antenna_chain, tx_power_per_antenna_chain, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PLIMIT_TABLE_EVENTID); + /* pdev per-vdev queue depth report event */ #define WMITLV_TABLE_WMI_PDEV_MULTI_VDEV_AC_QUEUE_DEPTH_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_multi_vdev_ac_queue_depth_event_fixed_param, wmi_pdev_multi_vdev_ac_queue_depth_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index cdc70a2fdc0e..ee6297d8a0fc 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1441,6 +1441,12 @@ typedef enum { /** WMI command to get scan cached result */ WMI_GET_SCAN_CACHE_RESULT_CMDID, + WMI_SET_MODIFY_TX_PLIM_CMDID, + + WMI_GET_AVG_TX_POWER_CMDID, + + WMI_GET_TX_POWER_CALLING_CMDID, + /* Offload 11k related requests */ WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD), @@ -2646,6 +2652,12 @@ typedef enum { /** WMI event for FW diagnostic data sent to host */ WMI_OPT_DP_DIAG_EVENTID, + WMI_MODIFY_TX_PLIM_EVENTID, + + WMI_AVG_TX_POWER_EVENTID, + + WMI_PLIMIT_TABLE_EVENTID, + /* GPIO Event */ WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO), @@ -43935,6 +43947,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_GET_CHAN_HOP_STATUS_REPORT_CMDID); WMI_RETURN_STRING(WMI_NAN_DISC_SERVICE_REQ_CMDID); WMI_RETURN_STRING(WMI_NAN_DISC_CANCEL_SERVICE_REQ_CMDID); + WMI_RETURN_STRING(WMI_SET_MODIFY_TX_PLIM_CMDID); + WMI_RETURN_STRING(WMI_GET_AVG_TX_POWER_CMDID); + WMI_RETURN_STRING(WMI_GET_TX_POWER_CALLING_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -56053,6 +56068,35 @@ typedef struct { A_UINT32 tlv_header; } wmi_get_scan_cache_result_cmd_fixed_param; +typedef enum { + WMI_PLIM_DIRECTION_NONE = 0, + WMI_PLIM_DIRECTION_INCREASE, + WMI_PLIM_DIRECTION_DECREASE +} wmi_plim_direction_type; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_set_modify_tx_plim_cmd_fixed_param */ + A_UINT32 tlv_header; + /* Requested level for future enhancement, default value shall be 1 */ + A_UINT32 multiplier; + /* takes values from enum wmi_plim_direction_type */ + A_UINT32 direction; +} wmi_set_modify_tx_plim_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_get_avg_tx_power_cmd_fixed_param */ + A_UINT32 tlv_header; + /* Current active DSI (device state index) */ + A_UINT32 dsi_id; +} wmi_get_avg_tx_power_cmd_fixed_param; + +typedef struct { + /* WMITLV_TAG_STRUC_wmi_get_tx_power_calling_cmd_fixed_param */ + A_UINT32 tlv_header; + /* DSI index for which power limit info is to be fetched */ + A_UINT32 dsi_id; +} wmi_get_tx_power_calling_cmd_fixed_param; + /* Element ID 61 (HT Operation) is present (see HT 7.3.2) */ #define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_GET(flags) WMI_GET_BITS(flags, 0, 1) #define WIFI_CACHED_SCAN_RESULT_FLAGS_HT_OPS_PRESENT_SET(flags, value) WMI_SET_BITS(flags, 0, 1, value) @@ -56114,6 +56158,66 @@ typedef struct { */ } wmi_scan_cache_result_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_modify_tx_plim_event_fixed_param */ + + A_UINT32 status; /* 0 = success, 1 = failure */ +} wmi_modify_tx_plim_event_fixed_param; + +typedef enum { + /* Invalid Chain combination */ + WMI_POWER_REGION_INVALID = 0, + + /* Avg. tx power <= PowerLimit-backoff */ + WMI_POWER_REGION_LOW = 1, + + /* PowerLimit-backoff < Avg. tx power <= PowerLimit */ + WMI_POWER_REGION_MEDIUM = 2, + + /* PowerLimit < Avg. tx power <= PowerLimit+Boost */ + WMI_POWER_REGION_HIGH = 3, + + /* Avg. tx power > PowerLimit+Boost */ + WMI_POWER_REGION_EXTRA_HIGH = 4, + +} wmi_phyrf_tas_chain_power_region_type; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_avg_tx_power_region_per_antenna_chain */ + /* Valid chain number for which chain_power_region is filled */ + A_UINT32 chain_no; + A_UINT32 chain_operating_band; /* 0: 2GHz, 1: 5GHz, 2: 6GHz */ + /* takes values from enum wmi_phyrf_tas_chain_power_region_type */ + A_UINT32 chain_power_region; +} wmi_avg_tx_power_region_per_antenna_chain; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_avg_tx_power_event_fixed_param */ + A_UINT32 status; /* 0 = success, 1 = failure */ + /* Exposure window over which TX power is averaged */ + A_UINT32 time_window_in_sec; + /* The below TLVs follow this TLV + * struct wmi_avg_tx_power_region_per_antenna_chain[]; + */ +} wmi_avg_tx_power_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tx_power_per_antenna_chain */ + A_UINT32 chain_no; /* Valid chain number for which power is filled */ + A_UINT32 chain_operating_band; /* 0: 2GHz, 1: 5GHz, 2: 6GHz */ + A_INT32 power; /* Power limit in units of 0.25 dBm */ +} wmi_tx_power_per_antenna_chain; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_plimit_table_event_fixed_param */ + A_UINT32 status; /* 0 = success, 1 = failure */ + A_UINT32 dsi_id; /* DSI index for which below entries are filled */ + /* The below TLVs follow this TLV + * struct wmi_tx_power_per_antenna_chain[]; + */ +} wmi_plimit_table_event_fixed_param; + + #define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_GET(word32) WMI_GET_BITS(word32, 0, 4) #define WMI_POWER_BOOST_CAPABILITIES_PHY_ID_SET(word32, value) WMI_SET_BITS(word32, 0, 4, value) #define WMI_POWER_BOOST_CAPABILITIES_POWER_BOOST_ENABLE_GET(word32) WMI_GET_BITS(word32, 4, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 4311246b96b0..31ed2096ba6b 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_ 1774 +#define __WMI_REVISION_ 1775 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work