Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/usb/qcom/usb_audio_qmi_v01.c
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
#include <linux/soc/qcom/qmi.h>
7
8
#include "usb_audio_qmi_v01.h"
9
10
static const struct qmi_elem_info mem_info_v01_ei[] = {
11
{
12
.data_type = QMI_UNSIGNED_8_BYTE,
13
.elem_len = 1,
14
.elem_size = sizeof(u64),
15
.array_type = NO_ARRAY,
16
.tlv_type = 0,
17
.offset = offsetof(struct mem_info_v01, iova),
18
},
19
{
20
.data_type = QMI_UNSIGNED_8_BYTE,
21
.elem_len = 1,
22
.elem_size = sizeof(u64),
23
.array_type = NO_ARRAY,
24
.tlv_type = 0,
25
.offset = offsetof(struct mem_info_v01, dma),
26
},
27
{
28
.data_type = QMI_UNSIGNED_4_BYTE,
29
.elem_len = 1,
30
.elem_size = sizeof(u32),
31
.array_type = NO_ARRAY,
32
.tlv_type = 0,
33
.offset = offsetof(struct mem_info_v01, size),
34
},
35
{
36
.data_type = QMI_EOTI,
37
.array_type = NO_ARRAY,
38
.tlv_type = QMI_COMMON_TLV_TYPE,
39
},
40
};
41
42
static const struct qmi_elem_info apps_mem_info_v01_ei[] = {
43
{
44
.data_type = QMI_STRUCT,
45
.elem_len = 1,
46
.elem_size = sizeof(struct mem_info_v01),
47
.array_type = NO_ARRAY,
48
.tlv_type = 0,
49
.offset = offsetof(struct apps_mem_info_v01, evt_ring),
50
.ei_array = mem_info_v01_ei,
51
},
52
{
53
.data_type = QMI_STRUCT,
54
.elem_len = 1,
55
.elem_size = sizeof(struct mem_info_v01),
56
.array_type = NO_ARRAY,
57
.tlv_type = 0,
58
.offset = offsetof(struct apps_mem_info_v01, tr_data),
59
.ei_array = mem_info_v01_ei,
60
},
61
{
62
.data_type = QMI_STRUCT,
63
.elem_len = 1,
64
.elem_size = sizeof(struct mem_info_v01),
65
.array_type = NO_ARRAY,
66
.tlv_type = 0,
67
.offset = offsetof(struct apps_mem_info_v01, tr_sync),
68
.ei_array = mem_info_v01_ei,
69
},
70
{
71
.data_type = QMI_STRUCT,
72
.elem_len = 1,
73
.elem_size = sizeof(struct mem_info_v01),
74
.array_type = NO_ARRAY,
75
.tlv_type = 0,
76
.offset = offsetof(struct apps_mem_info_v01, xfer_buff),
77
.ei_array = mem_info_v01_ei,
78
},
79
{
80
.data_type = QMI_STRUCT,
81
.elem_len = 1,
82
.elem_size = sizeof(struct mem_info_v01),
83
.array_type = NO_ARRAY,
84
.tlv_type = 0,
85
.offset = offsetof(struct apps_mem_info_v01, dcba),
86
.ei_array = mem_info_v01_ei,
87
},
88
{
89
.data_type = QMI_EOTI,
90
.array_type = NO_ARRAY,
91
.tlv_type = QMI_COMMON_TLV_TYPE,
92
},
93
};
94
95
static const struct qmi_elem_info usb_endpoint_descriptor_v01_ei[] = {
96
{
97
.data_type = QMI_UNSIGNED_1_BYTE,
98
.elem_len = 1,
99
.elem_size = sizeof(u8),
100
.array_type = NO_ARRAY,
101
.tlv_type = 0,
102
.offset = offsetof(struct usb_endpoint_descriptor_v01,
103
bLength),
104
},
105
{
106
.data_type = QMI_UNSIGNED_1_BYTE,
107
.elem_len = 1,
108
.elem_size = sizeof(u8),
109
.array_type = NO_ARRAY,
110
.tlv_type = 0,
111
.offset = offsetof(struct usb_endpoint_descriptor_v01,
112
bDescriptorType),
113
},
114
{
115
.data_type = QMI_UNSIGNED_1_BYTE,
116
.elem_len = 1,
117
.elem_size = sizeof(u8),
118
.array_type = NO_ARRAY,
119
.tlv_type = 0,
120
.offset = offsetof(struct usb_endpoint_descriptor_v01,
121
bEndpointAddress),
122
},
123
{
124
.data_type = QMI_UNSIGNED_1_BYTE,
125
.elem_len = 1,
126
.elem_size = sizeof(u8),
127
.array_type = NO_ARRAY,
128
.tlv_type = 0,
129
.offset = offsetof(struct usb_endpoint_descriptor_v01,
130
bmAttributes),
131
},
132
{
133
.data_type = QMI_UNSIGNED_2_BYTE,
134
.elem_len = 1,
135
.elem_size = sizeof(u16),
136
.array_type = NO_ARRAY,
137
.tlv_type = 0,
138
.offset = offsetof(struct usb_endpoint_descriptor_v01,
139
wMaxPacketSize),
140
},
141
{
142
.data_type = QMI_UNSIGNED_1_BYTE,
143
.elem_len = 1,
144
.elem_size = sizeof(u8),
145
.array_type = NO_ARRAY,
146
.tlv_type = 0,
147
.offset = offsetof(struct usb_endpoint_descriptor_v01,
148
bInterval),
149
},
150
{
151
.data_type = QMI_UNSIGNED_1_BYTE,
152
.elem_len = 1,
153
.elem_size = sizeof(u8),
154
.array_type = NO_ARRAY,
155
.tlv_type = 0,
156
.offset = offsetof(struct usb_endpoint_descriptor_v01,
157
bRefresh),
158
},
159
{
160
.data_type = QMI_UNSIGNED_1_BYTE,
161
.elem_len = 1,
162
.elem_size = sizeof(u8),
163
.array_type = NO_ARRAY,
164
.tlv_type = 0,
165
.offset = offsetof(struct usb_endpoint_descriptor_v01,
166
bSynchAddress),
167
},
168
{
169
.data_type = QMI_EOTI,
170
.array_type = NO_ARRAY,
171
.tlv_type = QMI_COMMON_TLV_TYPE,
172
},
173
};
174
175
static const struct qmi_elem_info usb_interface_descriptor_v01_ei[] = {
176
{
177
.data_type = QMI_UNSIGNED_1_BYTE,
178
.elem_len = 1,
179
.elem_size = sizeof(u8),
180
.array_type = NO_ARRAY,
181
.tlv_type = 0,
182
.offset = offsetof(struct usb_interface_descriptor_v01,
183
bLength),
184
},
185
{
186
.data_type = QMI_UNSIGNED_1_BYTE,
187
.elem_len = 1,
188
.elem_size = sizeof(u8),
189
.array_type = NO_ARRAY,
190
.tlv_type = 0,
191
.offset = offsetof(struct usb_interface_descriptor_v01,
192
bDescriptorType),
193
},
194
{
195
.data_type = QMI_UNSIGNED_1_BYTE,
196
.elem_len = 1,
197
.elem_size = sizeof(u8),
198
.array_type = NO_ARRAY,
199
.tlv_type = 0,
200
.offset = offsetof(struct usb_interface_descriptor_v01,
201
bInterfaceNumber),
202
},
203
{
204
.data_type = QMI_UNSIGNED_1_BYTE,
205
.elem_len = 1,
206
.elem_size = sizeof(u8),
207
.array_type = NO_ARRAY,
208
.tlv_type = 0,
209
.offset = offsetof(struct usb_interface_descriptor_v01,
210
bAlternateSetting),
211
},
212
{
213
.data_type = QMI_UNSIGNED_1_BYTE,
214
.elem_len = 1,
215
.elem_size = sizeof(u8),
216
.array_type = NO_ARRAY,
217
.tlv_type = 0,
218
.offset = offsetof(struct usb_interface_descriptor_v01,
219
bNumEndpoints),
220
},
221
{
222
.data_type = QMI_UNSIGNED_1_BYTE,
223
.elem_len = 1,
224
.elem_size = sizeof(u8),
225
.array_type = NO_ARRAY,
226
.tlv_type = 0,
227
.offset = offsetof(struct usb_interface_descriptor_v01,
228
bInterfaceClass),
229
},
230
{
231
.data_type = QMI_UNSIGNED_1_BYTE,
232
.elem_len = 1,
233
.elem_size = sizeof(u8),
234
.array_type = NO_ARRAY,
235
.tlv_type = 0,
236
.offset = offsetof(struct usb_interface_descriptor_v01,
237
bInterfaceSubClass),
238
},
239
{
240
.data_type = QMI_UNSIGNED_1_BYTE,
241
.elem_len = 1,
242
.elem_size = sizeof(u8),
243
.array_type = NO_ARRAY,
244
.tlv_type = 0,
245
.offset = offsetof(struct usb_interface_descriptor_v01,
246
bInterfaceProtocol),
247
},
248
{
249
.data_type = QMI_UNSIGNED_1_BYTE,
250
.elem_len = 1,
251
.elem_size = sizeof(u8),
252
.array_type = NO_ARRAY,
253
.tlv_type = 0,
254
.offset = offsetof(struct usb_interface_descriptor_v01,
255
iInterface),
256
},
257
{
258
.data_type = QMI_EOTI,
259
.array_type = NO_ARRAY,
260
.tlv_type = QMI_COMMON_TLV_TYPE,
261
},
262
};
263
264
const struct qmi_elem_info qmi_uaudio_stream_req_msg_v01_ei[] = {
265
{
266
.data_type = QMI_UNSIGNED_1_BYTE,
267
.elem_len = 1,
268
.elem_size = sizeof(u8),
269
.array_type = NO_ARRAY,
270
.tlv_type = 0x01,
271
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
272
enable),
273
},
274
{
275
.data_type = QMI_UNSIGNED_4_BYTE,
276
.elem_len = 1,
277
.elem_size = sizeof(u32),
278
.array_type = NO_ARRAY,
279
.tlv_type = 0x02,
280
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
281
usb_token),
282
},
283
{
284
.data_type = QMI_OPT_FLAG,
285
.elem_len = 1,
286
.elem_size = sizeof(u8),
287
.array_type = NO_ARRAY,
288
.tlv_type = 0x10,
289
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
290
audio_format_valid),
291
},
292
{
293
.data_type = QMI_UNSIGNED_4_BYTE,
294
.elem_len = 1,
295
.elem_size = sizeof(u32),
296
.array_type = NO_ARRAY,
297
.tlv_type = 0x10,
298
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
299
audio_format),
300
},
301
{
302
.data_type = QMI_OPT_FLAG,
303
.elem_len = 1,
304
.elem_size = sizeof(u8),
305
.array_type = NO_ARRAY,
306
.tlv_type = 0x11,
307
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
308
number_of_ch_valid),
309
},
310
{
311
.data_type = QMI_UNSIGNED_4_BYTE,
312
.elem_len = 1,
313
.elem_size = sizeof(u32),
314
.array_type = NO_ARRAY,
315
.tlv_type = 0x11,
316
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
317
number_of_ch),
318
},
319
{
320
.data_type = QMI_OPT_FLAG,
321
.elem_len = 1,
322
.elem_size = sizeof(u8),
323
.array_type = NO_ARRAY,
324
.tlv_type = 0x12,
325
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
326
bit_rate_valid),
327
},
328
{
329
.data_type = QMI_UNSIGNED_4_BYTE,
330
.elem_len = 1,
331
.elem_size = sizeof(u32),
332
.array_type = NO_ARRAY,
333
.tlv_type = 0x12,
334
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
335
bit_rate),
336
},
337
{
338
.data_type = QMI_OPT_FLAG,
339
.elem_len = 1,
340
.elem_size = sizeof(u8),
341
.array_type = NO_ARRAY,
342
.tlv_type = 0x13,
343
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
344
xfer_buff_size_valid),
345
},
346
{
347
.data_type = QMI_UNSIGNED_4_BYTE,
348
.elem_len = 1,
349
.elem_size = sizeof(u32),
350
.array_type = NO_ARRAY,
351
.tlv_type = 0x13,
352
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
353
xfer_buff_size),
354
},
355
{
356
.data_type = QMI_OPT_FLAG,
357
.elem_len = 1,
358
.elem_size = sizeof(u8),
359
.array_type = NO_ARRAY,
360
.tlv_type = 0x14,
361
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
362
service_interval_valid),
363
},
364
{
365
.data_type = QMI_UNSIGNED_4_BYTE,
366
.elem_len = 1,
367
.elem_size = sizeof(u32),
368
.array_type = NO_ARRAY,
369
.tlv_type = 0x14,
370
.offset = offsetof(struct qmi_uaudio_stream_req_msg_v01,
371
service_interval),
372
},
373
{
374
.data_type = QMI_EOTI,
375
.array_type = NO_ARRAY,
376
.tlv_type = QMI_COMMON_TLV_TYPE,
377
},
378
};
379
380
const struct qmi_elem_info qmi_uaudio_stream_resp_msg_v01_ei[] = {
381
{
382
.data_type = QMI_STRUCT,
383
.elem_len = 1,
384
.elem_size = sizeof(struct qmi_response_type_v01),
385
.array_type = NO_ARRAY,
386
.tlv_type = 0x02,
387
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
388
resp),
389
.ei_array = qmi_response_type_v01_ei,
390
},
391
{
392
.data_type = QMI_OPT_FLAG,
393
.elem_len = 1,
394
.elem_size = sizeof(u8),
395
.array_type = NO_ARRAY,
396
.tlv_type = 0x10,
397
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
398
status_valid),
399
},
400
{
401
.data_type = QMI_SIGNED_4_BYTE_ENUM,
402
.elem_len = 1,
403
.elem_size = sizeof(enum usb_qmi_audio_stream_status_enum_v01),
404
.array_type = NO_ARRAY,
405
.tlv_type = 0x10,
406
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
407
status),
408
},
409
{
410
.data_type = QMI_OPT_FLAG,
411
.elem_len = 1,
412
.elem_size = sizeof(u8),
413
.array_type = NO_ARRAY,
414
.tlv_type = 0x11,
415
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
416
internal_status_valid),
417
},
418
{
419
.data_type = QMI_UNSIGNED_4_BYTE,
420
.elem_len = 1,
421
.elem_size = sizeof(u32),
422
.array_type = NO_ARRAY,
423
.tlv_type = 0x11,
424
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
425
internal_status),
426
},
427
{
428
.data_type = QMI_OPT_FLAG,
429
.elem_len = 1,
430
.elem_size = sizeof(u8),
431
.array_type = NO_ARRAY,
432
.tlv_type = 0x12,
433
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
434
slot_id_valid),
435
},
436
{
437
.data_type = QMI_UNSIGNED_4_BYTE,
438
.elem_len = 1,
439
.elem_size = sizeof(u32),
440
.array_type = NO_ARRAY,
441
.tlv_type = 0x12,
442
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
443
slot_id),
444
},
445
{
446
.data_type = QMI_OPT_FLAG,
447
.elem_len = 1,
448
.elem_size = sizeof(u8),
449
.array_type = NO_ARRAY,
450
.tlv_type = 0x13,
451
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
452
usb_token_valid),
453
},
454
{
455
.data_type = QMI_UNSIGNED_4_BYTE,
456
.elem_len = 1,
457
.elem_size = sizeof(u32),
458
.array_type = NO_ARRAY,
459
.tlv_type = 0x13,
460
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
461
usb_token),
462
},
463
{
464
.data_type = QMI_OPT_FLAG,
465
.elem_len = 1,
466
.elem_size = sizeof(u8),
467
.array_type = NO_ARRAY,
468
.tlv_type = 0x14,
469
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
470
std_as_opr_intf_desc_valid),
471
},
472
{
473
.data_type = QMI_STRUCT,
474
.elem_len = 1,
475
.elem_size = sizeof(struct usb_interface_descriptor_v01),
476
.array_type = NO_ARRAY,
477
.tlv_type = 0x14,
478
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
479
std_as_opr_intf_desc),
480
.ei_array = usb_interface_descriptor_v01_ei,
481
},
482
{
483
.data_type = QMI_OPT_FLAG,
484
.elem_len = 1,
485
.elem_size = sizeof(u8),
486
.array_type = NO_ARRAY,
487
.tlv_type = 0x15,
488
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
489
std_as_data_ep_desc_valid),
490
},
491
{
492
.data_type = QMI_STRUCT,
493
.elem_len = 1,
494
.elem_size = sizeof(struct usb_endpoint_descriptor_v01),
495
.array_type = NO_ARRAY,
496
.tlv_type = 0x15,
497
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
498
std_as_data_ep_desc),
499
.ei_array = usb_endpoint_descriptor_v01_ei,
500
},
501
{
502
.data_type = QMI_OPT_FLAG,
503
.elem_len = 1,
504
.elem_size = sizeof(u8),
505
.array_type = NO_ARRAY,
506
.tlv_type = 0x16,
507
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
508
std_as_sync_ep_desc_valid),
509
},
510
{
511
.data_type = QMI_STRUCT,
512
.elem_len = 1,
513
.elem_size = sizeof(struct usb_endpoint_descriptor_v01),
514
.array_type = NO_ARRAY,
515
.tlv_type = 0x16,
516
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
517
std_as_sync_ep_desc),
518
.ei_array = usb_endpoint_descriptor_v01_ei,
519
},
520
{
521
.data_type = QMI_OPT_FLAG,
522
.elem_len = 1,
523
.elem_size = sizeof(u8),
524
.array_type = NO_ARRAY,
525
.tlv_type = 0x17,
526
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
527
usb_audio_spec_revision_valid),
528
},
529
{
530
.data_type = QMI_UNSIGNED_2_BYTE,
531
.elem_len = 1,
532
.elem_size = sizeof(u16),
533
.array_type = NO_ARRAY,
534
.tlv_type = 0x17,
535
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
536
usb_audio_spec_revision),
537
},
538
{
539
.data_type = QMI_OPT_FLAG,
540
.elem_len = 1,
541
.elem_size = sizeof(u8),
542
.array_type = NO_ARRAY,
543
.tlv_type = 0x18,
544
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
545
data_path_delay_valid),
546
},
547
{
548
.data_type = QMI_UNSIGNED_1_BYTE,
549
.elem_len = 1,
550
.elem_size = sizeof(u8),
551
.array_type = NO_ARRAY,
552
.tlv_type = 0x18,
553
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
554
data_path_delay),
555
},
556
{
557
.data_type = QMI_OPT_FLAG,
558
.elem_len = 1,
559
.elem_size = sizeof(u8),
560
.array_type = NO_ARRAY,
561
.tlv_type = 0x19,
562
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
563
usb_audio_subslot_size_valid),
564
},
565
{
566
.data_type = QMI_UNSIGNED_1_BYTE,
567
.elem_len = 1,
568
.elem_size = sizeof(u8),
569
.array_type = NO_ARRAY,
570
.tlv_type = 0x19,
571
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
572
usb_audio_subslot_size),
573
},
574
{
575
.data_type = QMI_OPT_FLAG,
576
.elem_len = 1,
577
.elem_size = sizeof(u8),
578
.array_type = NO_ARRAY,
579
.tlv_type = 0x1A,
580
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
581
xhci_mem_info_valid),
582
},
583
{
584
.data_type = QMI_STRUCT,
585
.elem_len = 1,
586
.elem_size = sizeof(struct apps_mem_info_v01),
587
.array_type = NO_ARRAY,
588
.tlv_type = 0x1A,
589
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
590
xhci_mem_info),
591
.ei_array = apps_mem_info_v01_ei,
592
},
593
{
594
.data_type = QMI_OPT_FLAG,
595
.elem_len = 1,
596
.elem_size = sizeof(u8),
597
.array_type = NO_ARRAY,
598
.tlv_type = 0x1B,
599
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
600
interrupter_num_valid),
601
},
602
{
603
.data_type = QMI_UNSIGNED_1_BYTE,
604
.elem_len = 1,
605
.elem_size = sizeof(u8),
606
.array_type = NO_ARRAY,
607
.tlv_type = 0x1B,
608
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
609
interrupter_num),
610
},
611
{
612
.data_type = QMI_OPT_FLAG,
613
.elem_len = 1,
614
.elem_size = sizeof(u8),
615
.array_type = NO_ARRAY,
616
.tlv_type = 0x1C,
617
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
618
speed_info_valid),
619
},
620
{
621
.data_type = QMI_SIGNED_4_BYTE_ENUM,
622
.elem_len = 1,
623
.elem_size = sizeof(enum usb_qmi_audio_device_speed_enum_v01),
624
.array_type = NO_ARRAY,
625
.tlv_type = 0x1C,
626
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
627
speed_info),
628
},
629
{
630
.data_type = QMI_OPT_FLAG,
631
.elem_len = 1,
632
.elem_size = sizeof(u8),
633
.array_type = NO_ARRAY,
634
.tlv_type = 0x1D,
635
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
636
controller_num_valid),
637
},
638
{
639
.data_type = QMI_UNSIGNED_1_BYTE,
640
.elem_len = 1,
641
.elem_size = sizeof(u8),
642
.array_type = NO_ARRAY,
643
.tlv_type = 0x1D,
644
.offset = offsetof(struct qmi_uaudio_stream_resp_msg_v01,
645
controller_num),
646
},
647
{
648
.data_type = QMI_EOTI,
649
.array_type = NO_ARRAY,
650
.tlv_type = QMI_COMMON_TLV_TYPE,
651
},
652
};
653
654
const struct qmi_elem_info qmi_uaudio_stream_ind_msg_v01_ei[] = {
655
{
656
.data_type = QMI_SIGNED_4_BYTE_ENUM,
657
.elem_len = 1,
658
.elem_size = sizeof(
659
enum usb_qmi_audio_device_indication_enum_v01),
660
.array_type = NO_ARRAY,
661
.tlv_type = 0x01,
662
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
663
dev_event),
664
},
665
{
666
.data_type = QMI_UNSIGNED_4_BYTE,
667
.elem_len = 1,
668
.elem_size = sizeof(u32),
669
.array_type = NO_ARRAY,
670
.tlv_type = 0x02,
671
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
672
slot_id),
673
},
674
{
675
.data_type = QMI_OPT_FLAG,
676
.elem_len = 1,
677
.elem_size = sizeof(u8),
678
.array_type = NO_ARRAY,
679
.tlv_type = 0x10,
680
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
681
usb_token_valid),
682
},
683
{
684
.data_type = QMI_UNSIGNED_4_BYTE,
685
.elem_len = 1,
686
.elem_size = sizeof(u32),
687
.array_type = NO_ARRAY,
688
.tlv_type = 0x10,
689
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
690
usb_token),
691
},
692
{
693
.data_type = QMI_OPT_FLAG,
694
.elem_len = 1,
695
.elem_size = sizeof(u8),
696
.array_type = NO_ARRAY,
697
.tlv_type = 0x11,
698
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
699
std_as_opr_intf_desc_valid),
700
},
701
{
702
.data_type = QMI_STRUCT,
703
.elem_len = 1,
704
.elem_size = sizeof(struct usb_interface_descriptor_v01),
705
.array_type = NO_ARRAY,
706
.tlv_type = 0x11,
707
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
708
std_as_opr_intf_desc),
709
.ei_array = usb_interface_descriptor_v01_ei,
710
},
711
{
712
.data_type = QMI_OPT_FLAG,
713
.elem_len = 1,
714
.elem_size = sizeof(u8),
715
.array_type = NO_ARRAY,
716
.tlv_type = 0x12,
717
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
718
std_as_data_ep_desc_valid),
719
},
720
{
721
.data_type = QMI_STRUCT,
722
.elem_len = 1,
723
.elem_size = sizeof(struct usb_endpoint_descriptor_v01),
724
.array_type = NO_ARRAY,
725
.tlv_type = 0x12,
726
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
727
std_as_data_ep_desc),
728
.ei_array = usb_endpoint_descriptor_v01_ei,
729
},
730
{
731
.data_type = QMI_OPT_FLAG,
732
.elem_len = 1,
733
.elem_size = sizeof(u8),
734
.array_type = NO_ARRAY,
735
.tlv_type = 0x13,
736
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
737
std_as_sync_ep_desc_valid),
738
},
739
{
740
.data_type = QMI_STRUCT,
741
.elem_len = 1,
742
.elem_size = sizeof(struct usb_endpoint_descriptor_v01),
743
.array_type = NO_ARRAY,
744
.tlv_type = 0x13,
745
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
746
std_as_sync_ep_desc),
747
.ei_array = usb_endpoint_descriptor_v01_ei,
748
},
749
{
750
.data_type = QMI_OPT_FLAG,
751
.elem_len = 1,
752
.elem_size = sizeof(u8),
753
.array_type = NO_ARRAY,
754
.tlv_type = 0x14,
755
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
756
usb_audio_spec_revision_valid),
757
},
758
{
759
.data_type = QMI_UNSIGNED_2_BYTE,
760
.elem_len = 1,
761
.elem_size = sizeof(u16),
762
.array_type = NO_ARRAY,
763
.tlv_type = 0x14,
764
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
765
usb_audio_spec_revision),
766
},
767
{
768
.data_type = QMI_OPT_FLAG,
769
.elem_len = 1,
770
.elem_size = sizeof(u8),
771
.array_type = NO_ARRAY,
772
.tlv_type = 0x15,
773
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
774
data_path_delay_valid),
775
},
776
{
777
.data_type = QMI_UNSIGNED_1_BYTE,
778
.elem_len = 1,
779
.elem_size = sizeof(u8),
780
.array_type = NO_ARRAY,
781
.tlv_type = 0x15,
782
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
783
data_path_delay),
784
},
785
{
786
.data_type = QMI_OPT_FLAG,
787
.elem_len = 1,
788
.elem_size = sizeof(u8),
789
.array_type = NO_ARRAY,
790
.tlv_type = 0x16,
791
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
792
usb_audio_subslot_size_valid),
793
},
794
{
795
.data_type = QMI_UNSIGNED_1_BYTE,
796
.elem_len = 1,
797
.elem_size = sizeof(u8),
798
.array_type = NO_ARRAY,
799
.tlv_type = 0x16,
800
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
801
usb_audio_subslot_size),
802
},
803
{
804
.data_type = QMI_OPT_FLAG,
805
.elem_len = 1,
806
.elem_size = sizeof(u8),
807
.array_type = NO_ARRAY,
808
.tlv_type = 0x17,
809
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
810
xhci_mem_info_valid),
811
},
812
{
813
.data_type = QMI_STRUCT,
814
.elem_len = 1,
815
.elem_size = sizeof(struct apps_mem_info_v01),
816
.array_type = NO_ARRAY,
817
.tlv_type = 0x17,
818
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
819
xhci_mem_info),
820
.ei_array = apps_mem_info_v01_ei,
821
},
822
{
823
.data_type = QMI_OPT_FLAG,
824
.elem_len = 1,
825
.elem_size = sizeof(u8),
826
.array_type = NO_ARRAY,
827
.tlv_type = 0x18,
828
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
829
interrupter_num_valid),
830
},
831
{
832
.data_type = QMI_UNSIGNED_1_BYTE,
833
.elem_len = 1,
834
.elem_size = sizeof(u8),
835
.array_type = NO_ARRAY,
836
.tlv_type = 0x18,
837
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
838
interrupter_num),
839
},
840
{
841
.data_type = QMI_OPT_FLAG,
842
.elem_len = 1,
843
.elem_size = sizeof(u8),
844
.array_type = NO_ARRAY,
845
.tlv_type = 0x19,
846
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
847
controller_num_valid),
848
},
849
{
850
.data_type = QMI_UNSIGNED_1_BYTE,
851
.elem_len = 1,
852
.elem_size = sizeof(u8),
853
.array_type = NO_ARRAY,
854
.tlv_type = 0x19,
855
.offset = offsetof(struct qmi_uaudio_stream_ind_msg_v01,
856
controller_num),
857
},
858
{
859
.data_type = QMI_EOTI,
860
.array_type = NO_ARRAY,
861
.tlv_type = QMI_COMMON_TLV_TYPE,
862
},
863
};
864
865