From 60f897b63a4ecdbabe3d9e4685e278cdcb4a2e6d Mon Sep 17 00:00:00 2001 From: Naman Padhiar Date: Tue, 27 Sep 2022 01:00:41 +0530 Subject: [PATCH] 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 --- cnss_utils/wlan_firmware_service_v01.c | 82 +++++++++++++++++++++++++- cnss_utils/wlan_firmware_service_v01.h | 74 +++++------------------ icnss2/main.c | 9 +++ icnss2/qmi.c | 7 +++ 4 files changed, 111 insertions(+), 61 deletions(-) diff --git a/cnss_utils/wlan_firmware_service_v01.c b/cnss_utils/wlan_firmware_service_v01.c index a3e4e0c86f..6db47107b0 100644 --- a/cnss_utils/wlan_firmware_service_v01.c +++ b/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, diff --git a/cnss_utils/wlan_firmware_service_v01.h b/cnss_utils/wlan_firmware_service_v01.h index bb97be6449..74875219f9 100644 --- a/cnss_utils/wlan_firmware_service_v01.h +++ b/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[]; diff --git a/icnss2/main.c b/icnss2/main.c index 5063b2159a..fa944d5309 100644 --- a/icnss2/main.c +++ b/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); diff --git a/icnss2/qmi.c b/icnss2/qmi.c index 6b7ea74c3f..98329673bc 100644 --- a/icnss2/qmi.c +++ b/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,