Loading drivers/net/wireless/cnss2/qmi.c +15 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,18 @@ static int cnss_wlfw_ind_register_send_sync(struct cnss_plat_data *plat_priv) return ret; } #ifdef CONFIG_CNSS2_DEBUG static inline u32 cnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_PRIMARY_V01; } #else static inline u32 cnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_SECONDARY_V01; } #endif static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) { struct wlfw_host_cap_req_msg_v01 *req; Loading Loading @@ -209,6 +221,9 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) req->ddr_range[0].start, req->ddr_range[0].size); } req->host_build_type_valid = 1; req->host_build_type = cnss_get_host_build_type(); ret = qmi_txn_init(&plat_priv->qmi_wlfw, &txn, wlfw_host_cap_resp_msg_v01_ei, resp); if (ret < 0) { Loading drivers/net/wireless/cnss_utils/wlan_firmware_service_v01.c +305 −2 Original line number Diff line number Diff line Loading @@ -464,8 +464,7 @@ struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, fw_ready_enable_valid), }, { Loading Loading @@ -765,6 +764,24 @@ struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { .offset = offsetof(struct wlfw_ind_register_req_msg_v01, m3_dump_upload_req_enable), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, wfc_call_twt_config_enable_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, wfc_call_twt_config_enable), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -2712,6 +2729,24 @@ struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { ddr_range), .ei_array = wlfw_host_ddr_range_s_v01_ei, }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, host_build_type_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, .elem_len = 1, .elem_size = sizeof(enum wlfw_host_build_type_v01), .array_type = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, host_build_type), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -3529,6 +3564,26 @@ struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[] = { wlfw_qdss_trace_mode_req_msg_v01, option), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_qdss_trace_mode_req_msg_v01, hw_trc_disable_override_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, .elem_len = 1, .elem_size = sizeof(enum wlfw_qmi_param_value_v01), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_qdss_trace_mode_req_msg_v01, hw_trc_disable_override), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -3753,6 +3808,126 @@ struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[] = { wlfw_wfc_call_status_req_msg_v01, wfc_call_status), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, wfc_call_active_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_wfc_call_status_req_msg_v01, wfc_call_active), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, all_wfc_calls_held_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_wfc_call_status_req_msg_v01, all_wfc_calls_held), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, is_wfc_emergency_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, is_wfc_emergency), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_start_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, .elem_len = 1, .elem_size = sizeof(u64), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_start), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_int_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_int), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, media_quality_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, .elem_len = 1, .elem_size = sizeof(enum wlfw_wfc_media_quality_v01), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, media_quality), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -4138,3 +4313,131 @@ struct qmi_elem_info wlfw_exit_power_save_resp_msg_v01_ei[] = { .tlv_type = QMI_COMMON_TLV_TYPE, }, }; struct qmi_elem_info wlfw_wfc_call_twt_config_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_wfc_call_twt_config_ind_msg_v01, twt_sta_start_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_wfc_call_twt_config_ind_msg_v01, twt_sta_start), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_int_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_wfc_call_twt_config_ind_msg_v01, twt_sta_int), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_upo_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_upo), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_sp_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_sp), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_dl_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_dl), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_config_changed_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_config_changed), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, .tlv_type = QMI_COMMON_TLV_TYPE, }, }; drivers/net/wireless/cnss_utils/wlan_firmware_service_v01.h +69 −6 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ #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_WFC_CALL_TWT_CONFIG_IND_V01 0x0051 #define QMI_WLFW_VBATT_RESP_V01 0x0032 #define QMI_WLFW_MSA_INFO_REQ_V01 0x002D #define QMI_WLFW_QDSS_TRACE_FREE_IND_V01 0x0046 Loading Loading @@ -153,6 +154,7 @@ enum wlfw_mem_type_enum_v01 { QMI_WLFW_MEM_CAL_V01 = 4, QMI_WLFW_MEM_DPD_V01 = 5, QMI_WLFW_MEM_QDSS_V01 = 6, QMI_WLFW_MEM_HANG_DATA_V01 = 7, WLFW_MEM_TYPE_ENUM_MAX_VAL_V01 = INT_MAX, }; Loading @@ -163,6 +165,15 @@ enum wlfw_qdss_trace_mode_enum_v01 { WLFW_QDSS_TRACE_MODE_ENUM_MAX_VAL_V01 = INT_MAX, }; enum wlfw_wfc_media_quality_v01 { WLFW_WFC_MEDIA_QUALITY_MIN_VAL_V01 = INT_MIN, QMI_WLFW_WFC_MEDIA_QUAL_NOT_AVAILABLE_V01 = 0, QMI_WLFW_WFC_MEDIA_QUAL_BAD_V01 = 1, QMI_WLFW_WFC_MEDIA_QUAL_GOOD_V01 = 2, QMI_WLFW_WFC_MEDIA_QUAL_EXCELLENT_V01 = 3, WLFW_WFC_MEDIA_QUALITY_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, Loading @@ -170,6 +181,22 @@ enum wlfw_soc_wake_enum_v01 { WLFW_SOC_WAKE_ENUM_MAX_VAL_V01 = INT_MAX, }; enum wlfw_host_build_type_v01 { WLFW_HOST_BUILD_TYPE_MIN_VAL_V01 = INT_MIN, QMI_HOST_BUILD_TYPE_UNSPECIFIED_V01 = 0, QMI_HOST_BUILD_TYPE_PRIMARY_V01 = 1, QMI_HOST_BUILD_TYPE_SECONDARY_V01 = 2, WLFW_HOST_BUILD_TYPE_MAX_VAL_V01 = INT_MAX, }; enum wlfw_qmi_param_value_v01 { WLFW_QMI_PARAM_VALUE_MIN_VAL_V01 = INT_MIN, QMI_PARAM_INVALID_V01 = 0, QMI_PARAM_ENABLE_V01 = 1, QMI_PARAM_DISABLE_V01 = 2, WLFW_QMI_PARAM_VALUE_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) Loading Loading @@ -302,9 +329,11 @@ struct wlfw_ind_register_req_msg_v01 { u8 respond_get_info_enable; u8 m3_dump_upload_req_enable_valid; u8 m3_dump_upload_req_enable; u8 wfc_call_twt_config_enable_valid; u8 wfc_call_twt_config_enable; }; #define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 74 #define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 78 extern struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[]; struct wlfw_ind_register_resp_msg_v01 { Loading Loading @@ -698,9 +727,11 @@ struct wlfw_host_cap_req_msg_v01 { u8 ddr_range_valid; struct wlfw_host_ddr_range_s_v01 ddr_range[QMI_WLFW_MAX_HOST_DDR_RANGE_SIZE_V01]; u8 host_build_type_valid; enum wlfw_host_build_type_v01 host_build_type; }; #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 312 #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 319 extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[]; struct wlfw_host_cap_resp_msg_v01 { Loading Loading @@ -909,9 +940,11 @@ struct wlfw_qdss_trace_mode_req_msg_v01 { enum wlfw_qdss_trace_mode_enum_v01 mode; u8 option_valid; u64 option; 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 18 #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 { Loading Loading @@ -979,9 +1012,21 @@ extern struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[]; struct wlfw_wfc_call_status_req_msg_v01 { u32 wfc_call_status_len; u8 wfc_call_status[QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01]; }; #define WLFW_WFC_CALL_STATUS_REQ_MSG_V01_MAX_MSG_LEN 261 u8 wfc_call_active_valid; u8 wfc_call_active; u8 all_wfc_calls_held_valid; u8 all_wfc_calls_held; u8 is_wfc_emergency_valid; u8 is_wfc_emergency; u8 twt_ims_start_valid; u64 twt_ims_start; u8 twt_ims_int_valid; u16 twt_ims_int; 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 { Loading Loading @@ -1092,4 +1137,22 @@ struct wlfw_exit_power_save_resp_msg_v01 { #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[]; struct wlfw_wfc_call_twt_config_ind_msg_v01 { u8 twt_sta_start_valid; u64 twt_sta_start; u8 twt_sta_int_valid; u16 twt_sta_int; u8 twt_sta_upo_valid; u16 twt_sta_upo; u8 twt_sta_sp_valid; u16 twt_sta_sp; u8 twt_sta_dl_valid; u16 twt_sta_dl; 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[]; #endif drivers/soc/qcom/icnss2/qmi.c +15 −0 Original line number Diff line number Diff line Loading @@ -2191,6 +2191,18 @@ int icnss_send_vbatt_update(struct icnss_priv *priv, uint64_t voltage_uv) return ret; } #ifdef CONFIG_ICNSS2_DEBUG static inline u32 icnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_PRIMARY_V01; } #else static inline u32 icnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_SECONDARY_V01; } #endif int wlfw_host_cap_send_sync(struct icnss_priv *priv) { struct wlfw_host_cap_req_msg_v01 *req; Loading Loading @@ -2226,6 +2238,9 @@ int wlfw_host_cap_send_sync(struct icnss_priv *priv) req->cal_done = priv->cal_done; icnss_pr_dbg("Calibration done is %d\n", priv->cal_done); req->host_build_type_valid = 1; req->host_build_type = icnss_get_host_build_type(); ret = qmi_txn_init(&priv->qmi, &txn, wlfw_host_cap_resp_msg_v01_ei, resp); if (ret < 0) { Loading Loading
drivers/net/wireless/cnss2/qmi.c +15 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,18 @@ static int cnss_wlfw_ind_register_send_sync(struct cnss_plat_data *plat_priv) return ret; } #ifdef CONFIG_CNSS2_DEBUG static inline u32 cnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_PRIMARY_V01; } #else static inline u32 cnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_SECONDARY_V01; } #endif static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) { struct wlfw_host_cap_req_msg_v01 *req; Loading Loading @@ -209,6 +221,9 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) req->ddr_range[0].start, req->ddr_range[0].size); } req->host_build_type_valid = 1; req->host_build_type = cnss_get_host_build_type(); ret = qmi_txn_init(&plat_priv->qmi_wlfw, &txn, wlfw_host_cap_resp_msg_v01_ei, resp); if (ret < 0) { Loading
drivers/net/wireless/cnss_utils/wlan_firmware_service_v01.c +305 −2 Original line number Diff line number Diff line Loading @@ -464,8 +464,7 @@ struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, fw_ready_enable_valid), }, { Loading Loading @@ -765,6 +764,24 @@ struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { .offset = offsetof(struct wlfw_ind_register_req_msg_v01, m3_dump_upload_req_enable), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, wfc_call_twt_config_enable_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x21, .offset = offsetof(struct wlfw_ind_register_req_msg_v01, wfc_call_twt_config_enable), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -2712,6 +2729,24 @@ struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { ddr_range), .ei_array = wlfw_host_ddr_range_s_v01_ei, }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, host_build_type_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, .elem_len = 1, .elem_size = sizeof(enum wlfw_host_build_type_v01), .array_type = NO_ARRAY, .tlv_type = 0x20, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, host_build_type), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -3529,6 +3564,26 @@ struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[] = { wlfw_qdss_trace_mode_req_msg_v01, option), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_qdss_trace_mode_req_msg_v01, hw_trc_disable_override_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, .elem_len = 1, .elem_size = sizeof(enum wlfw_qmi_param_value_v01), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_qdss_trace_mode_req_msg_v01, hw_trc_disable_override), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -3753,6 +3808,126 @@ struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[] = { wlfw_wfc_call_status_req_msg_v01, wfc_call_status), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x10, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, wfc_call_active_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_wfc_call_status_req_msg_v01, wfc_call_active), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, all_wfc_calls_held_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_wfc_call_status_req_msg_v01, all_wfc_calls_held), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, is_wfc_emergency_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, is_wfc_emergency), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_start_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, .elem_len = 1, .elem_size = sizeof(u64), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_start), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_int_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, twt_ims_int), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, media_quality_valid), }, { .data_type = QMI_SIGNED_4_BYTE_ENUM, .elem_len = 1, .elem_size = sizeof(enum wlfw_wfc_media_quality_v01), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_status_req_msg_v01, media_quality), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading @@ -4138,3 +4313,131 @@ struct qmi_elem_info wlfw_exit_power_save_resp_msg_v01_ei[] = { .tlv_type = QMI_COMMON_TLV_TYPE, }, }; struct qmi_elem_info wlfw_wfc_call_twt_config_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_wfc_call_twt_config_ind_msg_v01, twt_sta_start_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_wfc_call_twt_config_ind_msg_v01, twt_sta_start), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x11, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_int_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_wfc_call_twt_config_ind_msg_v01, twt_sta_int), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_upo_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_upo), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_sp_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_sp), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_dl_valid), }, { .data_type = QMI_UNSIGNED_2_BYTE, .elem_len = 1, .elem_size = sizeof(u16), .array_type = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_dl), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_config_changed_valid), }, { .data_type = QMI_UNSIGNED_1_BYTE, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof(struct wlfw_wfc_call_twt_config_ind_msg_v01, twt_sta_config_changed), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, .tlv_type = QMI_COMMON_TLV_TYPE, }, };
drivers/net/wireless/cnss_utils/wlan_firmware_service_v01.h +69 −6 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ #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_WFC_CALL_TWT_CONFIG_IND_V01 0x0051 #define QMI_WLFW_VBATT_RESP_V01 0x0032 #define QMI_WLFW_MSA_INFO_REQ_V01 0x002D #define QMI_WLFW_QDSS_TRACE_FREE_IND_V01 0x0046 Loading Loading @@ -153,6 +154,7 @@ enum wlfw_mem_type_enum_v01 { QMI_WLFW_MEM_CAL_V01 = 4, QMI_WLFW_MEM_DPD_V01 = 5, QMI_WLFW_MEM_QDSS_V01 = 6, QMI_WLFW_MEM_HANG_DATA_V01 = 7, WLFW_MEM_TYPE_ENUM_MAX_VAL_V01 = INT_MAX, }; Loading @@ -163,6 +165,15 @@ enum wlfw_qdss_trace_mode_enum_v01 { WLFW_QDSS_TRACE_MODE_ENUM_MAX_VAL_V01 = INT_MAX, }; enum wlfw_wfc_media_quality_v01 { WLFW_WFC_MEDIA_QUALITY_MIN_VAL_V01 = INT_MIN, QMI_WLFW_WFC_MEDIA_QUAL_NOT_AVAILABLE_V01 = 0, QMI_WLFW_WFC_MEDIA_QUAL_BAD_V01 = 1, QMI_WLFW_WFC_MEDIA_QUAL_GOOD_V01 = 2, QMI_WLFW_WFC_MEDIA_QUAL_EXCELLENT_V01 = 3, WLFW_WFC_MEDIA_QUALITY_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, Loading @@ -170,6 +181,22 @@ enum wlfw_soc_wake_enum_v01 { WLFW_SOC_WAKE_ENUM_MAX_VAL_V01 = INT_MAX, }; enum wlfw_host_build_type_v01 { WLFW_HOST_BUILD_TYPE_MIN_VAL_V01 = INT_MIN, QMI_HOST_BUILD_TYPE_UNSPECIFIED_V01 = 0, QMI_HOST_BUILD_TYPE_PRIMARY_V01 = 1, QMI_HOST_BUILD_TYPE_SECONDARY_V01 = 2, WLFW_HOST_BUILD_TYPE_MAX_VAL_V01 = INT_MAX, }; enum wlfw_qmi_param_value_v01 { WLFW_QMI_PARAM_VALUE_MIN_VAL_V01 = INT_MIN, QMI_PARAM_INVALID_V01 = 0, QMI_PARAM_ENABLE_V01 = 1, QMI_PARAM_DISABLE_V01 = 2, WLFW_QMI_PARAM_VALUE_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) Loading Loading @@ -302,9 +329,11 @@ struct wlfw_ind_register_req_msg_v01 { u8 respond_get_info_enable; u8 m3_dump_upload_req_enable_valid; u8 m3_dump_upload_req_enable; u8 wfc_call_twt_config_enable_valid; u8 wfc_call_twt_config_enable; }; #define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 74 #define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 78 extern struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[]; struct wlfw_ind_register_resp_msg_v01 { Loading Loading @@ -698,9 +727,11 @@ struct wlfw_host_cap_req_msg_v01 { u8 ddr_range_valid; struct wlfw_host_ddr_range_s_v01 ddr_range[QMI_WLFW_MAX_HOST_DDR_RANGE_SIZE_V01]; u8 host_build_type_valid; enum wlfw_host_build_type_v01 host_build_type; }; #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 312 #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 319 extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[]; struct wlfw_host_cap_resp_msg_v01 { Loading Loading @@ -909,9 +940,11 @@ struct wlfw_qdss_trace_mode_req_msg_v01 { enum wlfw_qdss_trace_mode_enum_v01 mode; u8 option_valid; u64 option; 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 18 #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 { Loading Loading @@ -979,9 +1012,21 @@ extern struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[]; struct wlfw_wfc_call_status_req_msg_v01 { u32 wfc_call_status_len; u8 wfc_call_status[QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01]; }; #define WLFW_WFC_CALL_STATUS_REQ_MSG_V01_MAX_MSG_LEN 261 u8 wfc_call_active_valid; u8 wfc_call_active; u8 all_wfc_calls_held_valid; u8 all_wfc_calls_held; u8 is_wfc_emergency_valid; u8 is_wfc_emergency; u8 twt_ims_start_valid; u64 twt_ims_start; u8 twt_ims_int_valid; u16 twt_ims_int; 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 { Loading Loading @@ -1092,4 +1137,22 @@ struct wlfw_exit_power_save_resp_msg_v01 { #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[]; struct wlfw_wfc_call_twt_config_ind_msg_v01 { u8 twt_sta_start_valid; u64 twt_sta_start; u8 twt_sta_int_valid; u16 twt_sta_int; u8 twt_sta_upo_valid; u16 twt_sta_upo; u8 twt_sta_sp_valid; u16 twt_sta_sp; u8 twt_sta_dl_valid; u16 twt_sta_dl; 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[]; #endif
drivers/soc/qcom/icnss2/qmi.c +15 −0 Original line number Diff line number Diff line Loading @@ -2191,6 +2191,18 @@ int icnss_send_vbatt_update(struct icnss_priv *priv, uint64_t voltage_uv) return ret; } #ifdef CONFIG_ICNSS2_DEBUG static inline u32 icnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_PRIMARY_V01; } #else static inline u32 icnss_get_host_build_type(void) { return QMI_HOST_BUILD_TYPE_SECONDARY_V01; } #endif int wlfw_host_cap_send_sync(struct icnss_priv *priv) { struct wlfw_host_cap_req_msg_v01 *req; Loading Loading @@ -2226,6 +2238,9 @@ int wlfw_host_cap_send_sync(struct icnss_priv *priv) req->cal_done = priv->cal_done; icnss_pr_dbg("Calibration done is %d\n", priv->cal_done); req->host_build_type_valid = 1; req->host_build_type = icnss_get_host_build_type(); ret = qmi_txn_init(&priv->qmi, &txn, wlfw_host_cap_resp_msg_v01_ei, resp); if (ret < 0) { Loading