| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved. |
| */ |
| |
| #include <linux/soc/qcom/qmi.h> |
| |
| #include "usb_audio_qmi_v01.h" |
| |
| static const struct qmi_elem_info mem_info_v01_ei[] = { |
| { |
| .data_type = QMI_UNSIGNED_8_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u64), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct mem_info_v01, iova), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_8_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u64), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct mem_info_v01, dma), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct mem_info_v01, size), |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |
| |
| static const struct qmi_elem_info apps_mem_info_v01_ei[] = { |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct apps_mem_info_v01, evt_ring), |
| .ei_array = mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct apps_mem_info_v01, tr_data), |
| .ei_array = mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct apps_mem_info_v01, tr_sync), |
| .ei_array = mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct apps_mem_info_v01, xfer_buff), |
| .ei_array = mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct apps_mem_info_v01, dcba), |
| .ei_array = mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |
| |
| static const struct qmi_elem_info usb_endpoint_descriptor_v01_ei[] = { |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bLength), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bDescriptorType), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bEndpointAddress), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bmAttributes), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_2_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u16), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| wMaxPacketSize), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bInterval), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bRefresh), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_endpoint_descriptor_v01, |
| bSynchAddress), |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |
| |
| static const struct qmi_elem_info usb_interface_descriptor_v01_ei[] = { |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bLength), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bDescriptorType), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bInterfaceNumber), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bAlternateSetting), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bNumEndpoints), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bInterfaceClass), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bInterfaceSubClass), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| bInterfaceProtocol), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0, |
| .offset = offsetof(struct usb_interface_descriptor_v01, |
| iInterface), |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |
| |
| const struct qmi_elem_info qmi_uaudio_stream_req_msg_v01_ei[] = { |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x01, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| enable), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x02, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| usb_token), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x10, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| audio_format_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x10, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| audio_format), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x11, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| number_of_ch_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x11, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| number_of_ch), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x12, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| bit_rate_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x12, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| bit_rate), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x13, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| xfer_buff_size_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x13, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| xfer_buff_size), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x14, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| service_interval_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x14, |
| .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01, |
| service_interval), |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |
| |
| const struct qmi_elem_info qmi_uaudio_stream_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 qmi_uaudio_stream_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 qmi_uaudio_stream_resp_msg_v01, |
| status_valid), |
| }, |
| { |
| .data_type = QMI_SIGNED_4_BYTE_ENUM, |
| .elem_len = 1, |
| .elem_size = sizeof(enum usb_qmi_audio_stream_status_enum_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x10, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| status), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x11, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| internal_status_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x11, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| internal_status), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x12, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| slot_id_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x12, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| slot_id), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x13, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| usb_token_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x13, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| usb_token), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x14, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| std_as_opr_intf_desc_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct usb_interface_descriptor_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x14, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| std_as_opr_intf_desc), |
| .ei_array = usb_interface_descriptor_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x15, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| std_as_data_ep_desc_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct usb_endpoint_descriptor_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x15, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| std_as_data_ep_desc), |
| .ei_array = usb_endpoint_descriptor_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x16, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| std_as_sync_ep_desc_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct usb_endpoint_descriptor_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x16, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| std_as_sync_ep_desc), |
| .ei_array = usb_endpoint_descriptor_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x17, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| usb_audio_spec_revision_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_2_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u16), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x17, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| usb_audio_spec_revision), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x18, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| data_path_delay_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x18, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| data_path_delay), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x19, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| usb_audio_subslot_size_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x19, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| usb_audio_subslot_size), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1A, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| xhci_mem_info_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct apps_mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1A, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| xhci_mem_info), |
| .ei_array = apps_mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1B, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| interrupter_num_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1B, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| interrupter_num), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1C, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| speed_info_valid), |
| }, |
| { |
| .data_type = QMI_SIGNED_4_BYTE_ENUM, |
| .elem_len = 1, |
| .elem_size = sizeof(enum usb_qmi_audio_device_speed_enum_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1C, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| speed_info), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1D, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| controller_num_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x1D, |
| .offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01, |
| controller_num), |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |
| |
| const struct qmi_elem_info qmi_uaudio_stream_ind_msg_v01_ei[] = { |
| { |
| .data_type = QMI_SIGNED_4_BYTE_ENUM, |
| .elem_len = 1, |
| .elem_size = sizeof( |
| enum usb_qmi_audio_device_indication_enum_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x01, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| dev_event), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x02, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| slot_id), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x10, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| usb_token_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_4_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u32), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x10, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| usb_token), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x11, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| std_as_opr_intf_desc_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct usb_interface_descriptor_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x11, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| std_as_opr_intf_desc), |
| .ei_array = usb_interface_descriptor_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x12, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| std_as_data_ep_desc_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct usb_endpoint_descriptor_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x12, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| std_as_data_ep_desc), |
| .ei_array = usb_endpoint_descriptor_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x13, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| std_as_sync_ep_desc_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct usb_endpoint_descriptor_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x13, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| std_as_sync_ep_desc), |
| .ei_array = usb_endpoint_descriptor_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x14, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| usb_audio_spec_revision_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_2_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u16), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x14, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| usb_audio_spec_revision), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x15, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| data_path_delay_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x15, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| data_path_delay), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x16, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| usb_audio_subslot_size_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x16, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| usb_audio_subslot_size), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x17, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| xhci_mem_info_valid), |
| }, |
| { |
| .data_type = QMI_STRUCT, |
| .elem_len = 1, |
| .elem_size = sizeof(struct apps_mem_info_v01), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x17, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| xhci_mem_info), |
| .ei_array = apps_mem_info_v01_ei, |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x18, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| interrupter_num_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x18, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| interrupter_num), |
| }, |
| { |
| .data_type = QMI_OPT_FLAG, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x19, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| controller_num_valid), |
| }, |
| { |
| .data_type = QMI_UNSIGNED_1_BYTE, |
| .elem_len = 1, |
| .elem_size = sizeof(u8), |
| .array_type = NO_ARRAY, |
| .tlv_type = 0x19, |
| .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01, |
| controller_num), |
| }, |
| { |
| .data_type = QMI_EOTI, |
| .array_type = NO_ARRAY, |
| .tlv_type = QMI_COMMON_TLV_TYPE, |
| }, |
| }; |