mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-11-01 09:13:37 +00:00 
			
		
		
		
	While trying to understand a bug in the audio offload code, I had to spend extra time due to unfortunate nameing of local variables and struct members. Change these to more conventional names that reflect the actual usage: - pointers to the CPU virtual addresses of a dma buffer get a _cpu suffix to disambiguate them for MMIO virtual addresses - MMIO virtual addresses that are mapped explicitly through the IOMMU get a _iova suffix consistently, rather than a mix of iova and va. - DMA addresses (dma_addr_t) that are in a device address space (linear or IOMMU) get a _dma suffix in place of the _pa suffix. - CPU physical (phys_addr_t) addresses get a _pa suffix. There is still a mixup with dma addresses here that I address in another patch. No functional changes are intended here. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Link: https://lore.kernel.org/r/20250513123442.159936-2-arnd@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
		
			
				
	
	
		
			863 lines
		
	
	
	
		
			20 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			863 lines
		
	
	
	
		
			20 KiB
		
	
	
	
		
			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,
 | 
						|
	},
 | 
						|
};
 |