Browse Source

fw-api: CL 15096163 - update fw common interface files

Change-Id: Ib8dee2f6403f3871ad061273aa26aa9c81b344fb
WMI: extend thermal throttling stats
CRs-Fixed: 2262693
spuligil 3 years ago
parent
commit
0bc549ab9b
4 changed files with 65 additions and 3 deletions
  1. 1 0
      fw/wmi_services.h
  2. 9 1
      fw/wmi_tlv_defs.h
  3. 54 1
      fw/wmi_unified.h
  4. 1 1
      fw/wmi_version.h

+ 1 - 0
fw/wmi_services.h

@@ -547,6 +547,7 @@ typedef  enum  {
     WMI_SERVICE_AOA_FOR_RCC_SUPPORTED = 302,
     WMI_SERVICE_DYN_NSS_MASK_SUPPORT = 303, /* Indicates FW support for DYN NSS feature */
     WMI_SERVICE_HW_MODE_POLICY_OFFLOAD_SUPPORT = 304, /* FW supports HW mode selection offload */
+    WMI_SERVICE_THERMAL_THROT_STATS_TEMP_RANGE_SUPPORT = 305, /* FW supports thermal throttling temperature range stats based on wmi_thermal_stats_action */
 
 
     WMI_MAX_EXT2_SERVICE

+ 9 - 1
fw/wmi_tlv_defs.h

@@ -1195,6 +1195,8 @@ typedef enum {
     WMITLV_TAG_STRUC_wmi_roam_cnd_vendor_scoring_param,
     WMITLV_TAG_STRUC_wmi_owe_ap_profile,
     WMITLV_TAG_STRUC_wmi_roam_btm_request_candidate_info_tlv_param,
+    WMITLV_TAG_STRUC_wmi_thermal_stats_cmd_fixed_param,
+    WMITLV_TAG_STRUC_wmi_thermal_throt_temp_range_stats,
 } WMITLV_TAG_ID;
 
 /*
@@ -1668,6 +1670,7 @@ typedef enum {
     OP(WMI_PEER_CONFIG_PPE_DS_CMDID) \
     OP(WMI_VDEV_ENABLE_DISABLE_INTRA_BSS_CMDID) \
     OP(WMI_PEER_ENABLE_DISABLE_INTRA_BSS_CMDID) \
+    OP(WMI_REQUEST_THERMAL_STATS_CMDID) \
     /* add new CMD_LIST elements above this line */
 
 
@@ -4787,6 +4790,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_ENABLE_DISABLE_INTRA_BSS_CMDID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_enable_disable_intra_bss_cmd_fixed_param, wmi_peer_enable_disable_intra_bss_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
 WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ENABLE_DISABLE_INTRA_BSS_CMDID);
 
+#define WMITLV_TABLE_WMI_REQUEST_THERMAL_STATS_CMDID(id,op,buf,len) \
+    WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_thermal_stats_cmd_fixed_param, wmi_thermal_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_THERMAL_STATS_CMDID);
+
 
 
 /************************** TLV definitions of WMI events *******************************/
@@ -6193,7 +6200,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLAN_COEX_BT_ACTIVITY_EVENTID);
 /* Thermal Throttling stats event */
 #define WMITLV_TABLE_WMI_THERM_THROT_STATS_EVENTID(id,op,buf,len) \
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_therm_throt_stats_event_fixed_param, wmi_therm_throt_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
-    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_therm_throt_level_stats_info, therm_throt_level_stats_info, WMITLV_SIZE_VAR)
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_therm_throt_level_stats_info, therm_throt_level_stats_info, WMITLV_SIZE_VAR) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_thermal_throt_temp_range_stats, temp_range_stats, WMITLV_SIZE_VAR)
 WMITLV_CREATE_PARAM_STRUC(WMI_THERM_THROT_STATS_EVENTID);
 
 #define WMITLV_TABLE_WMI_PDEV_DMA_RING_CFG_RSP_EVENTID(id,op,buf,len) \

+ 54 - 1
fw/wmi_unified.h

@@ -967,6 +967,9 @@ typedef enum {
     /** unified request for LL stats and get station cmds */
     WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID,
 
+    /** request for thermal stats */
+    WMI_REQUEST_THERMAL_STATS_CMDID,
+
 
     /** ARP OFFLOAD REQUEST*/
     WMI_SET_ARP_NS_OFFLOAD_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ARP_NS_OFL),
@@ -28369,6 +28372,33 @@ typedef struct {
     A_UINT32 prio;
 } wmi_therm_throt_level_config_info;
 
+typedef enum {
+    WMI_THERMAL_TEMP_RANGE_STATS_NONE = 0,
+    WMI_THERMAL_TEMP_RANGE_STATS_INIT,
+    WMI_THERMAL_TEMP_RANGE_STATS_REQUEST,
+    WMI_THERMAL_TEMP_RANGE_STATS_CLEAR,
+    WMI_THERMAL_STATS_CURRENT_ALL_SENSORS_TEMP,
+} wmi_thermal_stats_action;
+
+typedef struct {
+    /** TLV tag and len; tag equals
+     * WMITLV_TAG_STRUC_wmi_thermal_stats_cmd_fixed_param
+     */
+    A_UINT32 tlv_header;
+    /*
+     * Configure thermal temperature offset value for capturing
+     * thermal stats in thermal range.
+     * FW already has thermal throttling threshold temperature in BDF.
+     * Thermal STATS start capturing from temperature threshold to
+     * temperature threshold + offset.
+     * If thermal offset is 0 then thermal STATS capture is disabled.
+     *
+     * Units of thermal_offset are degrees Celsius.
+     */
+    A_UINT32 thermal_offset;
+    A_UINT32 thermal_action; /* refer to enum wmi_thermal_stats_action */
+} wmi_thermal_stats_cmd_fixed_param;
+
 typedef enum {
     WMI_THERMAL_CLIENT_UNSPECIFIED = 0,
     WMI_THERMAL_CLIENT_APPS        = 1,
@@ -28408,6 +28438,8 @@ typedef enum {
     WMI_THERMAL_SHUTDOWN_TGT    = 3,
 } WMI_THERMAL_THROT_LEVEL;
 
+#define WMI_THERMAL_STATS_TEMP_THRESH_LEVEL_MAX 5
+
 /** FW response with the stats event id for every pdev and zones */
 typedef struct {
     /*  TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_therm_throt_stats_event_fixed_param */
@@ -28419,10 +28451,10 @@ typedef struct {
     A_UINT32 therm_throt_levels; /* number of levels in therm_throt_level_stats_info */
     /* This TLV is followed by another TLV of array of structs
      * wmi_therm_throt_level_stats_info therm_throt_level_stats_info[therm_throt_levels];
+     * wmi_thermal_throt_temp_range_stats temp_range_stats[therm_throt_levels];
      */
 } wmi_therm_throt_stats_event_fixed_param;
 
-
 typedef struct {
     /** TLV tag and len; tag equals
      *  WMITLV_TAG_STRUC_wmi_therm_throt_level_stats_info */
@@ -28432,7 +28464,27 @@ typedef struct {
                           /* this number increments by one each time we are in this state and we finish one full duty cycle. */
 } wmi_therm_throt_level_stats_info;
 
+typedef struct {
+    /** TLV tag and len; tag equals
+     *  WMITLV_TAG_STRUC_wmi_thermal_throt_temp_range_stats
+     */
+    A_UINT32 tlv_header;
+    /**
+     * Temperature range to capture thermal stats between start to end
+     * temperature level.
+     */
+    A_UINT32 start_temp_level; /* unit in degC */
+    A_UINT32 end_temp_level;   /* unit in degC */
 
+    /** Total time spent on each thermal stats level, units are milliseconds. */
+    A_UINT32 total_time_ms_lo;
+    A_UINT32 total_time_ms_hi;
+    /**
+     * Thermal stats counter for every time thermal stats level enters
+     * this temperature range.
+     */
+    A_UINT32 num_entry;
+} wmi_thermal_throt_temp_range_stats;
 
 
 typedef enum {
@@ -29174,6 +29226,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
         WMI_RETURN_STRING(WMI_VDEV_ENABLE_DISABLE_INTRA_BSS_CMDID);
         WMI_RETURN_STRING(WMI_PEER_ENABLE_DISABLE_INTRA_BSS_CMDID);
         WMI_RETURN_STRING(WMI_ROAM_MLO_CONFIG_CMDID);
+        WMI_RETURN_STRING(WMI_REQUEST_THERMAL_STATS_CMDID);
     }
 
     return "Invalid WMI cmd";

+ 1 - 1
fw/wmi_version.h

@@ -36,7 +36,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_ 1042
+#define __WMI_REVISION_ 1043
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work