root/sound/usb/qcom/usb_audio_qmi_v01.c
// 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,
        },
};