Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/usb/qcom/usb_audio_qmi_v01.h
26426 views
1
/* SPDX-License-Identifier: GPL-2.0
2
*
3
* Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved.
4
*/
5
6
#ifndef USB_QMI_V01_H
7
#define USB_QMI_V01_H
8
9
#define UAUDIO_STREAM_SERVICE_ID_V01 0x41D
10
#define UAUDIO_STREAM_SERVICE_VERS_V01 0x01
11
12
#define QMI_UAUDIO_STREAM_RESP_V01 0x0001
13
#define QMI_UAUDIO_STREAM_REQ_V01 0x0001
14
#define QMI_UAUDIO_STREAM_IND_V01 0x0001
15
16
struct mem_info_v01 {
17
u64 iova; /* mapped into sysdev */
18
u64 dma; /* mapped into usb host */
19
u32 size;
20
};
21
22
struct apps_mem_info_v01 {
23
struct mem_info_v01 evt_ring;
24
struct mem_info_v01 tr_data;
25
struct mem_info_v01 tr_sync;
26
struct mem_info_v01 xfer_buff;
27
struct mem_info_v01 dcba;
28
};
29
30
struct usb_endpoint_descriptor_v01 {
31
u8 bLength;
32
u8 bDescriptorType;
33
u8 bEndpointAddress;
34
u8 bmAttributes;
35
u16 wMaxPacketSize;
36
u8 bInterval;
37
u8 bRefresh;
38
u8 bSynchAddress;
39
};
40
41
struct usb_interface_descriptor_v01 {
42
u8 bLength;
43
u8 bDescriptorType;
44
u8 bInterfaceNumber;
45
u8 bAlternateSetting;
46
u8 bNumEndpoints;
47
u8 bInterfaceClass;
48
u8 bInterfaceSubClass;
49
u8 bInterfaceProtocol;
50
u8 iInterface;
51
};
52
53
enum usb_qmi_audio_stream_status_enum_v01 {
54
USB_QMI_STREAM_STATUS_ENUM_MIN_VAL_V01 = INT_MIN,
55
USB_QMI_STREAM_REQ_SUCCESS_V01 = 0,
56
USB_QMI_STREAM_REQ_FAILURE_V01 = 1,
57
USB_QMI_STREAM_REQ_FAILURE_NOT_FOUND_V01 = 2,
58
USB_QMI_STREAM_REQ_FAILURE_INVALID_PARAM_V01 = 3,
59
USB_QMI_STREAM_REQ_FAILURE_MEMALLOC_V01 = 4,
60
USB_QMI_STREAM_STATUS_ENUM_MAX_VAL_V01 = INT_MAX,
61
};
62
63
enum usb_qmi_audio_device_indication_enum_v01 {
64
USB_QMI_DEVICE_INDICATION_ENUM_MIN_VAL_V01 = INT_MIN,
65
USB_QMI_DEV_CONNECT_V01 = 0,
66
USB_QMI_DEV_DISCONNECT_V01 = 1,
67
USB_QMI_DEV_SUSPEND_V01 = 2,
68
USB_QMI_DEV_RESUME_V01 = 3,
69
USB_QMI_DEVICE_INDICATION_ENUM_MAX_VAL_V01 = INT_MAX,
70
};
71
72
enum usb_qmi_audio_device_speed_enum_v01 {
73
USB_QMI_DEVICE_SPEED_ENUM_MIN_VAL_V01 = INT_MIN,
74
USB_QMI_DEVICE_SPEED_INVALID_V01 = 0,
75
USB_QMI_DEVICE_SPEED_LOW_V01 = 1,
76
USB_QMI_DEVICE_SPEED_FULL_V01 = 2,
77
USB_QMI_DEVICE_SPEED_HIGH_V01 = 3,
78
USB_QMI_DEVICE_SPEED_SUPER_V01 = 4,
79
USB_QMI_DEVICE_SPEED_SUPER_PLUS_V01 = 5,
80
USB_QMI_DEVICE_SPEED_ENUM_MAX_VAL_V01 = INT_MAX,
81
};
82
83
struct qmi_uaudio_stream_req_msg_v01 {
84
u8 enable;
85
u32 usb_token;
86
u8 audio_format_valid;
87
u32 audio_format;
88
u8 number_of_ch_valid;
89
u32 number_of_ch;
90
u8 bit_rate_valid;
91
u32 bit_rate;
92
u8 xfer_buff_size_valid;
93
u32 xfer_buff_size;
94
u8 service_interval_valid;
95
u32 service_interval;
96
};
97
98
#define QMI_UAUDIO_STREAM_REQ_MSG_V01_MAX_MSG_LEN 46
99
extern const struct qmi_elem_info qmi_uaudio_stream_req_msg_v01_ei[];
100
101
struct qmi_uaudio_stream_resp_msg_v01 {
102
struct qmi_response_type_v01 resp;
103
u8 status_valid;
104
enum usb_qmi_audio_stream_status_enum_v01 status;
105
u8 internal_status_valid;
106
u32 internal_status;
107
u8 slot_id_valid;
108
u32 slot_id;
109
u8 usb_token_valid;
110
u32 usb_token;
111
u8 std_as_opr_intf_desc_valid;
112
struct usb_interface_descriptor_v01 std_as_opr_intf_desc;
113
u8 std_as_data_ep_desc_valid;
114
struct usb_endpoint_descriptor_v01 std_as_data_ep_desc;
115
u8 std_as_sync_ep_desc_valid;
116
struct usb_endpoint_descriptor_v01 std_as_sync_ep_desc;
117
u8 usb_audio_spec_revision_valid;
118
u16 usb_audio_spec_revision;
119
u8 data_path_delay_valid;
120
u8 data_path_delay;
121
u8 usb_audio_subslot_size_valid;
122
u8 usb_audio_subslot_size;
123
u8 xhci_mem_info_valid;
124
struct apps_mem_info_v01 xhci_mem_info;
125
u8 interrupter_num_valid;
126
u8 interrupter_num;
127
u8 speed_info_valid;
128
enum usb_qmi_audio_device_speed_enum_v01 speed_info;
129
u8 controller_num_valid;
130
u8 controller_num;
131
};
132
133
#define QMI_UAUDIO_STREAM_RESP_MSG_V01_MAX_MSG_LEN 202
134
extern const struct qmi_elem_info qmi_uaudio_stream_resp_msg_v01_ei[];
135
136
struct qmi_uaudio_stream_ind_msg_v01 {
137
enum usb_qmi_audio_device_indication_enum_v01 dev_event;
138
u32 slot_id;
139
u8 usb_token_valid;
140
u32 usb_token;
141
u8 std_as_opr_intf_desc_valid;
142
struct usb_interface_descriptor_v01 std_as_opr_intf_desc;
143
u8 std_as_data_ep_desc_valid;
144
struct usb_endpoint_descriptor_v01 std_as_data_ep_desc;
145
u8 std_as_sync_ep_desc_valid;
146
struct usb_endpoint_descriptor_v01 std_as_sync_ep_desc;
147
u8 usb_audio_spec_revision_valid;
148
u16 usb_audio_spec_revision;
149
u8 data_path_delay_valid;
150
u8 data_path_delay;
151
u8 usb_audio_subslot_size_valid;
152
u8 usb_audio_subslot_size;
153
u8 xhci_mem_info_valid;
154
struct apps_mem_info_v01 xhci_mem_info;
155
u8 interrupter_num_valid;
156
u8 interrupter_num;
157
u8 controller_num_valid;
158
u8 controller_num;
159
};
160
161
#define QMI_UAUDIO_STREAM_IND_MSG_V01_MAX_MSG_LEN 181
162
extern const struct qmi_elem_info qmi_uaudio_stream_ind_msg_v01_ei[];
163
164
#endif
165
166