blob: 4fa8445badde1f1b58b2e833deaa80c6c64654a9 [file] [log] [blame]
Hemant Kumar746cc972017-08-17 17:34:05 -07001 /* Copyright (c) 2017, The Linux Foundation. All rights reserved.
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -08002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13#include <linux/qmi_encdec.h>
14
15#include <soc/qcom/msm_qmi_interface.h>
16
17#include "usb_audio_qmi_v01.h"
18
19static struct elem_info mem_info_v01_ei[] = {
20 {
21 .data_type = QMI_UNSIGNED_8_BYTE,
22 .elem_len = 1,
23 .elem_size = sizeof(uint64_t),
24 .is_array = NO_ARRAY,
25 .tlv_type = 0,
26 .offset = offsetof(struct mem_info_v01,
27 va),
28 },
29 {
30 .data_type = QMI_UNSIGNED_8_BYTE,
31 .elem_len = 1,
32 .elem_size = sizeof(uint64_t),
33 .is_array = NO_ARRAY,
34 .tlv_type = 0,
35 .offset = offsetof(struct mem_info_v01,
36 pa),
37 },
38 {
39 .data_type = QMI_UNSIGNED_4_BYTE,
40 .elem_len = 1,
41 .elem_size = sizeof(uint32_t),
42 .is_array = NO_ARRAY,
43 .tlv_type = 0,
44 .offset = offsetof(struct mem_info_v01,
45 size),
46 },
47 {
48 .data_type = QMI_EOTI,
49 .is_array = NO_ARRAY,
50 .is_array = QMI_COMMON_TLV_TYPE,
51 },
52};
53
54static struct elem_info apps_mem_info_v01_ei[] = {
55 {
56 .data_type = QMI_STRUCT,
57 .elem_len = 1,
58 .elem_size = sizeof(struct mem_info_v01),
59 .is_array = NO_ARRAY,
60 .tlv_type = 0,
61 .offset = offsetof(struct apps_mem_info_v01,
62 evt_ring),
63 .ei_array = mem_info_v01_ei,
64 },
65 {
66 .data_type = QMI_STRUCT,
67 .elem_len = 1,
68 .elem_size = sizeof(struct mem_info_v01),
69 .is_array = NO_ARRAY,
70 .tlv_type = 0,
71 .offset = offsetof(struct apps_mem_info_v01,
72 tr_data),
73 .ei_array = mem_info_v01_ei,
74 },
75 {
76 .data_type = QMI_STRUCT,
77 .elem_len = 1,
78 .elem_size = sizeof(struct mem_info_v01),
79 .is_array = NO_ARRAY,
80 .tlv_type = 0,
81 .offset = offsetof(struct apps_mem_info_v01,
82 tr_sync),
83 .ei_array = mem_info_v01_ei,
84 },
85 {
86 .data_type = QMI_STRUCT,
87 .elem_len = 1,
88 .elem_size = sizeof(struct mem_info_v01),
89 .is_array = NO_ARRAY,
90 .tlv_type = 0,
91 .offset = offsetof(struct apps_mem_info_v01,
92 xfer_buff),
93 .ei_array = mem_info_v01_ei,
94 },
95 {
96 .data_type = QMI_STRUCT,
97 .elem_len = 1,
98 .elem_size = sizeof(struct mem_info_v01),
99 .is_array = NO_ARRAY,
100 .tlv_type = 0,
101 .offset = offsetof(struct apps_mem_info_v01,
102 dcba),
103 .ei_array = mem_info_v01_ei,
104 },
105 {
106 .data_type = QMI_EOTI,
107 .is_array = NO_ARRAY,
108 .is_array = QMI_COMMON_TLV_TYPE,
109 },
110};
111
112static struct elem_info usb_endpoint_descriptor_v01_ei[] = {
113 {
114 .data_type = QMI_UNSIGNED_1_BYTE,
115 .elem_len = 1,
116 .elem_size = sizeof(uint8_t),
117 .is_array = NO_ARRAY,
118 .tlv_type = 0,
119 .offset = offsetof(struct usb_endpoint_descriptor_v01,
120 bLength),
121 },
122 {
123 .data_type = QMI_UNSIGNED_1_BYTE,
124 .elem_len = 1,
125 .elem_size = sizeof(uint8_t),
126 .is_array = NO_ARRAY,
127 .tlv_type = 0,
128 .offset = offsetof(struct usb_endpoint_descriptor_v01,
129 bDescriptorType),
130 },
131 {
132 .data_type = QMI_UNSIGNED_1_BYTE,
133 .elem_len = 1,
134 .elem_size = sizeof(uint8_t),
135 .is_array = NO_ARRAY,
136 .tlv_type = 0,
137 .offset = offsetof(struct usb_endpoint_descriptor_v01,
138 bEndpointAddress),
139 },
140 {
141 .data_type = QMI_UNSIGNED_1_BYTE,
142 .elem_len = 1,
143 .elem_size = sizeof(uint8_t),
144 .is_array = NO_ARRAY,
145 .tlv_type = 0,
146 .offset = offsetof(struct usb_endpoint_descriptor_v01,
147 bmAttributes),
148 },
149 {
150 .data_type = QMI_UNSIGNED_2_BYTE,
151 .elem_len = 1,
152 .elem_size = sizeof(uint16_t),
153 .is_array = NO_ARRAY,
154 .tlv_type = 0,
155 .offset = offsetof(struct usb_endpoint_descriptor_v01,
156 wMaxPacketSize),
157 },
158 {
159 .data_type = QMI_UNSIGNED_1_BYTE,
160 .elem_len = 1,
161 .elem_size = sizeof(uint8_t),
162 .is_array = NO_ARRAY,
163 .tlv_type = 0,
164 .offset = offsetof(struct usb_endpoint_descriptor_v01,
165 bInterval),
166 },
167 {
168 .data_type = QMI_UNSIGNED_1_BYTE,
169 .elem_len = 1,
170 .elem_size = sizeof(uint8_t),
171 .is_array = NO_ARRAY,
172 .tlv_type = 0,
173 .offset = offsetof(struct usb_endpoint_descriptor_v01,
174 bRefresh),
175 },
176 {
177 .data_type = QMI_UNSIGNED_1_BYTE,
178 .elem_len = 1,
179 .elem_size = sizeof(uint8_t),
180 .is_array = NO_ARRAY,
181 .tlv_type = 0,
182 .offset = offsetof(struct usb_endpoint_descriptor_v01,
183 bSynchAddress),
184 },
185 {
186 .data_type = QMI_EOTI,
187 .is_array = NO_ARRAY,
188 .is_array = QMI_COMMON_TLV_TYPE,
189 },
190};
191
192static struct elem_info usb_interface_descriptor_v01_ei[] = {
193 {
194 .data_type = QMI_UNSIGNED_1_BYTE,
195 .elem_len = 1,
196 .elem_size = sizeof(uint8_t),
197 .is_array = NO_ARRAY,
198 .tlv_type = 0,
199 .offset = offsetof(struct usb_interface_descriptor_v01,
200 bLength),
201 },
202 {
203 .data_type = QMI_UNSIGNED_1_BYTE,
204 .elem_len = 1,
205 .elem_size = sizeof(uint8_t),
206 .is_array = NO_ARRAY,
207 .tlv_type = 0,
208 .offset = offsetof(struct usb_interface_descriptor_v01,
209 bDescriptorType),
210 },
211 {
212 .data_type = QMI_UNSIGNED_1_BYTE,
213 .elem_len = 1,
214 .elem_size = sizeof(uint8_t),
215 .is_array = NO_ARRAY,
216 .tlv_type = 0,
217 .offset = offsetof(struct usb_interface_descriptor_v01,
218 bInterfaceNumber),
219 },
220 {
221 .data_type = QMI_UNSIGNED_1_BYTE,
222 .elem_len = 1,
223 .elem_size = sizeof(uint8_t),
224 .is_array = NO_ARRAY,
225 .tlv_type = 0,
226 .offset = offsetof(struct usb_interface_descriptor_v01,
227 bAlternateSetting),
228 },
229 {
230 .data_type = QMI_UNSIGNED_1_BYTE,
231 .elem_len = 1,
232 .elem_size = sizeof(uint8_t),
233 .is_array = NO_ARRAY,
234 .tlv_type = 0,
235 .offset = offsetof(struct usb_interface_descriptor_v01,
236 bNumEndpoints),
237 },
238 {
239 .data_type = QMI_UNSIGNED_1_BYTE,
240 .elem_len = 1,
241 .elem_size = sizeof(uint8_t),
242 .is_array = NO_ARRAY,
243 .tlv_type = 0,
244 .offset = offsetof(struct usb_interface_descriptor_v01,
245 bInterfaceClass),
246 },
247 {
248 .data_type = QMI_UNSIGNED_1_BYTE,
249 .elem_len = 1,
250 .elem_size = sizeof(uint8_t),
251 .is_array = NO_ARRAY,
252 .tlv_type = 0,
253 .offset = offsetof(struct usb_interface_descriptor_v01,
254 bInterfaceSubClass),
255 },
256 {
257 .data_type = QMI_UNSIGNED_1_BYTE,
258 .elem_len = 1,
259 .elem_size = sizeof(uint8_t),
260 .is_array = NO_ARRAY,
261 .tlv_type = 0,
262 .offset = offsetof(struct usb_interface_descriptor_v01,
263 bInterfaceProtocol),
264 },
265 {
266 .data_type = QMI_UNSIGNED_1_BYTE,
267 .elem_len = 1,
268 .elem_size = sizeof(uint8_t),
269 .is_array = NO_ARRAY,
270 .tlv_type = 0,
271 .offset = offsetof(struct usb_interface_descriptor_v01,
272 iInterface),
273 },
274 {
275 .data_type = QMI_EOTI,
276 .is_array = NO_ARRAY,
277 .is_array = QMI_COMMON_TLV_TYPE,
278 },
279};
280
281struct elem_info qmi_uaudio_stream_req_msg_v01_ei[] = {
282 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800283 .data_type = QMI_UNSIGNED_1_BYTE,
284 .elem_len = 1,
285 .elem_size = sizeof(uint8_t),
286 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700287 .tlv_type = 0x01,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800288 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
289 enable),
290 },
291 {
292 .data_type = QMI_UNSIGNED_4_BYTE,
293 .elem_len = 1,
294 .elem_size = sizeof(uint32_t),
295 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700296 .tlv_type = 0x02,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800297 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
298 usb_token),
299 },
300 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700301 .data_type = QMI_OPT_FLAG,
302 .elem_len = 1,
303 .elem_size = sizeof(uint8_t),
304 .is_array = NO_ARRAY,
305 .tlv_type = 0x10,
306 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
307 audio_format_valid),
308 },
309 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800310 .data_type = QMI_UNSIGNED_4_BYTE,
311 .elem_len = 1,
312 .elem_size = sizeof(uint32_t),
313 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700314 .tlv_type = 0x10,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800315 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
316 audio_format),
317 },
318 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700319 .data_type = QMI_OPT_FLAG,
320 .elem_len = 1,
321 .elem_size = sizeof(uint8_t),
322 .is_array = NO_ARRAY,
323 .tlv_type = 0x11,
324 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
325 number_of_ch_valid),
326 },
327 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800328 .data_type = QMI_UNSIGNED_4_BYTE,
329 .elem_len = 1,
330 .elem_size = sizeof(uint32_t),
331 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700332 .tlv_type = 0x11,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800333 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
334 number_of_ch),
335 },
336 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700337 .data_type = QMI_OPT_FLAG,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800338 .elem_len = 1,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700339 .elem_size = sizeof(uint8_t),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800340 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700341 .tlv_type = 0x12,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800342 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700343 bit_rate_valid),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800344 },
345 {
346 .data_type = QMI_UNSIGNED_4_BYTE,
347 .elem_len = 1,
348 .elem_size = sizeof(uint32_t),
349 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700350 .tlv_type = 0x12,
351 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
352 bit_rate),
353 },
354 {
355 .data_type = QMI_OPT_FLAG,
356 .elem_len = 1,
357 .elem_size = sizeof(uint8_t),
358 .is_array = NO_ARRAY,
359 .tlv_type = 0x13,
360 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
361 xfer_buff_size_valid),
362 },
363 {
364 .data_type = QMI_UNSIGNED_4_BYTE,
365 .elem_len = 1,
366 .elem_size = sizeof(uint32_t),
367 .is_array = NO_ARRAY,
368 .tlv_type = 0x13,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800369 .offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
370 xfer_buff_size),
371 },
372 {
373 .data_type = QMI_EOTI,
374 .is_array = NO_ARRAY,
375 .is_array = QMI_COMMON_TLV_TYPE,
376 },
377};
378
379struct elem_info qmi_uaudio_stream_resp_msg_v01_ei[] = {
380 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700381 .data_type = QMI_STRUCT,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800382 .elem_len = 1,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700383 .elem_size = sizeof(struct qmi_response_type_v01),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800384 .is_array = NO_ARRAY,
385 .tlv_type = 0x02,
386 .offset = offsetof(
387 struct qmi_uaudio_stream_resp_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700388 resp),
389 .ei_array = get_qmi_response_type_v01_ei(),
390 },
391 {
392 .data_type = QMI_OPT_FLAG,
393 .elem_len = 1,
394 .elem_size = sizeof(uint8_t),
395 .is_array = NO_ARRAY,
396 .tlv_type = 0x10,
397 .offset = offsetof(
398 struct qmi_uaudio_stream_resp_msg_v01,
399 status_valid),
400 },
401 {
402 .data_type = QMI_SIGNED_4_BYTE_ENUM,
403 .elem_len = 1,
404 .elem_size = sizeof(enum usb_audio_stream_status_enum_v01),
405 .is_array = NO_ARRAY,
406 .tlv_type = 0x10,
407 .offset = offsetof(
408 struct qmi_uaudio_stream_resp_msg_v01,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800409 status),
410 },
411 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700412 .data_type = QMI_OPT_FLAG,
413 .elem_len = 1,
414 .elem_size = sizeof(uint8_t),
415 .is_array = NO_ARRAY,
416 .tlv_type = 0x11,
417 .offset = offsetof(
418 struct qmi_uaudio_stream_resp_msg_v01,
419 internal_status_valid),
420 },
421 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800422 .data_type = QMI_UNSIGNED_4_BYTE,
423 .elem_len = 1,
424 .elem_size = sizeof(uint32_t),
425 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700426 .tlv_type = 0x11,
427 .offset = offsetof(
428 struct qmi_uaudio_stream_resp_msg_v01,
429 internal_status),
430 },
431 {
432 .data_type = QMI_OPT_FLAG,
433 .elem_len = 1,
434 .elem_size = sizeof(uint8_t),
435 .is_array = NO_ARRAY,
436 .tlv_type = 0x12,
437 .offset = offsetof(
438 struct qmi_uaudio_stream_resp_msg_v01,
439 slot_id_valid),
440 },
441 {
442 .data_type = QMI_UNSIGNED_4_BYTE,
443 .elem_len = 1,
444 .elem_size = sizeof(uint32_t),
445 .is_array = NO_ARRAY,
446 .tlv_type = 0x12,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800447 .offset = offsetof(
448 struct qmi_uaudio_stream_resp_msg_v01,
449 slot_id),
450 },
451 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700452 .data_type = QMI_OPT_FLAG,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800453 .elem_len = 1,
454 .elem_size = sizeof(uint8_t),
455 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700456 .tlv_type = 0x13,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800457 .offset = offsetof(
458 struct qmi_uaudio_stream_resp_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700459 usb_token_valid),
460 },
461 {
462 .data_type = QMI_UNSIGNED_4_BYTE,
463 .elem_len = 1,
464 .elem_size = sizeof(uint32_t),
465 .is_array = NO_ARRAY,
466 .tlv_type = 0x13,
467 .offset = offsetof(
468 struct qmi_uaudio_stream_resp_msg_v01,
469 usb_token),
470 },
471 {
472 .data_type = QMI_OPT_FLAG,
473 .elem_len = 1,
474 .elem_size = sizeof(uint8_t),
475 .is_array = NO_ARRAY,
476 .tlv_type = 0x14,
477 .offset = offsetof(
478 struct qmi_uaudio_stream_resp_msg_v01,
479 std_as_opr_intf_desc_valid),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800480 },
481 {
482 .data_type = QMI_STRUCT,
483 .elem_len = 1,
484 .elem_size = sizeof(struct usb_interface_descriptor_v01),
485 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700486 .tlv_type = 0x14,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800487 .offset = offsetof(
488 struct qmi_uaudio_stream_resp_msg_v01,
489 std_as_opr_intf_desc),
490 .ei_array = usb_interface_descriptor_v01_ei,
491 },
492 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700493 .data_type = QMI_OPT_FLAG,
494 .elem_len = 1,
495 .elem_size = sizeof(uint8_t),
496 .is_array = NO_ARRAY,
497 .tlv_type = 0x15,
498 .offset = offsetof(
499 struct qmi_uaudio_stream_resp_msg_v01,
500 std_as_data_ep_desc_valid),
501 },
502 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800503 .data_type = QMI_STRUCT,
504 .elem_len = 1,
505 .elem_size = sizeof(struct usb_endpoint_descriptor_v01),
506 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700507 .tlv_type = 0x15,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800508 .offset = offsetof(
509 struct qmi_uaudio_stream_resp_msg_v01,
510 std_as_data_ep_desc),
511 .ei_array = usb_endpoint_descriptor_v01_ei,
512 },
513 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700514 .data_type = QMI_OPT_FLAG,
515 .elem_len = 1,
516 .elem_size = sizeof(uint8_t),
517 .is_array = NO_ARRAY,
518 .tlv_type = 0x16,
519 .offset = offsetof(
520 struct qmi_uaudio_stream_resp_msg_v01,
521 std_as_sync_ep_desc_valid),
522 },
523 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800524 .data_type = QMI_STRUCT,
525 .elem_len = 1,
526 .elem_size = sizeof(struct usb_endpoint_descriptor_v01),
527 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700528 .tlv_type = 0x16,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800529 .offset = offsetof(
530 struct qmi_uaudio_stream_resp_msg_v01,
531 std_as_sync_ep_desc),
532 .ei_array = usb_endpoint_descriptor_v01_ei,
533 },
534 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700535 .data_type = QMI_OPT_FLAG,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800536 .elem_len = 1,
537 .elem_size = sizeof(uint8_t),
538 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700539 .tlv_type = 0x17,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800540 .offset = offsetof(
541 struct qmi_uaudio_stream_resp_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700542 usb_audio_spec_revision_valid),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800543 },
544 {
545 .data_type = QMI_UNSIGNED_2_BYTE,
546 .elem_len = 1,
547 .elem_size = sizeof(uint16_t),
548 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700549 .tlv_type = 0x17,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800550 .offset = offsetof(
551 struct qmi_uaudio_stream_resp_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700552 usb_audio_spec_revision),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800553 },
554 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700555 .data_type = QMI_OPT_FLAG,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800556 .elem_len = 1,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700557 .elem_size = sizeof(uint8_t),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800558 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700559 .tlv_type = 0x18,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800560 .offset = offsetof(
561 struct qmi_uaudio_stream_resp_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700562 data_path_delay_valid),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800563 },
564 {
565 .data_type = QMI_UNSIGNED_1_BYTE,
566 .elem_len = 1,
567 .elem_size = sizeof(uint8_t),
568 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700569 .tlv_type = 0x18,
570 .offset = offsetof(
571 struct qmi_uaudio_stream_resp_msg_v01,
572 data_path_delay),
573 },
574 {
575 .data_type = QMI_OPT_FLAG,
576 .elem_len = 1,
577 .elem_size = sizeof(uint8_t),
578 .is_array = NO_ARRAY,
579 .tlv_type = 0x19,
580 .offset = offsetof(
581 struct qmi_uaudio_stream_resp_msg_v01,
582 usb_audio_subslot_size_valid),
583 },
584 {
585 .data_type = QMI_UNSIGNED_1_BYTE,
586 .elem_len = 1,
587 .elem_size = sizeof(uint8_t),
588 .is_array = NO_ARRAY,
589 .tlv_type = 0x19,
590 .offset = offsetof(
591 struct qmi_uaudio_stream_resp_msg_v01,
592 usb_audio_subslot_size),
593 },
594 {
595 .data_type = QMI_OPT_FLAG,
596 .elem_len = 1,
597 .elem_size = sizeof(uint8_t),
598 .is_array = NO_ARRAY,
599 .tlv_type = 0x1A,
600 .offset = offsetof(
601 struct qmi_uaudio_stream_resp_msg_v01,
602 xhci_mem_info_valid),
603 },
604 {
605 .data_type = QMI_STRUCT,
606 .elem_len = 1,
607 .elem_size = sizeof(struct apps_mem_info_v01),
608 .is_array = NO_ARRAY,
609 .tlv_type = 0x1A,
610 .offset = offsetof(
611 struct qmi_uaudio_stream_resp_msg_v01,
612 xhci_mem_info),
613 .ei_array = apps_mem_info_v01_ei,
614 },
615 {
616 .data_type = QMI_OPT_FLAG,
617 .elem_len = 1,
618 .elem_size = sizeof(uint8_t),
619 .is_array = NO_ARRAY,
620 .tlv_type = 0x1B,
621 .offset = offsetof(
622 struct qmi_uaudio_stream_resp_msg_v01,
623 interrupter_num_valid),
624 },
625 {
626 .data_type = QMI_UNSIGNED_1_BYTE,
627 .elem_len = 1,
628 .elem_size = sizeof(uint8_t),
629 .is_array = NO_ARRAY,
630 .tlv_type = 0x1B,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800631 .offset = offsetof(
632 struct qmi_uaudio_stream_resp_msg_v01,
633 interrupter_num),
634 },
635 {
Hemant Kumar746cc972017-08-17 17:34:05 -0700636 .data_type = QMI_OPT_FLAG,
637 .elem_len = 1,
638 .elem_size = sizeof(uint8_t),
639 .is_array = NO_ARRAY,
640 .tlv_type = 0x1C,
641 .offset = offsetof(
642 struct qmi_uaudio_stream_resp_msg_v01,
643 speed_info_valid),
644 },
645 {
646 .data_type = QMI_SIGNED_4_BYTE_ENUM,
647 .elem_len = 1,
648 .elem_size = sizeof(enum usb_audio_device_speed_enum_v01),
649 .is_array = NO_ARRAY,
650 .tlv_type = 0x1C,
651 .offset = offsetof(
652 struct qmi_uaudio_stream_resp_msg_v01,
653 speed_info),
654 },
655 {
656 .data_type = QMI_OPT_FLAG,
657 .elem_len = 1,
658 .elem_size = sizeof(uint8_t),
659 .is_array = NO_ARRAY,
660 .tlv_type = 0x1D,
661 .offset = offsetof(
662 struct qmi_uaudio_stream_resp_msg_v01,
663 controller_num_valid),
664 },
665 {
666 .data_type = QMI_UNSIGNED_1_BYTE,
667 .elem_len = 1,
668 .elem_size = sizeof(uint8_t),
669 .is_array = NO_ARRAY,
670 .tlv_type = 0x1D,
671 .offset = offsetof(
672 struct qmi_uaudio_stream_resp_msg_v01,
673 controller_num),
674 },
675 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800676 .data_type = QMI_EOTI,
677 .is_array = NO_ARRAY,
678 .is_array = QMI_COMMON_TLV_TYPE,
679 },
680};
681
682struct elem_info qmi_uaudio_stream_ind_msg_v01_ei[] = {
683 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700684 .data_type = QMI_SIGNED_4_BYTE_ENUM,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800685 .elem_len = 1,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700686 .elem_size = sizeof(
687 enum usb_audio_device_indication_enum_v01),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800688 .is_array = NO_ARRAY,
689 .tlv_type = 0x01,
690 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700691 dev_event),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800692 },
693 {
694 .data_type = QMI_UNSIGNED_4_BYTE,
695 .elem_len = 1,
696 .elem_size = sizeof(uint32_t),
697 .is_array = NO_ARRAY,
698 .tlv_type = 0x02,
699 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800700 slot_id),
701 },
702 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700703 .data_type = QMI_OPT_FLAG,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800704 .elem_len = 1,
705 .elem_size = sizeof(uint8_t),
706 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700707 .tlv_type = 0x10,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800708 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700709 usb_token_valid),
710 },
711 {
712 .data_type = QMI_UNSIGNED_4_BYTE,
713 .elem_len = 1,
714 .elem_size = sizeof(uint32_t),
715 .is_array = NO_ARRAY,
716 .tlv_type = 0x10,
717 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
718 usb_token),
719 },
720 {
721 .data_type = QMI_OPT_FLAG,
722 .elem_len = 1,
723 .elem_size = sizeof(uint8_t),
724 .is_array = NO_ARRAY,
725 .tlv_type = 0x11,
726 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
727 std_as_opr_intf_desc_valid),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800728 },
729 {
730 .data_type = QMI_STRUCT,
731 .elem_len = 1,
732 .elem_size = sizeof(struct usb_interface_descriptor_v01),
733 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700734 .tlv_type = 0x11,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800735 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
736 std_as_opr_intf_desc),
737 .ei_array = usb_interface_descriptor_v01_ei,
738 },
739 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700740 .data_type = QMI_OPT_FLAG,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800741 .elem_len = 1,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700742 .elem_size = sizeof(uint8_t),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800743 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700744 .tlv_type = 0x12,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800745 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700746 std_as_data_ep_desc_valid),
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800747 },
748 {
749 .data_type = QMI_STRUCT,
750 .elem_len = 1,
751 .elem_size = sizeof(struct usb_endpoint_descriptor_v01),
752 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700753 .tlv_type = 0x12,
754 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
755 std_as_data_ep_desc),
756 .ei_array = usb_endpoint_descriptor_v01_ei,
757 },
758 {
759 .data_type = QMI_OPT_FLAG,
760 .elem_len = 1,
761 .elem_size = sizeof(uint8_t),
762 .is_array = NO_ARRAY,
763 .tlv_type = 0x13,
764 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
765 std_as_sync_ep_desc_valid),
766 },
767 {
768 .data_type = QMI_STRUCT,
769 .elem_len = 1,
770 .elem_size = sizeof(struct usb_endpoint_descriptor_v01),
771 .is_array = NO_ARRAY,
772 .tlv_type = 0x13,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800773 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
774 std_as_sync_ep_desc),
775 .ei_array = usb_endpoint_descriptor_v01_ei,
776 },
777 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700778 .data_type = QMI_OPT_FLAG,
779 .elem_len = 1,
780 .elem_size = sizeof(uint8_t),
781 .is_array = NO_ARRAY,
782 .tlv_type = 0x14,
783 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
784 usb_audio_spec_revision_valid),
785 },
786 {
787 .data_type = QMI_UNSIGNED_2_BYTE,
788 .elem_len = 1,
789 .elem_size = sizeof(uint16_t),
790 .is_array = NO_ARRAY,
791 .tlv_type = 0x14,
792 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
793 usb_audio_spec_revision),
794 },
795 {
796 .data_type = QMI_OPT_FLAG,
797 .elem_len = 1,
798 .elem_size = sizeof(uint8_t),
799 .is_array = NO_ARRAY,
800 .tlv_type = 0x15,
801 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
802 data_path_delay_valid),
803 },
804 {
805 .data_type = QMI_UNSIGNED_1_BYTE,
806 .elem_len = 1,
807 .elem_size = sizeof(uint8_t),
808 .is_array = NO_ARRAY,
809 .tlv_type = 0x15,
810 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
811 data_path_delay),
812 },
813 {
814 .data_type = QMI_OPT_FLAG,
815 .elem_len = 1,
816 .elem_size = sizeof(uint8_t),
817 .is_array = NO_ARRAY,
818 .tlv_type = 0x16,
819 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
820 usb_audio_subslot_size_valid),
821 },
822 {
823 .data_type = QMI_UNSIGNED_1_BYTE,
824 .elem_len = 1,
825 .elem_size = sizeof(uint8_t),
826 .is_array = NO_ARRAY,
827 .tlv_type = 0x16,
828 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
829 usb_audio_subslot_size),
830 },
831 {
832 .data_type = QMI_OPT_FLAG,
833 .elem_len = 1,
834 .elem_size = sizeof(uint8_t),
835 .is_array = NO_ARRAY,
836 .tlv_type = 0x17,
837 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
838 xhci_mem_info_valid),
839 },
840 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800841 .data_type = QMI_STRUCT,
842 .elem_len = 1,
843 .elem_size = sizeof(struct apps_mem_info_v01),
844 .is_array = NO_ARRAY,
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700845 .tlv_type = 0x17,
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800846 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
847 xhci_mem_info),
848 .ei_array = apps_mem_info_v01_ei,
849 },
850 {
Hemant Kumaraa2fa3c2016-07-18 16:26:48 -0700851 .data_type = QMI_OPT_FLAG,
852 .elem_len = 1,
853 .elem_size = sizeof(uint8_t),
854 .is_array = NO_ARRAY,
855 .tlv_type = 0x18,
856 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
857 interrupter_num_valid),
858 },
859 {
860 .data_type = QMI_UNSIGNED_1_BYTE,
861 .elem_len = 1,
862 .elem_size = sizeof(uint8_t),
863 .is_array = NO_ARRAY,
864 .tlv_type = 0x18,
865 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
866 interrupter_num),
867 },
868 {
Hemant Kumarc59cc942017-10-06 11:25:25 -0700869 .data_type = QMI_OPT_FLAG,
870 .elem_len = 1,
871 .elem_size = sizeof(uint8_t),
872 .is_array = NO_ARRAY,
873 .tlv_type = 0x19,
874 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
875 controller_num_valid),
876 },
877 {
878 .data_type = QMI_UNSIGNED_1_BYTE,
879 .elem_len = 1,
880 .elem_size = sizeof(uint8_t),
881 .is_array = NO_ARRAY,
882 .tlv_type = 0x19,
883 .offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
884 controller_num),
885 },
886 {
Hemant Kumar0ef9fbb2016-01-28 11:41:42 -0800887 .data_type = QMI_EOTI,
888 .is_array = NO_ARRAY,
889 .is_array = QMI_COMMON_TLV_TYPE,
890 },
891};