Forráskód Böngészése

icnss2: Send WLAN_EN delay during Mode request

Send WLAN_EN delay during Mode On QMI request if temperature is
below threshold at that time.

Change-Id: I910168dafa09c25cc4a263a7756379eb8be46824
Naman Padhiar 2 éve
szülő
commit
60f897b63a

+ 81 - 1
cnss_utils/wlan_firmware_service_v01.c

@@ -624,7 +624,7 @@ static struct qmi_elem_info wlfw_host_mlo_chip_info_s_v01_ei[] = {
 static struct qmi_elem_info wlfw_pmu_param_v01_ei[] = {
 	{
 		.data_type      = QMI_UNSIGNED_1_BYTE,
-		.elem_len       = 32,
+		.elem_len       = QMI_WLFW_PMU_PIN_NAME_MAX_LEN_V01,
 		.elem_size      = sizeof(u8),
 		.array_type       = STATIC_ARRAY,
 		.tlv_type       = 0,
@@ -1353,6 +1353,26 @@ struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
 					   wlfw_wlan_mode_req_msg_v01,
 					   xo_cal_data),
 	},
+	{
+		.data_type      = QMI_OPT_FLAG,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x12,
+		.offset         = offsetof(struct
+					   wlfw_wlan_mode_req_msg_v01,
+					   wlan_en_delay_valid),
+	},
+	{
+		.data_type      = QMI_UNSIGNED_4_BYTE,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u32),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x12,
+		.offset         = offsetof(struct
+					   wlfw_wlan_mode_req_msg_v01,
+					   wlan_en_delay),
+	},
 	{
 		.data_type      = QMI_EOTI,
 		.array_type       = NO_ARRAY,
@@ -2044,6 +2064,46 @@ struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
 					   ol_cpr_cfg),
 		.ei_array      = wlfw_pmu_cfg_v01_ei,
 	},
+	{
+		.data_type      = QMI_OPT_FLAG,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x23,
+		.offset         = offsetof(struct
+					   wlfw_cap_resp_msg_v01,
+					   regdb_mandatory_valid),
+	},
+	{
+		.data_type      = QMI_UNSIGNED_1_BYTE,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x23,
+		.offset         = offsetof(struct
+					   wlfw_cap_resp_msg_v01,
+					   regdb_mandatory),
+	},
+	{
+		.data_type      = QMI_OPT_FLAG,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x24,
+		.offset         = offsetof(struct
+					   wlfw_cap_resp_msg_v01,
+					   regdb_support_valid),
+	},
+	{
+		.data_type      = QMI_UNSIGNED_1_BYTE,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x24,
+		.offset         = offsetof(struct
+					   wlfw_cap_resp_msg_v01,
+					   regdb_support),
+	},
 	{
 		.data_type      = QMI_EOTI,
 		.array_type       = NO_ARRAY,
@@ -4365,6 +4425,26 @@ struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[] = {
 					   mem_seg),
 		.ei_array      = wlfw_mem_seg_resp_s_v01_ei,
 	},
+	{
+		.data_type      = QMI_OPT_FLAG,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x10,
+		.offset         = offsetof(struct
+					   wlfw_qdss_trace_mem_info_req_msg_v01,
+					   end_valid),
+	},
+	{
+		.data_type      = QMI_UNSIGNED_1_BYTE,
+		.elem_len       = 1,
+		.elem_size      = sizeof(u8),
+		.array_type       = NO_ARRAY,
+		.tlv_type       = 0x10,
+		.offset         = offsetof(struct
+					   wlfw_qdss_trace_mem_info_req_msg_v01,
+					   end),
+	},
 	{
 		.data_type      = QMI_EOTI,
 		.array_type       = NO_ARRAY,

+ 14 - 60
cnss_utils/wlan_firmware_service_v01.h

@@ -122,6 +122,7 @@
 #define QMI_WLFW_MAX_NUM_CE_V01 12
 #define QMI_WLFW_MAX_TIMESTAMP_LEN_V01 32
 #define QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01 10
+#define QMI_WLFW_PMU_PIN_NAME_MAX_LEN_V01 32
 #define QMI_WLFW_MAX_STR_LEN_V01 16
 #define QMI_WLFW_MAX_NUM_SHADOW_REG_V3_V01 60
 #define QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01 36
@@ -259,6 +260,7 @@ enum cnss_feature_v01 {
 	BOOTSTRAP_CLOCK_SELECT_V01 = 0,
 	CNSS_DRV_SUPPORT_V01 = 1,
 	CNSS_WLAN_EN_SUPPORT_V01 = 2,
+	CNSS_QDSS_CFG_MISS_V01 = 3,
 	CNSS_MAX_FEATURE_V01 = 64,
 	CNSS_FEATURE_MAX_VAL_V01 = INT_MAX,
 };
@@ -409,7 +411,7 @@ struct wlfw_host_mlo_chip_info_s_v01 {
 };
 
 struct wlfw_pmu_param_v01 {
-	u8 pin_name[32];
+	u8 pin_name[QMI_WLFW_PMU_PIN_NAME_MAX_LEN_V01];
 	u32 wake_volt_valid;
 	u32 wake_volt;
 	u32 sleep_volt_valid;
@@ -515,9 +517,11 @@ struct wlfw_wlan_mode_req_msg_v01 {
 	u8 hw_debug;
 	u8 xo_cal_data_valid;
 	u8 xo_cal_data;
+	u8 wlan_en_delay_valid;
+	u32 wlan_en_delay;
 };
 
-#define WLFW_WLAN_MODE_REQ_MSG_V01_MAX_MSG_LEN 15
+#define WLFW_WLAN_MODE_REQ_MSG_V01_MAX_MSG_LEN 22
 extern struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[];
 
 struct wlfw_wlan_mode_resp_msg_v01 {
@@ -609,9 +613,13 @@ struct wlfw_cap_resp_msg_v01 {
 	u8 hwid_bitmap;
 	u8 ol_cpr_cfg_valid;
 	struct wlfw_pmu_cfg_v01 ol_cpr_cfg;
+	u8 regdb_mandatory_valid;
+	u8 regdb_mandatory;
+	u8 regdb_support_valid;
+	u8 regdb_support;
 };
 
-#define WLFW_CAP_RESP_MSG_V01_MAX_MSG_LEN 1134
+#define WLFW_CAP_RESP_MSG_V01_MAX_MSG_LEN 1142
 extern struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[];
 
 struct wlfw_bdf_download_req_msg_v01 {
@@ -825,7 +833,6 @@ extern struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[];
 struct wlfw_vbatt_req_msg_v01 {
 	u64 voltage_uv;
 };
-
 #define WLFW_VBATT_REQ_MSG_V01_MAX_MSG_LEN 11
 extern struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[];
 
@@ -917,14 +924,12 @@ struct wlfw_host_cap_req_msg_v01 {
 	u8 fw_ini_cfg_support_valid;
 	u8 fw_ini_cfg_support;
 };
-
 #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 491
 extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[];
 
 struct wlfw_host_cap_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_HOST_CAP_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[];
 
@@ -932,7 +937,6 @@ struct wlfw_request_mem_ind_msg_v01 {
 	u32 mem_seg_len;
 	struct wlfw_mem_seg_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
 };
-
 #define WLFW_REQUEST_MEM_IND_MSG_V01_MAX_MSG_LEN 1824
 extern struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[];
 
@@ -940,21 +944,18 @@ struct wlfw_respond_mem_req_msg_v01 {
 	u32 mem_seg_len;
 	struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
 };
-
 #define WLFW_RESPOND_MEM_REQ_MSG_V01_MAX_MSG_LEN 888
 extern struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[];
 
 struct wlfw_respond_mem_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_RESPOND_MEM_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[];
 
 struct wlfw_fw_mem_ready_ind_msg_v01 {
 	char placeholder;
 };
-
 #define WLFW_FW_MEM_READY_IND_MSG_V01_MAX_MSG_LEN 0
 extern struct qmi_elem_info wlfw_fw_mem_ready_ind_msg_v01_ei[];
 
@@ -964,7 +965,6 @@ struct wlfw_fw_init_done_ind_msg_v01 {
 	u8 hang_data_length_valid;
 	u16 hang_data_length;
 };
-
 #define WLFW_FW_INIT_DONE_IND_MSG_V01_MAX_MSG_LEN 12
 extern struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[];
 
@@ -978,21 +978,18 @@ struct wlfw_rejuvenate_ind_msg_v01 {
 	u8 function_name_valid;
 	char function_name[QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1];
 };
-
 #define WLFW_REJUVENATE_IND_MSG_V01_MAX_MSG_LEN 144
 extern struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[];
 
 struct wlfw_rejuvenate_ack_req_msg_v01 {
 	char placeholder;
 };
-
 #define WLFW_REJUVENATE_ACK_REQ_MSG_V01_MAX_MSG_LEN 0
 extern struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[];
 
 struct wlfw_rejuvenate_ack_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_REJUVENATE_ACK_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[];
 
@@ -1000,7 +997,6 @@ struct wlfw_dynamic_feature_mask_req_msg_v01 {
 	u8 mask_valid;
 	u64 mask;
 };
-
 #define WLFW_DYNAMIC_FEATURE_MASK_REQ_MSG_V01_MAX_MSG_LEN 11
 extern struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[];
 
@@ -1011,7 +1007,6 @@ struct wlfw_dynamic_feature_mask_resp_msg_v01 {
 	u8 curr_mask_valid;
 	u64 curr_mask;
 };
-
 #define WLFW_DYNAMIC_FEATURE_MASK_RESP_MSG_V01_MAX_MSG_LEN 29
 extern struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[];
 
@@ -1019,21 +1014,18 @@ struct wlfw_m3_info_req_msg_v01 {
 	u64 addr;
 	u32 size;
 };
-
 #define WLFW_M3_INFO_REQ_MSG_V01_MAX_MSG_LEN 18
 extern struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[];
 
 struct wlfw_m3_info_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_M3_INFO_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[];
 
 struct wlfw_xo_cal_ind_msg_v01 {
 	u8 xo_cal_data;
 };
-
 #define WLFW_XO_CAL_IND_MSG_V01_MAX_MSG_LEN 4
 extern struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[];
 
@@ -1041,7 +1033,6 @@ struct wlfw_cal_done_ind_msg_v01 {
 	u8 cal_file_upload_size_valid;
 	u64 cal_file_upload_size;
 };
-
 #define WLFW_CAL_DONE_IND_MSG_V01_MAX_MSG_LEN 11
 extern struct qmi_elem_info wlfw_cal_done_ind_msg_v01_ei[];
 
@@ -1049,22 +1040,22 @@ struct wlfw_qdss_trace_req_mem_ind_msg_v01 {
 	u32 mem_seg_len;
 	struct wlfw_mem_seg_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
 };
-
 #define WLFW_QDSS_TRACE_REQ_MEM_IND_MSG_V01_MAX_MSG_LEN 1824
 extern struct qmi_elem_info wlfw_qdss_trace_req_mem_ind_msg_v01_ei[];
 
 struct wlfw_qdss_trace_mem_info_req_msg_v01 {
 	u32 mem_seg_len;
 	struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
+	u8 end_valid;
+	u8 end;
 };
 
-#define WLFW_QDSS_TRACE_MEM_INFO_REQ_MSG_V01_MAX_MSG_LEN 888
+#define WLFW_QDSS_TRACE_MEM_INFO_REQ_MSG_V01_MAX_MSG_LEN 892
 extern struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[];
 
 struct wlfw_qdss_trace_mem_info_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_QDSS_TRACE_MEM_INFO_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_qdss_trace_mem_info_resp_msg_v01_ei[];
 
@@ -1077,14 +1068,12 @@ struct wlfw_qdss_trace_save_ind_msg_v01 {
 	u8 file_name_valid;
 	char file_name[QMI_WLFW_MAX_STR_LEN_V01 + 1];
 };
-
 #define WLFW_QDSS_TRACE_SAVE_IND_MSG_V01_MAX_MSG_LEN 921
 extern struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[];
 
 struct wlfw_qdss_trace_data_req_msg_v01 {
 	u32 seg_id;
 };
-
 #define WLFW_QDSS_TRACE_DATA_REQ_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_qdss_trace_data_req_msg_v01_ei[];
 
@@ -1100,7 +1089,6 @@ struct wlfw_qdss_trace_data_resp_msg_v01 {
 	u8 end_valid;
 	u8 end;
 };
-
 #define WLFW_QDSS_TRACE_DATA_RESP_MSG_V01_MAX_MSG_LEN 6174
 extern struct qmi_elem_info wlfw_qdss_trace_data_resp_msg_v01_ei[];
 
@@ -1115,14 +1103,12 @@ struct wlfw_qdss_trace_config_download_req_msg_v01 {
 	u8 end_valid;
 	u8 end;
 };
-
 #define WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN 6167
 extern struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[];
 
 struct wlfw_qdss_trace_config_download_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_qdss_trace_config_download_resp_msg_v01_ei[];
 
@@ -1134,14 +1120,12 @@ struct wlfw_qdss_trace_mode_req_msg_v01 {
 	u8 hw_trc_disable_override_valid;
 	enum wlfw_qmi_param_value_v01 hw_trc_disable_override;
 };
-
 #define WLFW_QDSS_TRACE_MODE_REQ_MSG_V01_MAX_MSG_LEN 25
 extern struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[];
 
 struct wlfw_qdss_trace_mode_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_QDSS_TRACE_MODE_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_qdss_trace_mode_resp_msg_v01_ei[];
 
@@ -1150,7 +1134,6 @@ struct wlfw_qdss_trace_free_ind_msg_v01 {
 	u32 mem_seg_len;
 	struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
 };
-
 #define WLFW_QDSS_TRACE_FREE_IND_MSG_V01_MAX_MSG_LEN 888
 extern struct qmi_elem_info wlfw_qdss_trace_free_ind_msg_v01_ei[];
 
@@ -1158,21 +1141,18 @@ struct wlfw_shutdown_req_msg_v01 {
 	u8 shutdown_valid;
 	u8 shutdown;
 };
-
 #define WLFW_SHUTDOWN_REQ_MSG_V01_MAX_MSG_LEN 4
 extern struct qmi_elem_info wlfw_shutdown_req_msg_v01_ei[];
 
 struct wlfw_shutdown_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_SHUTDOWN_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_shutdown_resp_msg_v01_ei[];
 
 struct wlfw_antenna_switch_req_msg_v01 {
 	char placeholder;
 };
-
 #define WLFW_ANTENNA_SWITCH_REQ_MSG_V01_MAX_MSG_LEN 0
 extern struct qmi_elem_info wlfw_antenna_switch_req_msg_v01_ei[];
 
@@ -1181,7 +1161,6 @@ struct wlfw_antenna_switch_resp_msg_v01 {
 	u8 antenna_valid;
 	u64 antenna;
 };
-
 #define WLFW_ANTENNA_SWITCH_RESP_MSG_V01_MAX_MSG_LEN 18
 extern struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[];
 
@@ -1189,14 +1168,12 @@ struct wlfw_antenna_grant_req_msg_v01 {
 	u8 grant_valid;
 	u64 grant;
 };
-
 #define WLFW_ANTENNA_GRANT_REQ_MSG_V01_MAX_MSG_LEN 11
 extern struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[];
 
 struct wlfw_antenna_grant_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_ANTENNA_GRANT_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[];
 
@@ -1216,14 +1193,12 @@ struct wlfw_wfc_call_status_req_msg_v01 {
 	u8 media_quality_valid;
 	enum wlfw_wfc_media_quality_v01 media_quality;
 };
-
 #define WLFW_WFC_CALL_STATUS_REQ_MSG_V01_MAX_MSG_LEN 296
 extern struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[];
 
 struct wlfw_wfc_call_status_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_WFC_CALL_STATUS_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_wfc_call_status_resp_msg_v01_ei[];
 
@@ -1232,14 +1207,12 @@ struct wlfw_get_info_req_msg_v01 {
 	u32 data_len;
 	u8 data[QMI_WLFW_MAX_DATA_SIZE_V01];
 };
-
 #define WLFW_GET_INFO_REQ_MSG_V01_MAX_MSG_LEN 6153
 extern struct qmi_elem_info wlfw_get_info_req_msg_v01_ei[];
 
 struct wlfw_get_info_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_GET_INFO_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_get_info_resp_msg_v01_ei[];
 
@@ -1253,14 +1226,12 @@ struct wlfw_respond_get_info_ind_msg_v01 {
 	u8 seq_no_valid;
 	u32 seq_no;
 };
-
 #define WLFW_RESPOND_GET_INFO_IND_MSG_V01_MAX_MSG_LEN 6164
 extern struct qmi_elem_info wlfw_respond_get_info_ind_msg_v01_ei[];
 
 struct wlfw_device_info_req_msg_v01 {
 	char placeholder;
 };
-
 #define WLFW_DEVICE_INFO_REQ_MSG_V01_MAX_MSG_LEN 0
 extern struct qmi_elem_info wlfw_device_info_req_msg_v01_ei[];
 
@@ -1275,7 +1246,6 @@ struct wlfw_device_info_resp_msg_v01 {
 	u8 mhi_state_info_size_valid;
 	u32 mhi_state_info_size;
 };
-
 #define WLFW_DEVICE_INFO_RESP_MSG_V01_MAX_MSG_LEN 43
 extern struct qmi_elem_info wlfw_device_info_resp_msg_v01_ei[];
 
@@ -1284,7 +1254,6 @@ struct wlfw_m3_dump_upload_req_ind_msg_v01 {
 	u64 addr;
 	u64 size;
 };
-
 #define WLFW_M3_DUMP_UPLOAD_REQ_IND_MSG_V01_MAX_MSG_LEN 29
 extern struct qmi_elem_info wlfw_m3_dump_upload_req_ind_msg_v01_ei[];
 
@@ -1292,14 +1261,12 @@ struct wlfw_m3_dump_upload_done_req_msg_v01 {
 	u32 pdev_id;
 	u32 status;
 };
-
 #define WLFW_M3_DUMP_UPLOAD_DONE_REQ_MSG_V01_MAX_MSG_LEN 14
 extern struct qmi_elem_info wlfw_m3_dump_upload_done_req_msg_v01_ei[];
 
 struct wlfw_m3_dump_upload_done_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_M3_DUMP_UPLOAD_DONE_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_m3_dump_upload_done_resp_msg_v01_ei[];
 
@@ -1307,14 +1274,12 @@ struct wlfw_soc_wake_req_msg_v01 {
 	u8 wake_valid;
 	enum wlfw_soc_wake_enum_v01 wake;
 };
-
 #define WLFW_SOC_WAKE_REQ_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_soc_wake_req_msg_v01_ei[];
 
 struct wlfw_soc_wake_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_SOC_WAKE_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_soc_wake_resp_msg_v01_ei[];
 
@@ -1322,14 +1287,12 @@ struct wlfw_power_save_req_msg_v01 {
 	u8 power_save_mode_valid;
 	enum wlfw_power_save_mode_v01 power_save_mode;
 };
-
 #define WLFW_POWER_SAVE_REQ_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_power_save_req_msg_v01_ei[];
 
 struct wlfw_power_save_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_POWER_SAVE_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_power_save_resp_msg_v01_ei[];
 
@@ -1347,28 +1310,24 @@ struct wlfw_wfc_call_twt_config_ind_msg_v01 {
 	u8 twt_sta_config_changed_valid;
 	u8 twt_sta_config_changed;
 };
-
 #define WLFW_WFC_CALL_TWT_CONFIG_IND_MSG_V01_MAX_MSG_LEN 35
 extern struct qmi_elem_info wlfw_wfc_call_twt_config_ind_msg_v01_ei[];
 
 struct wlfw_qdss_mem_ready_ind_msg_v01 {
 	char placeholder;
 };
-
 #define WLFW_QDSS_MEM_READY_IND_MSG_V01_MAX_MSG_LEN 0
 extern struct qmi_elem_info wlfw_qdss_mem_ready_ind_msg_v01_ei[];
 
 struct wlfw_pcie_gen_switch_req_msg_v01 {
 	enum wlfw_pcie_gen_speed_v01 pcie_speed;
 };
-
 #define WLFW_PCIE_GEN_SWITCH_REQ_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_pcie_gen_switch_req_msg_v01_ei[];
 
 struct wlfw_pcie_gen_switch_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_PCIE_GEN_SWITCH_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_pcie_gen_switch_resp_msg_v01_ei[];
 
@@ -1377,7 +1336,6 @@ struct wlfw_m3_dump_upload_segments_req_ind_msg_v01 {
 	u32 no_of_valid_segments;
 	struct wlfw_m3_segment_info_s_v01 m3_segment[QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01];
 };
-
 #define WLFW_M3_DUMP_UPLOAD_SEGMENTS_REQ_IND_MSG_V01_MAX_MSG_LEN 387
 extern struct qmi_elem_info wlfw_m3_dump_upload_segments_req_ind_msg_v01_ei[];
 
@@ -1385,14 +1343,12 @@ struct wlfw_subsys_restart_level_req_msg_v01 {
 	u8 restart_level_type_valid;
 	u8 restart_level_type;
 };
-
 #define WLFW_SUBSYS_RESTART_LEVEL_REQ_MSG_V01_MAX_MSG_LEN 4
 extern struct qmi_elem_info wlfw_subsys_restart_level_req_msg_v01_ei[];
 
 struct wlfw_subsys_restart_level_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_SUBSYS_RESTART_LEVEL_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_subsys_restart_level_resp_msg_v01_ei[];
 
@@ -1409,14 +1365,12 @@ struct wlfw_ini_file_download_req_msg_v01 {
 	u8 end_valid;
 	u8 end;
 };
-
 #define WLFW_INI_FILE_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN 6174
 extern struct qmi_elem_info wlfw_ini_file_download_req_msg_v01_ei[];
 
 struct wlfw_ini_file_download_resp_msg_v01 {
 	struct qmi_response_type_v01 resp;
 };
-
 #define WLFW_INI_FILE_DOWNLOAD_RESP_MSG_V01_MAX_MSG_LEN 7
 extern struct qmi_elem_info wlfw_ini_file_download_resp_msg_v01_ei[];
 

+ 9 - 0
icnss2/main.c

@@ -3218,6 +3218,7 @@ int icnss_wlan_enable(struct device *dev, struct icnss_wlan_enable_cfg *config,
 		      const char *host_version)
 {
 	struct icnss_priv *priv = dev_get_drvdata(dev);
+	int temp = 0;
 
 	if (test_bit(ICNSS_FW_DOWN, &priv->state) ||
 	    !test_bit(ICNSS_FW_READY, &priv->state)) {
@@ -3236,6 +3237,14 @@ int icnss_wlan_enable(struct device *dev, struct icnss_wlan_enable_cfg *config,
 	    !priv->dms.nv_mac_not_prov && !priv->dms.mac_valid)
 		icnss_setup_dms_mac(priv);
 
+	if (priv->device_id == WCN6750_DEVICE_ID) {
+		if (!icnss_get_temperature(priv, &temp)) {
+			icnss_pr_dbg("Temperature: %d\n", temp);
+			if (temp < WLAN_EN_TEMP_THRESHOLD)
+				icnss_set_wlan_en_delay(priv);
+		}
+	}
+
 	return icnss_send_wlan_enable_to_fw(priv, config, mode, host_version);
 }
 EXPORT_SYMBOL(icnss_wlan_enable);

+ 7 - 0
icnss2/qmi.c

@@ -1467,6 +1467,13 @@ int wlfw_wlan_mode_send_sync_msg(struct icnss_priv *priv,
 	req->hw_debug_valid = 1;
 	req->hw_debug = !!test_bit(HW_DEBUG_ENABLE, &priv->ctrl_params.quirks);
 
+	if (priv->wlan_en_delay_ms >= 100) {
+		icnss_pr_dbg("Setting WLAN_EN delay: %d ms\n",
+			     priv->wlan_en_delay_ms);
+		req->wlan_en_delay_valid = 1;
+		req->wlan_en_delay = priv->wlan_en_delay_ms;
+	}
+
 	priv->stats.mode_req++;
 
 	ret = qmi_txn_init(&priv->qmi, &txn,