diff --git a/drivers/net/wireless/cnss2/wlan_firmware_service_v01.c b/drivers/net/wireless/cnss2/wlan_firmware_service_v01.c index e7c3453f4a54..1899d4a61905 100644 --- a/drivers/net/wireless/cnss2/wlan_firmware_service_v01.c +++ b/drivers/net/wireless/cnss2/wlan_firmware_service_v01.c @@ -747,6 +747,24 @@ struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { .offset = offsetof(struct wlfw_ind_register_req_msg_v01, respond_get_info_enable), }, + { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x20, + .offset = offsetof(struct wlfw_ind_register_req_msg_v01, + m3_dump_upload_req_enable_valid), + }, + { + .data_type = QMI_UNSIGNED_1_BYTE, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x20, + .offset = offsetof(struct wlfw_ind_register_req_msg_v01, + m3_dump_upload_req_enable), + }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, @@ -802,6 +820,42 @@ struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = { }; struct qmi_elem_info wlfw_msa_ready_ind_msg_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_msa_ready_ind_msg_v01, + hang_data_addr_offset_valid), + }, + { + .data_type = QMI_UNSIGNED_4_BYTE, + .elem_len = 1, + .elem_size = sizeof(u32), + .array_type = NO_ARRAY, + .tlv_type = 0x10, + .offset = offsetof(struct wlfw_msa_ready_ind_msg_v01, + hang_data_addr_offset), + }, + { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x11, + .offset = offsetof(struct wlfw_msa_ready_ind_msg_v01, + hang_data_length_valid), + }, + { + .data_type = QMI_UNSIGNED_2_BYTE, + .elem_len = 1, + .elem_size = sizeof(u16), + .array_type = NO_ARRAY, + .tlv_type = 0x11, + .offset = offsetof(struct wlfw_msa_ready_ind_msg_v01, + hang_data_length), + }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, @@ -1318,6 +1372,24 @@ struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = { .offset = offsetof(struct wlfw_cap_resp_msg_v01, otp_version), }, + { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x19, + .offset = offsetof(struct wlfw_cap_resp_msg_v01, + eeprom_caldata_read_timeout_valid), + }, + { + .data_type = QMI_UNSIGNED_4_BYTE, + .elem_len = 1, + .elem_size = sizeof(u32), + .array_type = NO_ARRAY, + .tlv_type = 0x19, + .offset = offsetof(struct wlfw_cap_resp_msg_v01, + eeprom_caldata_read_timeout), + }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, @@ -1515,6 +1587,24 @@ struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = { .offset = offsetof(struct wlfw_cal_report_req_msg_v01, xo_cal_data), }, + { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x11, + .offset = offsetof(struct wlfw_cal_report_req_msg_v01, + cal_remove_supported_valid), + }, + { + .data_type = QMI_UNSIGNED_1_BYTE, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x11, + .offset = offsetof(struct wlfw_cal_report_req_msg_v01, + cal_remove_supported), + }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, @@ -1558,8 +1648,8 @@ struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_initiate_cal_download_ind_msg_v01, - total_size_valid), + wlfw_initiate_cal_download_ind_msg_v01, + total_size_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, @@ -1568,8 +1658,8 @@ struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_initiate_cal_download_ind_msg_v01, - total_size), + wlfw_initiate_cal_download_ind_msg_v01, + total_size), }, { .data_type = QMI_OPT_FLAG, @@ -1578,8 +1668,8 @@ struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_initiate_cal_download_ind_msg_v01, - cal_data_location_valid), + wlfw_initiate_cal_download_ind_msg_v01, + cal_data_location_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, @@ -1588,8 +1678,8 @@ struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_initiate_cal_download_ind_msg_v01, - cal_data_location), + wlfw_initiate_cal_download_ind_msg_v01, + cal_data_location), }, { .data_type = QMI_EOTI, @@ -1779,8 +1869,8 @@ struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_initiate_cal_update_ind_msg_v01, - cal_data_location_valid), + wlfw_initiate_cal_update_ind_msg_v01, + cal_data_location_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, @@ -1789,8 +1879,8 @@ struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_initiate_cal_update_ind_msg_v01, - cal_data_location), + wlfw_initiate_cal_update_ind_msg_v01, + cal_data_location), }, { .data_type = QMI_EOTI, @@ -2850,8 +2940,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_dynamic_feature_mask_req_msg_v01, - mask_valid), + wlfw_dynamic_feature_mask_req_msg_v01, + mask_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, @@ -2860,8 +2950,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_dynamic_feature_mask_req_msg_v01, - mask), + wlfw_dynamic_feature_mask_req_msg_v01, + mask), }, { .data_type = QMI_EOTI, @@ -2878,8 +2968,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x02, .offset = offsetof(struct - wlfw_dynamic_feature_mask_resp_msg_v01, - resp), + wlfw_dynamic_feature_mask_resp_msg_v01, + resp), .ei_array = qmi_response_type_v01_ei, }, { @@ -2889,8 +2979,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_dynamic_feature_mask_resp_msg_v01, - prev_mask_valid), + wlfw_dynamic_feature_mask_resp_msg_v01, + prev_mask_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, @@ -2899,8 +2989,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_dynamic_feature_mask_resp_msg_v01, - prev_mask), + wlfw_dynamic_feature_mask_resp_msg_v01, + prev_mask), }, { .data_type = QMI_OPT_FLAG, @@ -2909,8 +2999,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_dynamic_feature_mask_resp_msg_v01, - curr_mask_valid), + wlfw_dynamic_feature_mask_resp_msg_v01, + curr_mask_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, @@ -2919,8 +3009,8 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_dynamic_feature_mask_resp_msg_v01, - curr_mask), + wlfw_dynamic_feature_mask_resp_msg_v01, + curr_mask), }, { .data_type = QMI_EOTI, @@ -3006,8 +3096,8 @@ struct qmi_elem_info wlfw_qdss_trace_req_mem_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x01, .offset = offsetof(struct - wlfw_qdss_trace_req_mem_ind_msg_v01, - mem_seg_len), + wlfw_qdss_trace_req_mem_ind_msg_v01, + mem_seg_len), }, { .data_type = QMI_STRUCT, @@ -3016,8 +3106,8 @@ struct qmi_elem_info wlfw_qdss_trace_req_mem_ind_msg_v01_ei[] = { .array_type = VAR_LEN_ARRAY, .tlv_type = 0x01, .offset = offsetof(struct - wlfw_qdss_trace_req_mem_ind_msg_v01, - mem_seg), + wlfw_qdss_trace_req_mem_ind_msg_v01, + mem_seg), .ei_array = wlfw_mem_seg_s_v01_ei, }, { @@ -3035,8 +3125,8 @@ struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x01, .offset = offsetof(struct - wlfw_qdss_trace_mem_info_req_msg_v01, - mem_seg_len), + wlfw_qdss_trace_mem_info_req_msg_v01, + mem_seg_len), }, { .data_type = QMI_STRUCT, @@ -3045,8 +3135,8 @@ struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[] = { .array_type = VAR_LEN_ARRAY, .tlv_type = 0x01, .offset = offsetof(struct - wlfw_qdss_trace_mem_info_req_msg_v01, - mem_seg), + wlfw_qdss_trace_mem_info_req_msg_v01, + mem_seg), .ei_array = wlfw_mem_seg_resp_s_v01_ei, }, { @@ -3064,8 +3154,8 @@ struct qmi_elem_info wlfw_qdss_trace_mem_info_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x02, .offset = offsetof(struct - wlfw_qdss_trace_mem_info_resp_msg_v01, - resp), + wlfw_qdss_trace_mem_info_resp_msg_v01, + resp), .ei_array = qmi_response_type_v01_ei, }, { @@ -3103,8 +3193,8 @@ struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_save_ind_msg_v01, - mem_seg_valid), + wlfw_qdss_trace_save_ind_msg_v01, + mem_seg_valid), }, { .data_type = QMI_DATA_LEN, @@ -3113,8 +3203,8 @@ struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_save_ind_msg_v01, - mem_seg_len), + wlfw_qdss_trace_save_ind_msg_v01, + mem_seg_len), }, { .data_type = QMI_STRUCT, @@ -3123,8 +3213,8 @@ struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[] = { .array_type = VAR_LEN_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_save_ind_msg_v01, - mem_seg), + wlfw_qdss_trace_save_ind_msg_v01, + mem_seg), .ei_array = wlfw_mem_seg_resp_s_v01_ei, }, { @@ -3134,8 +3224,8 @@ struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_qdss_trace_save_ind_msg_v01, - file_name_valid), + wlfw_qdss_trace_save_ind_msg_v01, + file_name_valid), }, { .data_type = QMI_STRING, @@ -3289,8 +3379,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - total_size_valid), + wlfw_qdss_trace_config_download_req_msg_v01, + total_size_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, @@ -3299,8 +3389,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - total_size), + wlfw_qdss_trace_config_download_req_msg_v01, + total_size), }, { .data_type = QMI_OPT_FLAG, @@ -3309,8 +3399,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - seg_id_valid), + wlfw_qdss_trace_config_download_req_msg_v01, + seg_id_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, @@ -3319,8 +3409,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - seg_id), + wlfw_qdss_trace_config_download_req_msg_v01, + seg_id), }, { .data_type = QMI_OPT_FLAG, @@ -3329,8 +3419,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - data_valid), + wlfw_qdss_trace_config_download_req_msg_v01, + data_valid), }, { .data_type = QMI_DATA_LEN, @@ -3339,8 +3429,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - data_len), + wlfw_qdss_trace_config_download_req_msg_v01, + data_len), }, { .data_type = QMI_UNSIGNED_1_BYTE, @@ -3349,8 +3439,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = VAR_LEN_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - data), + wlfw_qdss_trace_config_download_req_msg_v01, + data), }, { .data_type = QMI_OPT_FLAG, @@ -3359,8 +3449,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - end_valid), + wlfw_qdss_trace_config_download_req_msg_v01, + end_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, @@ -3369,8 +3459,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct - wlfw_qdss_trace_config_download_req_msg_v01, - end), + wlfw_qdss_trace_config_download_req_msg_v01, + end), }, { .data_type = QMI_EOTI, @@ -3387,8 +3477,8 @@ struct qmi_elem_info wlfw_qdss_trace_config_download_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x02, .offset = offsetof(struct - wlfw_qdss_trace_config_download_resp_msg_v01, - resp), + wlfw_qdss_trace_config_download_resp_msg_v01, + resp), .ei_array = qmi_response_type_v01_ei, }, { @@ -3406,8 +3496,8 @@ struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_mode_req_msg_v01, - mode_valid), + wlfw_qdss_trace_mode_req_msg_v01, + mode_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, @@ -3473,8 +3563,8 @@ struct qmi_elem_info wlfw_qdss_trace_free_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_free_ind_msg_v01, - mem_seg_valid), + wlfw_qdss_trace_free_ind_msg_v01, + mem_seg_valid), }, { .data_type = QMI_DATA_LEN, @@ -3483,8 +3573,8 @@ struct qmi_elem_info wlfw_qdss_trace_free_ind_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_free_ind_msg_v01, - mem_seg_len), + wlfw_qdss_trace_free_ind_msg_v01, + mem_seg_len), }, { .data_type = QMI_STRUCT, @@ -3493,8 +3583,8 @@ struct qmi_elem_info wlfw_qdss_trace_free_ind_msg_v01_ei[] = { .array_type = VAR_LEN_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_qdss_trace_free_ind_msg_v01, - mem_seg), + wlfw_qdss_trace_free_ind_msg_v01, + mem_seg), .ei_array = wlfw_mem_seg_resp_s_v01_ei, }, { @@ -3564,8 +3654,8 @@ struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x02, .offset = offsetof(struct - wlfw_antenna_switch_resp_msg_v01, - resp), + wlfw_antenna_switch_resp_msg_v01, + resp), .ei_array = qmi_response_type_v01_ei, }, { @@ -3575,8 +3665,8 @@ struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_antenna_switch_resp_msg_v01, - antenna_valid), + wlfw_antenna_switch_resp_msg_v01, + antenna_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, @@ -3585,8 +3675,8 @@ struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_antenna_switch_resp_msg_v01, - antenna), + wlfw_antenna_switch_resp_msg_v01, + antenna), }, { .data_type = QMI_EOTI, @@ -3603,8 +3693,8 @@ struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_antenna_grant_req_msg_v01, - grant_valid), + wlfw_antenna_grant_req_msg_v01, + grant_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, @@ -3613,8 +3703,8 @@ struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct - wlfw_antenna_grant_req_msg_v01, - grant), + wlfw_antenna_grant_req_msg_v01, + grant), }, { .data_type = QMI_EOTI, @@ -3631,8 +3721,8 @@ struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x02, .offset = offsetof(struct - wlfw_antenna_grant_resp_msg_v01, - resp), + wlfw_antenna_grant_resp_msg_v01, + resp), .ei_array = qmi_response_type_v01_ei, }, { @@ -3650,8 +3740,8 @@ struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x01, .offset = offsetof(struct - wlfw_wfc_call_status_req_msg_v01, - wfc_call_status_len), + wlfw_wfc_call_status_req_msg_v01, + wfc_call_status_len), }, { .data_type = QMI_UNSIGNED_1_BYTE, @@ -3660,8 +3750,8 @@ struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[] = { .array_type = VAR_LEN_ARRAY, .tlv_type = 0x01, .offset = offsetof(struct - wlfw_wfc_call_status_req_msg_v01, - wfc_call_status), + wlfw_wfc_call_status_req_msg_v01, + wfc_call_status), }, { .data_type = QMI_EOTI, @@ -3678,8 +3768,8 @@ struct qmi_elem_info wlfw_wfc_call_status_resp_msg_v01_ei[] = { .array_type = NO_ARRAY, .tlv_type = 0x02, .offset = offsetof(struct - wlfw_wfc_call_status_resp_msg_v01, - resp), + wlfw_wfc_call_status_resp_msg_v01, + resp), .ei_array = qmi_response_type_v01_ei, }, { @@ -3829,3 +3919,222 @@ struct qmi_elem_info wlfw_respond_get_info_ind_msg_v01_ei[] = { .tlv_type = QMI_COMMON_TLV_TYPE, }, }; + +struct qmi_elem_info wlfw_device_info_req_msg_v01_ei[] = { + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_device_info_resp_msg_v01_ei[] = { + { + .data_type = QMI_STRUCT, + .elem_len = 1, + .elem_size = sizeof(struct qmi_response_type_v01), + .array_type = NO_ARRAY, + .tlv_type = 0x02, + .offset = offsetof(struct wlfw_device_info_resp_msg_v01, + resp), + .ei_array = qmi_response_type_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_device_info_resp_msg_v01, + bar_addr_valid), + }, + { + .data_type = QMI_UNSIGNED_8_BYTE, + .elem_len = 1, + .elem_size = sizeof(u64), + .array_type = NO_ARRAY, + .tlv_type = 0x10, + .offset = offsetof(struct wlfw_device_info_resp_msg_v01, + bar_addr), + }, + { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(u8), + .array_type = NO_ARRAY, + .tlv_type = 0x11, + .offset = offsetof(struct wlfw_device_info_resp_msg_v01, + bar_size_valid), + }, + { + .data_type = QMI_UNSIGNED_4_BYTE, + .elem_len = 1, + .elem_size = sizeof(u32), + .array_type = NO_ARRAY, + .tlv_type = 0x11, + .offset = offsetof(struct wlfw_device_info_resp_msg_v01, + bar_size), + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_m3_dump_upload_req_ind_msg_v01_ei[] = { + { + .data_type = QMI_UNSIGNED_4_BYTE, + .elem_len = 1, + .elem_size = sizeof(u32), + .array_type = NO_ARRAY, + .tlv_type = 0x01, + .offset = offsetof(struct + wlfw_m3_dump_upload_req_ind_msg_v01, + pdev_id), + }, + { + .data_type = QMI_UNSIGNED_8_BYTE, + .elem_len = 1, + .elem_size = sizeof(u64), + .array_type = NO_ARRAY, + .tlv_type = 0x02, + .offset = offsetof(struct + wlfw_m3_dump_upload_req_ind_msg_v01, + addr), + }, + { + .data_type = QMI_UNSIGNED_8_BYTE, + .elem_len = 1, + .elem_size = sizeof(u64), + .array_type = NO_ARRAY, + .tlv_type = 0x03, + .offset = offsetof(struct + wlfw_m3_dump_upload_req_ind_msg_v01, + size), + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_m3_dump_upload_done_req_msg_v01_ei[] = { + { + .data_type = QMI_UNSIGNED_4_BYTE, + .elem_len = 1, + .elem_size = sizeof(u32), + .array_type = NO_ARRAY, + .tlv_type = 0x01, + .offset = offsetof(struct + wlfw_m3_dump_upload_done_req_msg_v01, + pdev_id), + }, + { + .data_type = QMI_UNSIGNED_4_BYTE, + .elem_len = 1, + .elem_size = sizeof(u32), + .array_type = NO_ARRAY, + .tlv_type = 0x02, + .offset = offsetof(struct + wlfw_m3_dump_upload_done_req_msg_v01, + status), + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_m3_dump_upload_done_resp_msg_v01_ei[] = { + { + .data_type = QMI_STRUCT, + .elem_len = 1, + .elem_size = sizeof(struct qmi_response_type_v01), + .array_type = NO_ARRAY, + .tlv_type = 0x02, + .offset = offsetof(struct + wlfw_m3_dump_upload_done_resp_msg_v01, + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_soc_wake_req_msg_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_soc_wake_req_msg_v01, + wake_valid), + }, + { + .data_type = QMI_SIGNED_4_BYTE_ENUM, + .elem_len = 1, + .elem_size = sizeof(enum wlfw_soc_wake_enum_v01), + .array_type = NO_ARRAY, + .tlv_type = 0x10, + .offset = offsetof(struct wlfw_soc_wake_req_msg_v01, + wake), + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_soc_wake_resp_msg_v01_ei[] = { + { + .data_type = QMI_STRUCT, + .elem_len = 1, + .elem_size = sizeof(struct qmi_response_type_v01), + .array_type = NO_ARRAY, + .tlv_type = 0x02, + .offset = offsetof(struct wlfw_soc_wake_resp_msg_v01, + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_exit_power_save_req_msg_v01_ei[] = { + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; + +struct qmi_elem_info wlfw_exit_power_save_resp_msg_v01_ei[] = { + { + .data_type = QMI_STRUCT, + .elem_len = 1, + .elem_size = sizeof(struct qmi_response_type_v01), + .array_type = NO_ARRAY, + .tlv_type = 0x02, + .offset = offsetof(struct + wlfw_exit_power_save_resp_msg_v01, + resp), + .ei_array = qmi_response_type_v01_ei, + }, + { + .data_type = QMI_EOTI, + .array_type = NO_ARRAY, + .tlv_type = QMI_COMMON_TLV_TYPE, + }, +}; diff --git a/drivers/net/wireless/cnss2/wlan_firmware_service_v01.h b/drivers/net/wireless/cnss2/wlan_firmware_service_v01.h index 76606d951438..e105cd48a9c4 100644 --- a/drivers/net/wireless/cnss2/wlan_firmware_service_v01.h +++ b/drivers/net/wireless/cnss2/wlan_firmware_service_v01.h @@ -10,12 +10,14 @@ #define WLFW_SERVICE_VERS_V01 0x01 #define QMI_WLFW_WFC_CALL_STATUS_REQ_V01 0x0049 +#define QMI_WLFW_DEVICE_INFO_RESP_V01 0x004C #define QMI_WLFW_BDF_DOWNLOAD_REQ_V01 0x0025 #define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037 #define QMI_WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_REQ_V01 0x0044 #define QMI_WLFW_GET_INFO_REQ_V01 0x004A #define QMI_WLFW_INITIATE_CAL_UPDATE_IND_V01 0x002A #define QMI_WLFW_CAL_DONE_IND_V01 0x003E +#define QMI_WLFW_M3_DUMP_UPLOAD_REQ_IND_V01 0x004D #define QMI_WLFW_WFC_CALL_STATUS_RESP_V01 0x0049 #define QMI_WLFW_HOST_CAP_REQ_V01 0x0034 #define QMI_WLFW_DYNAMIC_FEATURE_MASK_RESP_V01 0x003B @@ -27,6 +29,7 @@ #define QMI_WLFW_RESPOND_GET_INFO_IND_V01 0x004B #define QMI_WLFW_M3_INFO_RESP_V01 0x003C #define QMI_WLFW_CAL_UPDATE_RESP_V01 0x0029 +#define QMI_WLFW_M3_DUMP_UPLOAD_DONE_RESP_V01 0x004E #define QMI_WLFW_CAL_DOWNLOAD_RESP_V01 0x0027 #define QMI_WLFW_XO_CAL_IND_V01 0x003D #define QMI_WLFW_INI_RESP_V01 0x002F @@ -40,12 +43,14 @@ #define QMI_WLFW_HOST_CAP_RESP_V01 0x0034 #define QMI_WLFW_MSA_READY_IND_V01 0x002B #define QMI_WLFW_ATHDIAG_WRITE_RESP_V01 0x0031 +#define QMI_WLFW_EXIT_POWER_SAVE_REQ_V01 0x0050 #define QMI_WLFW_WLAN_MODE_REQ_V01 0x0022 #define QMI_WLFW_IND_REGISTER_REQ_V01 0x0020 #define QMI_WLFW_WLAN_CFG_RESP_V01 0x0023 #define QMI_WLFW_QDSS_TRACE_MODE_REQ_V01 0x0045 #define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035 #define QMI_WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_RESP_V01 0x0044 +#define QMI_WLFW_SOC_WAKE_RESP_V01 0x004F #define QMI_WLFW_REJUVENATE_IND_V01 0x0039 #define QMI_WLFW_DYNAMIC_FEATURE_MASK_REQ_V01 0x003B #define QMI_WLFW_ATHDIAG_WRITE_REQ_V01 0x0031 @@ -67,13 +72,17 @@ #define QMI_WLFW_MSA_INFO_RESP_V01 0x002D #define QMI_WLFW_MSA_READY_REQ_V01 0x002E #define QMI_WLFW_QDSS_TRACE_DATA_RESP_V01 0x0042 +#define QMI_WLFW_M3_DUMP_UPLOAD_DONE_REQ_V01 0x004E #define QMI_WLFW_CAP_RESP_V01 0x0024 +#define QMI_WLFW_SOC_WAKE_REQ_V01 0x004F #define QMI_WLFW_REJUVENATE_ACK_REQ_V01 0x003A #define QMI_WLFW_ATHDIAG_READ_RESP_V01 0x0030 #define QMI_WLFW_SHUTDOWN_REQ_V01 0x0043 #define QMI_WLFW_VBATT_REQ_V01 0x0032 #define QMI_WLFW_ANTENNA_SWITCH_RESP_V01 0x0047 +#define QMI_WLFW_DEVICE_INFO_REQ_V01 0x004C #define QMI_WLFW_MAC_ADDR_REQ_V01 0x0033 +#define QMI_WLFW_EXIT_POWER_SAVE_RESP_V01 0x0050 #define QMI_WLFW_RESPOND_MEM_RESP_V01 0x0036 #define QMI_WLFW_VBATT_RESP_V01 0x0032 #define QMI_WLFW_MSA_INFO_REQ_V01 0x002D @@ -154,6 +163,13 @@ enum wlfw_qdss_trace_mode_enum_v01 { WLFW_QDSS_TRACE_MODE_ENUM_MAX_VAL_V01 = INT_MAX, }; +enum wlfw_soc_wake_enum_v01 { + WLFW_SOC_WAKE_ENUM_MIN_VAL_V01 = INT_MIN, + QMI_WLFW_WAKE_REQUEST_V01 = 0, + QMI_WLFW_WAKE_RELEASE_V01 = 1, + WLFW_SOC_WAKE_ENUM_MAX_VAL_V01 = INT_MAX, +}; + #define QMI_WLFW_CE_ATTR_FLAGS_V01 ((u32)0x00) #define QMI_WLFW_CE_ATTR_NO_SNOOP_V01 ((u32)0x01) #define QMI_WLFW_CE_ATTR_BYTE_SWAP_DATA_V01 ((u32)0x02) @@ -284,9 +300,11 @@ struct wlfw_ind_register_req_msg_v01 { u8 qdss_trace_free_enable; u8 respond_get_info_enable_valid; u8 respond_get_info_enable; + u8 m3_dump_upload_req_enable_valid; + u8 m3_dump_upload_req_enable; }; -#define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 70 +#define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 74 extern struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[]; struct wlfw_ind_register_resp_msg_v01 { @@ -306,10 +324,13 @@ struct wlfw_fw_ready_ind_msg_v01 { extern struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[]; struct wlfw_msa_ready_ind_msg_v01 { - char placeholder; + u8 hang_data_addr_offset_valid; + u32 hang_data_addr_offset; + u8 hang_data_length_valid; + u16 hang_data_length; }; -#define WLFW_MSA_READY_IND_MSG_V01_MAX_MSG_LEN 0 +#define WLFW_MSA_READY_IND_MSG_V01_MAX_MSG_LEN 12 extern struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[]; struct wlfw_pin_connect_result_ind_msg_v01 { @@ -401,9 +422,11 @@ struct wlfw_cap_resp_msg_v01 { u32 time_freq_hz; u8 otp_version_valid; u32 otp_version; + u8 eeprom_caldata_read_timeout_valid; + u32 eeprom_caldata_read_timeout; }; -#define WLFW_CAP_RESP_MSG_V01_MAX_MSG_LEN 228 +#define WLFW_CAP_RESP_MSG_V01_MAX_MSG_LEN 235 extern struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[]; struct wlfw_bdf_download_req_msg_v01 { @@ -438,9 +461,11 @@ struct wlfw_cal_report_req_msg_v01 { enum wlfw_cal_temp_id_enum_v01 meta_data[QMI_WLFW_MAX_NUM_CAL_V01]; u8 xo_cal_data_valid; u8 xo_cal_data; + u8 cal_remove_supported_valid; + u8 cal_remove_supported; }; -#define WLFW_CAL_REPORT_REQ_MSG_V01_MAX_MSG_LEN 28 +#define WLFW_CAL_REPORT_REQ_MSG_V01_MAX_MSG_LEN 32 extern struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[]; struct wlfw_cal_report_resp_msg_v01 { @@ -996,4 +1021,75 @@ struct wlfw_respond_get_info_ind_msg_v01 { #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[]; + +struct wlfw_device_info_resp_msg_v01 { + struct qmi_response_type_v01 resp; + u8 bar_addr_valid; + u64 bar_addr; + u8 bar_size_valid; + u32 bar_size; +}; + +#define WLFW_DEVICE_INFO_RESP_MSG_V01_MAX_MSG_LEN 25 +extern struct qmi_elem_info wlfw_device_info_resp_msg_v01_ei[]; + +struct wlfw_m3_dump_upload_req_ind_msg_v01 { + u32 pdev_id; + 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[]; + +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[]; + +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[]; + +struct wlfw_exit_power_save_req_msg_v01 { + char placeholder; +}; + +#define WLFW_EXIT_POWER_SAVE_REQ_MSG_V01_MAX_MSG_LEN 0 +extern struct qmi_elem_info wlfw_exit_power_save_req_msg_v01_ei[]; + +struct wlfw_exit_power_save_resp_msg_v01 { + struct qmi_response_type_v01 resp; +}; + +#define WLFW_EXIT_POWER_SAVE_RESP_MSG_V01_MAX_MSG_LEN 7 +extern struct qmi_elem_info wlfw_exit_power_save_resp_msg_v01_ei[]; + #endif