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
This commit is contained in:
Naman Padhiar
2022-09-27 01:00:41 +05:30
committed by Madan Koyyalamudi
parent 2d912a8ca2
commit 60f897b63a
4 changed files with 111 additions and 61 deletions

View File

@@ -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[] = { static struct qmi_elem_info wlfw_pmu_param_v01_ei[] = {
{ {
.data_type = QMI_UNSIGNED_1_BYTE, .data_type = QMI_UNSIGNED_1_BYTE,
.elem_len = 32, .elem_len = QMI_WLFW_PMU_PIN_NAME_MAX_LEN_V01,
.elem_size = sizeof(u8), .elem_size = sizeof(u8),
.array_type = STATIC_ARRAY, .array_type = STATIC_ARRAY,
.tlv_type = 0, .tlv_type = 0,
@@ -1353,6 +1353,26 @@ struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
wlfw_wlan_mode_req_msg_v01, wlfw_wlan_mode_req_msg_v01,
xo_cal_data), 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, .data_type = QMI_EOTI,
.array_type = NO_ARRAY, .array_type = NO_ARRAY,
@@ -2044,6 +2064,46 @@ struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
ol_cpr_cfg), ol_cpr_cfg),
.ei_array = wlfw_pmu_cfg_v01_ei, .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, .data_type = QMI_EOTI,
.array_type = NO_ARRAY, .array_type = NO_ARRAY,
@@ -4365,6 +4425,26 @@ struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[] = {
mem_seg), mem_seg),
.ei_array = wlfw_mem_seg_resp_s_v01_ei, .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, .data_type = QMI_EOTI,
.array_type = NO_ARRAY, .array_type = NO_ARRAY,

View File

@@ -122,6 +122,7 @@
#define QMI_WLFW_MAX_NUM_CE_V01 12 #define QMI_WLFW_MAX_NUM_CE_V01 12
#define QMI_WLFW_MAX_TIMESTAMP_LEN_V01 32 #define QMI_WLFW_MAX_TIMESTAMP_LEN_V01 32
#define QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01 10 #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_STR_LEN_V01 16
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V3_V01 60 #define QMI_WLFW_MAX_NUM_SHADOW_REG_V3_V01 60
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01 36 #define QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01 36
@@ -259,6 +260,7 @@ enum cnss_feature_v01 {
BOOTSTRAP_CLOCK_SELECT_V01 = 0, BOOTSTRAP_CLOCK_SELECT_V01 = 0,
CNSS_DRV_SUPPORT_V01 = 1, CNSS_DRV_SUPPORT_V01 = 1,
CNSS_WLAN_EN_SUPPORT_V01 = 2, CNSS_WLAN_EN_SUPPORT_V01 = 2,
CNSS_QDSS_CFG_MISS_V01 = 3,
CNSS_MAX_FEATURE_V01 = 64, CNSS_MAX_FEATURE_V01 = 64,
CNSS_FEATURE_MAX_VAL_V01 = INT_MAX, CNSS_FEATURE_MAX_VAL_V01 = INT_MAX,
}; };
@@ -409,7 +411,7 @@ struct wlfw_host_mlo_chip_info_s_v01 {
}; };
struct wlfw_pmu_param_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_valid;
u32 wake_volt; u32 wake_volt;
u32 sleep_volt_valid; u32 sleep_volt_valid;
@@ -515,9 +517,11 @@ struct wlfw_wlan_mode_req_msg_v01 {
u8 hw_debug; u8 hw_debug;
u8 xo_cal_data_valid; u8 xo_cal_data_valid;
u8 xo_cal_data; 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[]; extern struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[];
struct wlfw_wlan_mode_resp_msg_v01 { struct wlfw_wlan_mode_resp_msg_v01 {
@@ -609,9 +613,13 @@ struct wlfw_cap_resp_msg_v01 {
u8 hwid_bitmap; u8 hwid_bitmap;
u8 ol_cpr_cfg_valid; u8 ol_cpr_cfg_valid;
struct wlfw_pmu_cfg_v01 ol_cpr_cfg; 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[]; extern struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[];
struct wlfw_bdf_download_req_msg_v01 { 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 { struct wlfw_vbatt_req_msg_v01 {
u64 voltage_uv; u64 voltage_uv;
}; };
#define WLFW_VBATT_REQ_MSG_V01_MAX_MSG_LEN 11 #define WLFW_VBATT_REQ_MSG_V01_MAX_MSG_LEN 11
extern struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[]; 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_valid;
u8 fw_ini_cfg_support; u8 fw_ini_cfg_support;
}; };
#define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 491 #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 491
extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[];
struct wlfw_host_cap_resp_msg_v01 { struct wlfw_host_cap_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_HOST_CAP_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_HOST_CAP_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[]; 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; u32 mem_seg_len;
struct wlfw_mem_seg_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01]; 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 #define WLFW_REQUEST_MEM_IND_MSG_V01_MAX_MSG_LEN 1824
extern struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[]; 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; u32 mem_seg_len;
struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01]; 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 #define WLFW_RESPOND_MEM_REQ_MSG_V01_MAX_MSG_LEN 888
extern struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[];
struct wlfw_respond_mem_resp_msg_v01 { struct wlfw_respond_mem_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_RESPOND_MEM_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_RESPOND_MEM_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[]; extern struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[];
struct wlfw_fw_mem_ready_ind_msg_v01 { struct wlfw_fw_mem_ready_ind_msg_v01 {
char placeholder; char placeholder;
}; };
#define WLFW_FW_MEM_READY_IND_MSG_V01_MAX_MSG_LEN 0 #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[]; 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; u8 hang_data_length_valid;
u16 hang_data_length; u16 hang_data_length;
}; };
#define WLFW_FW_INIT_DONE_IND_MSG_V01_MAX_MSG_LEN 12 #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[]; 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; u8 function_name_valid;
char function_name[QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1]; char function_name[QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1];
}; };
#define WLFW_REJUVENATE_IND_MSG_V01_MAX_MSG_LEN 144 #define WLFW_REJUVENATE_IND_MSG_V01_MAX_MSG_LEN 144
extern struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[]; extern struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[];
struct wlfw_rejuvenate_ack_req_msg_v01 { struct wlfw_rejuvenate_ack_req_msg_v01 {
char placeholder; char placeholder;
}; };
#define WLFW_REJUVENATE_ACK_REQ_MSG_V01_MAX_MSG_LEN 0 #define WLFW_REJUVENATE_ACK_REQ_MSG_V01_MAX_MSG_LEN 0
extern struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[];
struct wlfw_rejuvenate_ack_resp_msg_v01 { struct wlfw_rejuvenate_ack_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_REJUVENATE_ACK_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_REJUVENATE_ACK_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[]; 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; u8 mask_valid;
u64 mask; u64 mask;
}; };
#define WLFW_DYNAMIC_FEATURE_MASK_REQ_MSG_V01_MAX_MSG_LEN 11 #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[]; 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; u8 curr_mask_valid;
u64 curr_mask; u64 curr_mask;
}; };
#define WLFW_DYNAMIC_FEATURE_MASK_RESP_MSG_V01_MAX_MSG_LEN 29 #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[]; 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; u64 addr;
u32 size; u32 size;
}; };
#define WLFW_M3_INFO_REQ_MSG_V01_MAX_MSG_LEN 18 #define WLFW_M3_INFO_REQ_MSG_V01_MAX_MSG_LEN 18
extern struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[];
struct wlfw_m3_info_resp_msg_v01 { struct wlfw_m3_info_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_M3_INFO_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_M3_INFO_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[]; extern struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[];
struct wlfw_xo_cal_ind_msg_v01 { struct wlfw_xo_cal_ind_msg_v01 {
u8 xo_cal_data; u8 xo_cal_data;
}; };
#define WLFW_XO_CAL_IND_MSG_V01_MAX_MSG_LEN 4 #define WLFW_XO_CAL_IND_MSG_V01_MAX_MSG_LEN 4
extern struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[]; 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; u8 cal_file_upload_size_valid;
u64 cal_file_upload_size; u64 cal_file_upload_size;
}; };
#define WLFW_CAL_DONE_IND_MSG_V01_MAX_MSG_LEN 11 #define WLFW_CAL_DONE_IND_MSG_V01_MAX_MSG_LEN 11
extern struct qmi_elem_info wlfw_cal_done_ind_msg_v01_ei[]; 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; u32 mem_seg_len;
struct wlfw_mem_seg_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01]; 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 #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[]; extern struct qmi_elem_info wlfw_qdss_trace_req_mem_ind_msg_v01_ei[];
struct wlfw_qdss_trace_mem_info_req_msg_v01 { struct wlfw_qdss_trace_mem_info_req_msg_v01 {
u32 mem_seg_len; u32 mem_seg_len;
struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01]; 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[]; extern struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[];
struct wlfw_qdss_trace_mem_info_resp_msg_v01 { struct wlfw_qdss_trace_mem_info_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_QDSS_TRACE_MEM_INFO_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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; u8 file_name_valid;
char file_name[QMI_WLFW_MAX_STR_LEN_V01 + 1]; char file_name[QMI_WLFW_MAX_STR_LEN_V01 + 1];
}; };
#define WLFW_QDSS_TRACE_SAVE_IND_MSG_V01_MAX_MSG_LEN 921 #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[]; extern struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[];
struct wlfw_qdss_trace_data_req_msg_v01 { struct wlfw_qdss_trace_data_req_msg_v01 {
u32 seg_id; u32 seg_id;
}; };
#define WLFW_QDSS_TRACE_DATA_REQ_MSG_V01_MAX_MSG_LEN 7 #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[]; 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_valid;
u8 end; u8 end;
}; };
#define WLFW_QDSS_TRACE_DATA_RESP_MSG_V01_MAX_MSG_LEN 6174 #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[]; 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_valid;
u8 end; u8 end;
}; };
#define WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN 6167 #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[]; extern struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[];
struct wlfw_qdss_trace_config_download_resp_msg_v01 { struct wlfw_qdss_trace_config_download_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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; u8 hw_trc_disable_override_valid;
enum wlfw_qmi_param_value_v01 hw_trc_disable_override; enum wlfw_qmi_param_value_v01 hw_trc_disable_override;
}; };
#define WLFW_QDSS_TRACE_MODE_REQ_MSG_V01_MAX_MSG_LEN 25 #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[]; extern struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[];
struct wlfw_qdss_trace_mode_resp_msg_v01 { struct wlfw_qdss_trace_mode_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_QDSS_TRACE_MODE_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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; u32 mem_seg_len;
struct wlfw_mem_seg_resp_s_v01 mem_seg[QMI_WLFW_MAX_NUM_MEM_SEG_V01]; 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 #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[]; 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_valid;
u8 shutdown; u8 shutdown;
}; };
#define WLFW_SHUTDOWN_REQ_MSG_V01_MAX_MSG_LEN 4 #define WLFW_SHUTDOWN_REQ_MSG_V01_MAX_MSG_LEN 4
extern struct qmi_elem_info wlfw_shutdown_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_shutdown_req_msg_v01_ei[];
struct wlfw_shutdown_resp_msg_v01 { struct wlfw_shutdown_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_SHUTDOWN_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_SHUTDOWN_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_shutdown_resp_msg_v01_ei[]; extern struct qmi_elem_info wlfw_shutdown_resp_msg_v01_ei[];
struct wlfw_antenna_switch_req_msg_v01 { struct wlfw_antenna_switch_req_msg_v01 {
char placeholder; char placeholder;
}; };
#define WLFW_ANTENNA_SWITCH_REQ_MSG_V01_MAX_MSG_LEN 0 #define WLFW_ANTENNA_SWITCH_REQ_MSG_V01_MAX_MSG_LEN 0
extern struct qmi_elem_info wlfw_antenna_switch_req_msg_v01_ei[]; 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; u8 antenna_valid;
u64 antenna; u64 antenna;
}; };
#define WLFW_ANTENNA_SWITCH_RESP_MSG_V01_MAX_MSG_LEN 18 #define WLFW_ANTENNA_SWITCH_RESP_MSG_V01_MAX_MSG_LEN 18
extern struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[]; 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; u8 grant_valid;
u64 grant; u64 grant;
}; };
#define WLFW_ANTENNA_GRANT_REQ_MSG_V01_MAX_MSG_LEN 11 #define WLFW_ANTENNA_GRANT_REQ_MSG_V01_MAX_MSG_LEN 11
extern struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[];
struct wlfw_antenna_grant_resp_msg_v01 { struct wlfw_antenna_grant_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_ANTENNA_GRANT_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_ANTENNA_GRANT_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[]; 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; u8 media_quality_valid;
enum wlfw_wfc_media_quality_v01 media_quality; enum wlfw_wfc_media_quality_v01 media_quality;
}; };
#define WLFW_WFC_CALL_STATUS_REQ_MSG_V01_MAX_MSG_LEN 296 #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[]; extern struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[];
struct wlfw_wfc_call_status_resp_msg_v01 { struct wlfw_wfc_call_status_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_WFC_CALL_STATUS_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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; u32 data_len;
u8 data[QMI_WLFW_MAX_DATA_SIZE_V01]; u8 data[QMI_WLFW_MAX_DATA_SIZE_V01];
}; };
#define WLFW_GET_INFO_REQ_MSG_V01_MAX_MSG_LEN 6153 #define WLFW_GET_INFO_REQ_MSG_V01_MAX_MSG_LEN 6153
extern struct qmi_elem_info wlfw_get_info_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_get_info_req_msg_v01_ei[];
struct wlfw_get_info_resp_msg_v01 { struct wlfw_get_info_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_GET_INFO_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_GET_INFO_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_get_info_resp_msg_v01_ei[]; 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; u8 seq_no_valid;
u32 seq_no; u32 seq_no;
}; };
#define WLFW_RESPOND_GET_INFO_IND_MSG_V01_MAX_MSG_LEN 6164 #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[]; extern struct qmi_elem_info wlfw_respond_get_info_ind_msg_v01_ei[];
struct wlfw_device_info_req_msg_v01 { struct wlfw_device_info_req_msg_v01 {
char placeholder; char placeholder;
}; };
#define WLFW_DEVICE_INFO_REQ_MSG_V01_MAX_MSG_LEN 0 #define WLFW_DEVICE_INFO_REQ_MSG_V01_MAX_MSG_LEN 0
extern struct qmi_elem_info wlfw_device_info_req_msg_v01_ei[]; 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; u8 mhi_state_info_size_valid;
u32 mhi_state_info_size; u32 mhi_state_info_size;
}; };
#define WLFW_DEVICE_INFO_RESP_MSG_V01_MAX_MSG_LEN 43 #define WLFW_DEVICE_INFO_RESP_MSG_V01_MAX_MSG_LEN 43
extern struct qmi_elem_info wlfw_device_info_resp_msg_v01_ei[]; 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 addr;
u64 size; u64 size;
}; };
#define WLFW_M3_DUMP_UPLOAD_REQ_IND_MSG_V01_MAX_MSG_LEN 29 #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[]; 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 pdev_id;
u32 status; u32 status;
}; };
#define WLFW_M3_DUMP_UPLOAD_DONE_REQ_MSG_V01_MAX_MSG_LEN 14 #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[]; extern struct qmi_elem_info wlfw_m3_dump_upload_done_req_msg_v01_ei[];
struct wlfw_m3_dump_upload_done_resp_msg_v01 { struct wlfw_m3_dump_upload_done_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_M3_DUMP_UPLOAD_DONE_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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; u8 wake_valid;
enum wlfw_soc_wake_enum_v01 wake; enum wlfw_soc_wake_enum_v01 wake;
}; };
#define WLFW_SOC_WAKE_REQ_MSG_V01_MAX_MSG_LEN 7 #define WLFW_SOC_WAKE_REQ_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_soc_wake_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_soc_wake_req_msg_v01_ei[];
struct wlfw_soc_wake_resp_msg_v01 { struct wlfw_soc_wake_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_SOC_WAKE_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_SOC_WAKE_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_soc_wake_resp_msg_v01_ei[]; 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; u8 power_save_mode_valid;
enum wlfw_power_save_mode_v01 power_save_mode; enum wlfw_power_save_mode_v01 power_save_mode;
}; };
#define WLFW_POWER_SAVE_REQ_MSG_V01_MAX_MSG_LEN 7 #define WLFW_POWER_SAVE_REQ_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_power_save_req_msg_v01_ei[]; extern struct qmi_elem_info wlfw_power_save_req_msg_v01_ei[];
struct wlfw_power_save_resp_msg_v01 { struct wlfw_power_save_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_POWER_SAVE_RESP_MSG_V01_MAX_MSG_LEN 7 #define WLFW_POWER_SAVE_RESP_MSG_V01_MAX_MSG_LEN 7
extern struct qmi_elem_info wlfw_power_save_resp_msg_v01_ei[]; 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_valid;
u8 twt_sta_config_changed; u8 twt_sta_config_changed;
}; };
#define WLFW_WFC_CALL_TWT_CONFIG_IND_MSG_V01_MAX_MSG_LEN 35 #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[]; extern struct qmi_elem_info wlfw_wfc_call_twt_config_ind_msg_v01_ei[];
struct wlfw_qdss_mem_ready_ind_msg_v01 { struct wlfw_qdss_mem_ready_ind_msg_v01 {
char placeholder; char placeholder;
}; };
#define WLFW_QDSS_MEM_READY_IND_MSG_V01_MAX_MSG_LEN 0 #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[]; extern struct qmi_elem_info wlfw_qdss_mem_ready_ind_msg_v01_ei[];
struct wlfw_pcie_gen_switch_req_msg_v01 { struct wlfw_pcie_gen_switch_req_msg_v01 {
enum wlfw_pcie_gen_speed_v01 pcie_speed; enum wlfw_pcie_gen_speed_v01 pcie_speed;
}; };
#define WLFW_PCIE_GEN_SWITCH_REQ_MSG_V01_MAX_MSG_LEN 7 #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[]; extern struct qmi_elem_info wlfw_pcie_gen_switch_req_msg_v01_ei[];
struct wlfw_pcie_gen_switch_resp_msg_v01 { struct wlfw_pcie_gen_switch_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_PCIE_GEN_SWITCH_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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; u32 no_of_valid_segments;
struct wlfw_m3_segment_info_s_v01 m3_segment[QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01]; 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 #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[]; 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_valid;
u8 restart_level_type; u8 restart_level_type;
}; };
#define WLFW_SUBSYS_RESTART_LEVEL_REQ_MSG_V01_MAX_MSG_LEN 4 #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[]; extern struct qmi_elem_info wlfw_subsys_restart_level_req_msg_v01_ei[];
struct wlfw_subsys_restart_level_resp_msg_v01 { struct wlfw_subsys_restart_level_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_SUBSYS_RESTART_LEVEL_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; 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_valid;
u8 end; u8 end;
}; };
#define WLFW_INI_FILE_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN 6174 #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[]; extern struct qmi_elem_info wlfw_ini_file_download_req_msg_v01_ei[];
struct wlfw_ini_file_download_resp_msg_v01 { struct wlfw_ini_file_download_resp_msg_v01 {
struct qmi_response_type_v01 resp; struct qmi_response_type_v01 resp;
}; };
#define WLFW_INI_FILE_DOWNLOAD_RESP_MSG_V01_MAX_MSG_LEN 7 #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[]; extern struct qmi_elem_info wlfw_ini_file_download_resp_msg_v01_ei[];

View File

@@ -3218,6 +3218,7 @@ int icnss_wlan_enable(struct device *dev, struct icnss_wlan_enable_cfg *config,
const char *host_version) const char *host_version)
{ {
struct icnss_priv *priv = dev_get_drvdata(dev); struct icnss_priv *priv = dev_get_drvdata(dev);
int temp = 0;
if (test_bit(ICNSS_FW_DOWN, &priv->state) || if (test_bit(ICNSS_FW_DOWN, &priv->state) ||
!test_bit(ICNSS_FW_READY, &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) !priv->dms.nv_mac_not_prov && !priv->dms.mac_valid)
icnss_setup_dms_mac(priv); 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); return icnss_send_wlan_enable_to_fw(priv, config, mode, host_version);
} }
EXPORT_SYMBOL(icnss_wlan_enable); EXPORT_SYMBOL(icnss_wlan_enable);

View File

@@ -1467,6 +1467,13 @@ int wlfw_wlan_mode_send_sync_msg(struct icnss_priv *priv,
req->hw_debug_valid = 1; req->hw_debug_valid = 1;
req->hw_debug = !!test_bit(HW_DEBUG_ENABLE, &priv->ctrl_params.quirks); 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++; priv->stats.mode_req++;
ret = qmi_txn_init(&priv->qmi, &txn, ret = qmi_txn_init(&priv->qmi, &txn,