1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. */
3 /* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. */
4
5
6 #include "wlan_firmware_service_v01.h"
7 #include <linux/module.h>
8 #include <linux/of.h>
9
10 static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
11 {
12 .data_type = QMI_UNSIGNED_4_BYTE,
13 .elem_len = 1,
14 .elem_size = sizeof(u32),
15 .array_type = NO_ARRAY,
16 .tlv_type = 0,
17 .offset = offsetof(struct
18 wlfw_ce_tgt_pipe_cfg_s_v01,
19 pipe_num),
20 },
21 {
22 .data_type = QMI_SIGNED_4_BYTE_ENUM,
23 .elem_len = 1,
24 .elem_size = sizeof(enum wlfw_pipedir_enum_v01),
25 .array_type = NO_ARRAY,
26 .tlv_type = 0,
27 .offset = offsetof(struct
28 wlfw_ce_tgt_pipe_cfg_s_v01,
29 pipe_dir),
30 },
31 {
32 .data_type = QMI_UNSIGNED_4_BYTE,
33 .elem_len = 1,
34 .elem_size = sizeof(u32),
35 .array_type = NO_ARRAY,
36 .tlv_type = 0,
37 .offset = offsetof(struct
38 wlfw_ce_tgt_pipe_cfg_s_v01,
39 nentries),
40 },
41 {
42 .data_type = QMI_UNSIGNED_4_BYTE,
43 .elem_len = 1,
44 .elem_size = sizeof(u32),
45 .array_type = NO_ARRAY,
46 .tlv_type = 0,
47 .offset = offsetof(struct
48 wlfw_ce_tgt_pipe_cfg_s_v01,
49 nbytes_max),
50 },
51 {
52 .data_type = QMI_UNSIGNED_4_BYTE,
53 .elem_len = 1,
54 .elem_size = sizeof(u32),
55 .array_type = NO_ARRAY,
56 .tlv_type = 0,
57 .offset = offsetof(struct
58 wlfw_ce_tgt_pipe_cfg_s_v01,
59 flags),
60 },
61 {
62 .data_type = QMI_EOTI,
63 .array_type = NO_ARRAY,
64 .tlv_type = QMI_COMMON_TLV_TYPE,
65 },
66 };
67
68 static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
69 {
70 .data_type = QMI_UNSIGNED_4_BYTE,
71 .elem_len = 1,
72 .elem_size = sizeof(u32),
73 .array_type = NO_ARRAY,
74 .tlv_type = 0,
75 .offset = offsetof(struct
76 wlfw_ce_svc_pipe_cfg_s_v01,
77 service_id),
78 },
79 {
80 .data_type = QMI_SIGNED_4_BYTE_ENUM,
81 .elem_len = 1,
82 .elem_size = sizeof(enum wlfw_pipedir_enum_v01),
83 .array_type = NO_ARRAY,
84 .tlv_type = 0,
85 .offset = offsetof(struct
86 wlfw_ce_svc_pipe_cfg_s_v01,
87 pipe_dir),
88 },
89 {
90 .data_type = QMI_UNSIGNED_4_BYTE,
91 .elem_len = 1,
92 .elem_size = sizeof(u32),
93 .array_type = NO_ARRAY,
94 .tlv_type = 0,
95 .offset = offsetof(struct
96 wlfw_ce_svc_pipe_cfg_s_v01,
97 pipe_num),
98 },
99 {
100 .data_type = QMI_EOTI,
101 .array_type = NO_ARRAY,
102 .tlv_type = QMI_COMMON_TLV_TYPE,
103 },
104 };
105
106 static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
107 {
108 .data_type = QMI_UNSIGNED_2_BYTE,
109 .elem_len = 1,
110 .elem_size = sizeof(u16),
111 .array_type = NO_ARRAY,
112 .tlv_type = 0,
113 .offset = offsetof(struct
114 wlfw_shadow_reg_cfg_s_v01,
115 id),
116 },
117 {
118 .data_type = QMI_UNSIGNED_2_BYTE,
119 .elem_len = 1,
120 .elem_size = sizeof(u16),
121 .array_type = NO_ARRAY,
122 .tlv_type = 0,
123 .offset = offsetof(struct
124 wlfw_shadow_reg_cfg_s_v01,
125 offset),
126 },
127 {
128 .data_type = QMI_EOTI,
129 .array_type = NO_ARRAY,
130 .tlv_type = QMI_COMMON_TLV_TYPE,
131 },
132 };
133
134 static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
135 {
136 .data_type = QMI_UNSIGNED_4_BYTE,
137 .elem_len = 1,
138 .elem_size = sizeof(u32),
139 .array_type = NO_ARRAY,
140 .tlv_type = 0,
141 .offset = offsetof(struct
142 wlfw_shadow_reg_v2_cfg_s_v01,
143 addr),
144 },
145 {
146 .data_type = QMI_EOTI,
147 .array_type = NO_ARRAY,
148 .tlv_type = QMI_COMMON_TLV_TYPE,
149 },
150 };
151
152 static struct qmi_elem_info wlfw_rri_over_ddr_cfg_s_v01_ei[] = {
153 {
154 .data_type = QMI_UNSIGNED_4_BYTE,
155 .elem_len = 1,
156 .elem_size = sizeof(u32),
157 .array_type = NO_ARRAY,
158 .tlv_type = 0,
159 .offset = offsetof(struct
160 wlfw_rri_over_ddr_cfg_s_v01,
161 base_addr_low),
162 },
163 {
164 .data_type = QMI_UNSIGNED_4_BYTE,
165 .elem_len = 1,
166 .elem_size = sizeof(u32),
167 .array_type = NO_ARRAY,
168 .tlv_type = 0,
169 .offset = offsetof(struct
170 wlfw_rri_over_ddr_cfg_s_v01,
171 base_addr_high),
172 },
173 {
174 .data_type = QMI_EOTI,
175 .array_type = NO_ARRAY,
176 .tlv_type = QMI_COMMON_TLV_TYPE,
177 },
178 };
179
180 static struct qmi_elem_info wlfw_msi_cfg_s_v01_ei[] = {
181 {
182 .data_type = QMI_UNSIGNED_2_BYTE,
183 .elem_len = 1,
184 .elem_size = sizeof(u16),
185 .array_type = NO_ARRAY,
186 .tlv_type = 0,
187 .offset = offsetof(struct
188 wlfw_msi_cfg_s_v01,
189 ce_id),
190 },
191 {
192 .data_type = QMI_UNSIGNED_2_BYTE,
193 .elem_len = 1,
194 .elem_size = sizeof(u16),
195 .array_type = NO_ARRAY,
196 .tlv_type = 0,
197 .offset = offsetof(struct
198 wlfw_msi_cfg_s_v01,
199 msi_vector),
200 },
201 {
202 .data_type = QMI_EOTI,
203 .array_type = NO_ARRAY,
204 .tlv_type = QMI_COMMON_TLV_TYPE,
205 },
206 };
207
208 static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
209 {
210 .data_type = QMI_UNSIGNED_8_BYTE,
211 .elem_len = 1,
212 .elem_size = sizeof(u64),
213 .array_type = NO_ARRAY,
214 .tlv_type = 0,
215 .offset = offsetof(struct
216 wlfw_memory_region_info_s_v01,
217 region_addr),
218 },
219 {
220 .data_type = QMI_UNSIGNED_4_BYTE,
221 .elem_len = 1,
222 .elem_size = sizeof(u32),
223 .array_type = NO_ARRAY,
224 .tlv_type = 0,
225 .offset = offsetof(struct
226 wlfw_memory_region_info_s_v01,
227 size),
228 },
229 {
230 .data_type = QMI_UNSIGNED_1_BYTE,
231 .elem_len = 1,
232 .elem_size = sizeof(u8),
233 .array_type = NO_ARRAY,
234 .tlv_type = 0,
235 .offset = offsetof(struct
236 wlfw_memory_region_info_s_v01,
237 secure_flag),
238 },
239 {
240 .data_type = QMI_EOTI,
241 .array_type = NO_ARRAY,
242 .tlv_type = QMI_COMMON_TLV_TYPE,
243 },
244 };
245
246 static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
247 {
248 .data_type = QMI_UNSIGNED_8_BYTE,
249 .elem_len = 1,
250 .elem_size = sizeof(u64),
251 .array_type = NO_ARRAY,
252 .tlv_type = 0,
253 .offset = offsetof(struct
254 wlfw_mem_cfg_s_v01,
255 offset),
256 },
257 {
258 .data_type = QMI_UNSIGNED_4_BYTE,
259 .elem_len = 1,
260 .elem_size = sizeof(u32),
261 .array_type = NO_ARRAY,
262 .tlv_type = 0,
263 .offset = offsetof(struct
264 wlfw_mem_cfg_s_v01,
265 size),
266 },
267 {
268 .data_type = QMI_UNSIGNED_1_BYTE,
269 .elem_len = 1,
270 .elem_size = sizeof(u8),
271 .array_type = NO_ARRAY,
272 .tlv_type = 0,
273 .offset = offsetof(struct
274 wlfw_mem_cfg_s_v01,
275 secure_flag),
276 },
277 {
278 .data_type = QMI_EOTI,
279 .array_type = NO_ARRAY,
280 .tlv_type = QMI_COMMON_TLV_TYPE,
281 },
282 };
283
284 static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
285 {
286 .data_type = QMI_UNSIGNED_4_BYTE,
287 .elem_len = 1,
288 .elem_size = sizeof(u32),
289 .array_type = NO_ARRAY,
290 .tlv_type = 0,
291 .offset = offsetof(struct
292 wlfw_mem_seg_s_v01,
293 size),
294 },
295 {
296 .data_type = QMI_SIGNED_4_BYTE_ENUM,
297 .elem_len = 1,
298 .elem_size = sizeof(enum wlfw_mem_type_enum_v01),
299 .array_type = NO_ARRAY,
300 .tlv_type = 0,
301 .offset = offsetof(struct
302 wlfw_mem_seg_s_v01,
303 type),
304 },
305 {
306 .data_type = QMI_DATA_LEN,
307 .elem_len = 1,
308 .elem_size = sizeof(u8),
309 .array_type = NO_ARRAY,
310 .tlv_type = 0,
311 .offset = offsetof(struct
312 wlfw_mem_seg_s_v01,
313 mem_cfg_len),
314 },
315 {
316 .data_type = QMI_STRUCT,
317 .elem_len = QMI_WLFW_MAX_NUM_MEM_CFG_V01,
318 .elem_size = sizeof(struct wlfw_mem_cfg_s_v01),
319 .array_type = VAR_LEN_ARRAY,
320 .tlv_type = 0,
321 .offset = offsetof(struct
322 wlfw_mem_seg_s_v01,
323 mem_cfg),
324 .ei_array = wlfw_mem_cfg_s_v01_ei,
325 },
326 {
327 .data_type = QMI_EOTI,
328 .array_type = NO_ARRAY,
329 .tlv_type = QMI_COMMON_TLV_TYPE,
330 },
331 };
332
333 static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
334 {
335 .data_type = QMI_UNSIGNED_8_BYTE,
336 .elem_len = 1,
337 .elem_size = sizeof(u64),
338 .array_type = NO_ARRAY,
339 .tlv_type = 0,
340 .offset = offsetof(struct
341 wlfw_mem_seg_resp_s_v01,
342 addr),
343 },
344 {
345 .data_type = QMI_UNSIGNED_4_BYTE,
346 .elem_len = 1,
347 .elem_size = sizeof(u32),
348 .array_type = NO_ARRAY,
349 .tlv_type = 0,
350 .offset = offsetof(struct
351 wlfw_mem_seg_resp_s_v01,
352 size),
353 },
354 {
355 .data_type = QMI_SIGNED_4_BYTE_ENUM,
356 .elem_len = 1,
357 .elem_size = sizeof(enum wlfw_mem_type_enum_v01),
358 .array_type = NO_ARRAY,
359 .tlv_type = 0,
360 .offset = offsetof(struct
361 wlfw_mem_seg_resp_s_v01,
362 type),
363 },
364 {
365 .data_type = QMI_UNSIGNED_1_BYTE,
366 .elem_len = 1,
367 .elem_size = sizeof(u8),
368 .array_type = NO_ARRAY,
369 .tlv_type = 0,
370 .offset = offsetof(struct
371 wlfw_mem_seg_resp_s_v01,
372 restore),
373 },
374 {
375 .data_type = QMI_EOTI,
376 .array_type = NO_ARRAY,
377 .tlv_type = QMI_COMMON_TLV_TYPE,
378 },
379 };
380
381 static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
382 {
383 .data_type = QMI_UNSIGNED_4_BYTE,
384 .elem_len = 1,
385 .elem_size = sizeof(u32),
386 .array_type = NO_ARRAY,
387 .tlv_type = 0,
388 .offset = offsetof(struct
389 wlfw_rf_chip_info_s_v01,
390 chip_id),
391 },
392 {
393 .data_type = QMI_UNSIGNED_4_BYTE,
394 .elem_len = 1,
395 .elem_size = sizeof(u32),
396 .array_type = NO_ARRAY,
397 .tlv_type = 0,
398 .offset = offsetof(struct
399 wlfw_rf_chip_info_s_v01,
400 chip_family),
401 },
402 {
403 .data_type = QMI_EOTI,
404 .array_type = NO_ARRAY,
405 .tlv_type = QMI_COMMON_TLV_TYPE,
406 },
407 };
408
409 static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
410 {
411 .data_type = QMI_UNSIGNED_4_BYTE,
412 .elem_len = 1,
413 .elem_size = sizeof(u32),
414 .array_type = NO_ARRAY,
415 .tlv_type = 0,
416 .offset = offsetof(struct
417 wlfw_rf_board_info_s_v01,
418 board_id),
419 },
420 {
421 .data_type = QMI_EOTI,
422 .array_type = NO_ARRAY,
423 .tlv_type = QMI_COMMON_TLV_TYPE,
424 },
425 };
426
427 static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
428 {
429 .data_type = QMI_UNSIGNED_4_BYTE,
430 .elem_len = 1,
431 .elem_size = sizeof(u32),
432 .array_type = NO_ARRAY,
433 .tlv_type = 0,
434 .offset = offsetof(struct
435 wlfw_soc_info_s_v01,
436 soc_id),
437 },
438 {
439 .data_type = QMI_EOTI,
440 .array_type = NO_ARRAY,
441 .tlv_type = QMI_COMMON_TLV_TYPE,
442 },
443 };
444
445 static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
446 {
447 .data_type = QMI_UNSIGNED_4_BYTE,
448 .elem_len = 1,
449 .elem_size = sizeof(u32),
450 .array_type = NO_ARRAY,
451 .tlv_type = 0,
452 .offset = offsetof(struct
453 wlfw_fw_version_info_s_v01,
454 fw_version),
455 },
456 {
457 .data_type = QMI_STRING,
458 .elem_len = QMI_WLFW_MAX_TIMESTAMP_LEN_V01 + 1,
459 .elem_size = sizeof(char),
460 .array_type = NO_ARRAY,
461 .tlv_type = 0,
462 .offset = offsetof(struct
463 wlfw_fw_version_info_s_v01,
464 fw_build_timestamp),
465 },
466 {
467 .data_type = QMI_EOTI,
468 .array_type = NO_ARRAY,
469 .tlv_type = QMI_COMMON_TLV_TYPE,
470 },
471 };
472
473 static struct qmi_elem_info wlfw_host_ddr_range_s_v01_ei[] = {
474 {
475 .data_type = QMI_UNSIGNED_8_BYTE,
476 .elem_len = 1,
477 .elem_size = sizeof(u64),
478 .array_type = NO_ARRAY,
479 .tlv_type = 0,
480 .offset = offsetof(struct
481 wlfw_host_ddr_range_s_v01,
482 start),
483 },
484 {
485 .data_type = QMI_UNSIGNED_8_BYTE,
486 .elem_len = 1,
487 .elem_size = sizeof(u64),
488 .array_type = NO_ARRAY,
489 .tlv_type = 0,
490 .offset = offsetof(struct
491 wlfw_host_ddr_range_s_v01,
492 size),
493 },
494 {
495 .data_type = QMI_EOTI,
496 .array_type = NO_ARRAY,
497 .tlv_type = QMI_COMMON_TLV_TYPE,
498 },
499 };
500
501 static struct qmi_elem_info wlfw_m3_segment_info_s_v01_ei[] = {
502 {
503 .data_type = QMI_SIGNED_4_BYTE_ENUM,
504 .elem_len = 1,
505 .elem_size = sizeof(enum wlfw_m3_segment_type_v01),
506 .array_type = NO_ARRAY,
507 .tlv_type = 0,
508 .offset = offsetof(struct
509 wlfw_m3_segment_info_s_v01,
510 type),
511 },
512 {
513 .data_type = QMI_UNSIGNED_8_BYTE,
514 .elem_len = 1,
515 .elem_size = sizeof(u64),
516 .array_type = NO_ARRAY,
517 .tlv_type = 0,
518 .offset = offsetof(struct
519 wlfw_m3_segment_info_s_v01,
520 addr),
521 },
522 {
523 .data_type = QMI_UNSIGNED_8_BYTE,
524 .elem_len = 1,
525 .elem_size = sizeof(u64),
526 .array_type = NO_ARRAY,
527 .tlv_type = 0,
528 .offset = offsetof(struct
529 wlfw_m3_segment_info_s_v01,
530 size),
531 },
532 {
533 .data_type = QMI_STRING,
534 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1,
535 .elem_size = sizeof(char),
536 .array_type = NO_ARRAY,
537 .tlv_type = 0,
538 .offset = offsetof(struct
539 wlfw_m3_segment_info_s_v01,
540 name),
541 },
542 {
543 .data_type = QMI_EOTI,
544 .array_type = NO_ARRAY,
545 .tlv_type = QMI_COMMON_TLV_TYPE,
546 },
547 };
548
549 static struct qmi_elem_info wlfw_dev_mem_info_s_v01_ei[] = {
550 {
551 .data_type = QMI_UNSIGNED_8_BYTE,
552 .elem_len = 1,
553 .elem_size = sizeof(u64),
554 .array_type = NO_ARRAY,
555 .tlv_type = 0,
556 .offset = offsetof(struct
557 wlfw_dev_mem_info_s_v01,
558 start),
559 },
560 {
561 .data_type = QMI_UNSIGNED_8_BYTE,
562 .elem_len = 1,
563 .elem_size = sizeof(u64),
564 .array_type = NO_ARRAY,
565 .tlv_type = 0,
566 .offset = offsetof(struct
567 wlfw_dev_mem_info_s_v01,
568 size),
569 },
570 {
571 .data_type = QMI_EOTI,
572 .array_type = NO_ARRAY,
573 .tlv_type = QMI_COMMON_TLV_TYPE,
574 },
575 };
576
577 static struct qmi_elem_info mlo_chip_info_s_v01_ei[] = {
578 {
579 .data_type = QMI_UNSIGNED_1_BYTE,
580 .elem_len = 1,
581 .elem_size = sizeof(u8),
582 .array_type = NO_ARRAY,
583 .tlv_type = 0,
584 .offset = offsetof(struct
585 mlo_chip_info_s_v01,
586 chip_id),
587 },
588 {
589 .data_type = QMI_UNSIGNED_1_BYTE,
590 .elem_len = 1,
591 .elem_size = sizeof(u8),
592 .array_type = NO_ARRAY,
593 .tlv_type = 0,
594 .offset = offsetof(struct
595 mlo_chip_info_s_v01,
596 num_local_links),
597 },
598 {
599 .data_type = QMI_UNSIGNED_1_BYTE,
600 .elem_len = QMI_WLFW_MAX_NUM_MLO_LINKS_PER_CHIP_V01,
601 .elem_size = sizeof(u8),
602 .array_type = STATIC_ARRAY,
603 .tlv_type = 0,
604 .offset = offsetof(struct
605 mlo_chip_info_s_v01,
606 hw_link_id),
607 },
608 {
609 .data_type = QMI_UNSIGNED_1_BYTE,
610 .elem_len = QMI_WLFW_MAX_NUM_MLO_LINKS_PER_CHIP_V01,
611 .elem_size = sizeof(u8),
612 .array_type = STATIC_ARRAY,
613 .tlv_type = 0,
614 .offset = offsetof(struct
615 mlo_chip_info_s_v01,
616 valid_mlo_link_id),
617 },
618 {
619 .data_type = QMI_EOTI,
620 .array_type = NO_ARRAY,
621 .tlv_type = QMI_COMMON_TLV_TYPE,
622 },
623 };
624
625 static struct qmi_elem_info mlo_chip_v2_info_s_v01_ei[] = {
626 {
627 .data_type = QMI_STRUCT,
628 .elem_len = 1,
629 .elem_size = sizeof(struct mlo_chip_info_s_v01),
630 .array_type = NO_ARRAY,
631 .tlv_type = 0,
632 .offset = offsetof(struct
633 mlo_chip_v2_info_s_v01,
634 mlo_chip_info),
635 .ei_array = mlo_chip_info_s_v01_ei,
636 },
637 {
638 .data_type = QMI_UNSIGNED_1_BYTE,
639 .elem_len = 1,
640 .elem_size = sizeof(u8),
641 .array_type = NO_ARRAY,
642 .tlv_type = 0,
643 .offset = offsetof(struct
644 mlo_chip_v2_info_s_v01,
645 adj_mlo_num_chips),
646 },
647 {
648 .data_type = QMI_STRUCT,
649 .elem_len = QMI_WLFW_MAX_ADJ_CHIP_V01,
650 .elem_size = sizeof(struct mlo_chip_info_s_v01),
651 .array_type = STATIC_ARRAY,
652 .tlv_type = 0,
653 .offset = offsetof(struct
654 mlo_chip_v2_info_s_v01,
655 adj_mlo_chip_info),
656 .ei_array = mlo_chip_info_s_v01_ei,
657 },
658 {
659 .data_type = QMI_EOTI,
660 .array_type = NO_ARRAY,
661 .tlv_type = QMI_COMMON_TLV_TYPE,
662 },
663 };
664
665 static struct qmi_elem_info wlfw_pmu_param_v01_ei[] = {
666 {
667 .data_type = QMI_UNSIGNED_1_BYTE,
668 .elem_len = QMI_WLFW_PMU_PIN_NAME_MAX_LEN_V01,
669 .elem_size = sizeof(u8),
670 .array_type = STATIC_ARRAY,
671 .tlv_type = 0,
672 .offset = offsetof(struct
673 wlfw_pmu_param_v01,
674 pin_name),
675 },
676 {
677 .data_type = QMI_UNSIGNED_4_BYTE,
678 .elem_len = 1,
679 .elem_size = sizeof(u32),
680 .array_type = NO_ARRAY,
681 .tlv_type = 0,
682 .offset = offsetof(struct
683 wlfw_pmu_param_v01,
684 wake_volt_valid),
685 },
686 {
687 .data_type = QMI_UNSIGNED_4_BYTE,
688 .elem_len = 1,
689 .elem_size = sizeof(u32),
690 .array_type = NO_ARRAY,
691 .tlv_type = 0,
692 .offset = offsetof(struct
693 wlfw_pmu_param_v01,
694 wake_volt),
695 },
696 {
697 .data_type = QMI_UNSIGNED_4_BYTE,
698 .elem_len = 1,
699 .elem_size = sizeof(u32),
700 .array_type = NO_ARRAY,
701 .tlv_type = 0,
702 .offset = offsetof(struct
703 wlfw_pmu_param_v01,
704 sleep_volt_valid),
705 },
706 {
707 .data_type = QMI_UNSIGNED_4_BYTE,
708 .elem_len = 1,
709 .elem_size = sizeof(u32),
710 .array_type = NO_ARRAY,
711 .tlv_type = 0,
712 .offset = offsetof(struct
713 wlfw_pmu_param_v01,
714 sleep_volt),
715 },
716 {
717 .data_type = QMI_EOTI,
718 .array_type = NO_ARRAY,
719 .tlv_type = QMI_COMMON_TLV_TYPE,
720 },
721 };
722
723 static struct qmi_elem_info wlfw_pmu_cfg_v01_ei[] = {
724 {
725 .data_type = QMI_DATA_LEN,
726 .elem_len = 1,
727 .elem_size = sizeof(u8),
728 .array_type = NO_ARRAY,
729 .tlv_type = 0,
730 .offset = offsetof(struct
731 wlfw_pmu_cfg_v01,
732 pmu_param_len),
733 },
734 {
735 .data_type = QMI_STRUCT,
736 .elem_len = QMI_WLFW_PMU_PARAMS_MAX_V01,
737 .elem_size = sizeof(struct wlfw_pmu_param_v01),
738 .array_type = VAR_LEN_ARRAY,
739 .tlv_type = 0,
740 .offset = offsetof(struct
741 wlfw_pmu_cfg_v01,
742 pmu_param),
743 .ei_array = wlfw_pmu_param_v01_ei,
744 },
745 {
746 .data_type = QMI_EOTI,
747 .array_type = NO_ARRAY,
748 .tlv_type = QMI_COMMON_TLV_TYPE,
749 },
750 };
751
752 static struct qmi_elem_info wlfw_shadow_reg_v3_cfg_s_v01_ei[] = {
753 {
754 .data_type = QMI_UNSIGNED_4_BYTE,
755 .elem_len = 1,
756 .elem_size = sizeof(u32),
757 .array_type = NO_ARRAY,
758 .tlv_type = 0,
759 .offset = offsetof(struct
760 wlfw_shadow_reg_v3_cfg_s_v01,
761 addr),
762 },
763 {
764 .data_type = QMI_EOTI,
765 .array_type = NO_ARRAY,
766 .tlv_type = QMI_COMMON_TLV_TYPE,
767 },
768 };
769
770 static struct qmi_elem_info wlfw_share_mem_info_s_v01_ei[] = {
771 {
772 .data_type = QMI_SIGNED_4_BYTE_ENUM,
773 .elem_len = 1,
774 .elem_size = sizeof(enum wlfw_share_mem_type_enum_v01),
775 .array_type = NO_ARRAY,
776 .tlv_type = 0,
777 .offset = offsetof(struct
778 wlfw_share_mem_info_s_v01,
779 type),
780 },
781 {
782 .data_type = QMI_UNSIGNED_8_BYTE,
783 .elem_len = 1,
784 .elem_size = sizeof(u64),
785 .array_type = NO_ARRAY,
786 .tlv_type = 0,
787 .offset = offsetof(struct
788 wlfw_share_mem_info_s_v01,
789 start),
790 },
791 {
792 .data_type = QMI_UNSIGNED_8_BYTE,
793 .elem_len = 1,
794 .elem_size = sizeof(u64),
795 .array_type = NO_ARRAY,
796 .tlv_type = 0,
797 .offset = offsetof(struct
798 wlfw_share_mem_info_s_v01,
799 size),
800 },
801 {
802 .data_type = QMI_EOTI,
803 .array_type = NO_ARRAY,
804 .tlv_type = QMI_COMMON_TLV_TYPE,
805 },
806 };
807
808 static struct qmi_elem_info wlfw_host_pcie_link_info_s_v01_ei[] = {
809 {
810 .data_type = QMI_UNSIGNED_4_BYTE,
811 .elem_len = 1,
812 .elem_size = sizeof(u32),
813 .array_type = NO_ARRAY,
814 .tlv_type = 0,
815 .offset = offsetof(struct
816 wlfw_host_pcie_link_info_s_v01,
817 pci_link_speed),
818 },
819 {
820 .data_type = QMI_UNSIGNED_4_BYTE,
821 .elem_len = 1,
822 .elem_size = sizeof(u32),
823 .array_type = NO_ARRAY,
824 .tlv_type = 0,
825 .offset = offsetof(struct
826 wlfw_host_pcie_link_info_s_v01,
827 pci_link_width),
828 },
829 {
830 .data_type = QMI_EOTI,
831 .array_type = NO_ARRAY,
832 .tlv_type = QMI_COMMON_TLV_TYPE,
833 },
834 };
835
836 static struct qmi_elem_info wlchip_serial_id_v01_ei[] = {
837 {
838 .data_type = QMI_UNSIGNED_4_BYTE,
839 .elem_len = 1,
840 .elem_size = sizeof(u32),
841 .array_type = NO_ARRAY,
842 .tlv_type = 0,
843 .offset = offsetof(struct
844 wlchip_serial_id_v01,
845 serial_id_msb),
846 },
847 {
848 .data_type = QMI_UNSIGNED_4_BYTE,
849 .elem_len = 1,
850 .elem_size = sizeof(u32),
851 .array_type = NO_ARRAY,
852 .tlv_type = 0,
853 .offset = offsetof(struct
854 wlchip_serial_id_v01,
855 serial_id_lsb),
856 },
857 {
858 .data_type = QMI_EOTI,
859 .array_type = NO_ARRAY,
860 .tlv_type = QMI_COMMON_TLV_TYPE,
861 },
862 };
863
864 struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
865 {
866 .data_type = QMI_OPT_FLAG,
867 .elem_len = 1,
868 .elem_size = sizeof(u8),
869 .array_type = NO_ARRAY,
870 .tlv_type = 0x10,
871 .offset = offsetof(struct
872 wlfw_ind_register_req_msg_v01,
873 fw_ready_enable_valid),
874 },
875 {
876 .data_type = QMI_UNSIGNED_1_BYTE,
877 .elem_len = 1,
878 .elem_size = sizeof(u8),
879 .array_type = NO_ARRAY,
880 .tlv_type = 0x10,
881 .offset = offsetof(struct
882 wlfw_ind_register_req_msg_v01,
883 fw_ready_enable),
884 },
885 {
886 .data_type = QMI_OPT_FLAG,
887 .elem_len = 1,
888 .elem_size = sizeof(u8),
889 .array_type = NO_ARRAY,
890 .tlv_type = 0x11,
891 .offset = offsetof(struct
892 wlfw_ind_register_req_msg_v01,
893 initiate_cal_download_enable_valid),
894 },
895 {
896 .data_type = QMI_UNSIGNED_1_BYTE,
897 .elem_len = 1,
898 .elem_size = sizeof(u8),
899 .array_type = NO_ARRAY,
900 .tlv_type = 0x11,
901 .offset = offsetof(struct
902 wlfw_ind_register_req_msg_v01,
903 initiate_cal_download_enable),
904 },
905 {
906 .data_type = QMI_OPT_FLAG,
907 .elem_len = 1,
908 .elem_size = sizeof(u8),
909 .array_type = NO_ARRAY,
910 .tlv_type = 0x12,
911 .offset = offsetof(struct
912 wlfw_ind_register_req_msg_v01,
913 initiate_cal_update_enable_valid),
914 },
915 {
916 .data_type = QMI_UNSIGNED_1_BYTE,
917 .elem_len = 1,
918 .elem_size = sizeof(u8),
919 .array_type = NO_ARRAY,
920 .tlv_type = 0x12,
921 .offset = offsetof(struct
922 wlfw_ind_register_req_msg_v01,
923 initiate_cal_update_enable),
924 },
925 {
926 .data_type = QMI_OPT_FLAG,
927 .elem_len = 1,
928 .elem_size = sizeof(u8),
929 .array_type = NO_ARRAY,
930 .tlv_type = 0x13,
931 .offset = offsetof(struct
932 wlfw_ind_register_req_msg_v01,
933 msa_ready_enable_valid),
934 },
935 {
936 .data_type = QMI_UNSIGNED_1_BYTE,
937 .elem_len = 1,
938 .elem_size = sizeof(u8),
939 .array_type = NO_ARRAY,
940 .tlv_type = 0x13,
941 .offset = offsetof(struct
942 wlfw_ind_register_req_msg_v01,
943 msa_ready_enable),
944 },
945 {
946 .data_type = QMI_OPT_FLAG,
947 .elem_len = 1,
948 .elem_size = sizeof(u8),
949 .array_type = NO_ARRAY,
950 .tlv_type = 0x14,
951 .offset = offsetof(struct
952 wlfw_ind_register_req_msg_v01,
953 pin_connect_result_enable_valid),
954 },
955 {
956 .data_type = QMI_UNSIGNED_1_BYTE,
957 .elem_len = 1,
958 .elem_size = sizeof(u8),
959 .array_type = NO_ARRAY,
960 .tlv_type = 0x14,
961 .offset = offsetof(struct
962 wlfw_ind_register_req_msg_v01,
963 pin_connect_result_enable),
964 },
965 {
966 .data_type = QMI_OPT_FLAG,
967 .elem_len = 1,
968 .elem_size = sizeof(u8),
969 .array_type = NO_ARRAY,
970 .tlv_type = 0x15,
971 .offset = offsetof(struct
972 wlfw_ind_register_req_msg_v01,
973 client_id_valid),
974 },
975 {
976 .data_type = QMI_UNSIGNED_4_BYTE,
977 .elem_len = 1,
978 .elem_size = sizeof(u32),
979 .array_type = NO_ARRAY,
980 .tlv_type = 0x15,
981 .offset = offsetof(struct
982 wlfw_ind_register_req_msg_v01,
983 client_id),
984 },
985 {
986 .data_type = QMI_OPT_FLAG,
987 .elem_len = 1,
988 .elem_size = sizeof(u8),
989 .array_type = NO_ARRAY,
990 .tlv_type = 0x16,
991 .offset = offsetof(struct
992 wlfw_ind_register_req_msg_v01,
993 request_mem_enable_valid),
994 },
995 {
996 .data_type = QMI_UNSIGNED_1_BYTE,
997 .elem_len = 1,
998 .elem_size = sizeof(u8),
999 .array_type = NO_ARRAY,
1000 .tlv_type = 0x16,
1001 .offset = offsetof(struct
1002 wlfw_ind_register_req_msg_v01,
1003 request_mem_enable),
1004 },
1005 {
1006 .data_type = QMI_OPT_FLAG,
1007 .elem_len = 1,
1008 .elem_size = sizeof(u8),
1009 .array_type = NO_ARRAY,
1010 .tlv_type = 0x17,
1011 .offset = offsetof(struct
1012 wlfw_ind_register_req_msg_v01,
1013 fw_mem_ready_enable_valid),
1014 },
1015 {
1016 .data_type = QMI_UNSIGNED_1_BYTE,
1017 .elem_len = 1,
1018 .elem_size = sizeof(u8),
1019 .array_type = NO_ARRAY,
1020 .tlv_type = 0x17,
1021 .offset = offsetof(struct
1022 wlfw_ind_register_req_msg_v01,
1023 fw_mem_ready_enable),
1024 },
1025 {
1026 .data_type = QMI_OPT_FLAG,
1027 .elem_len = 1,
1028 .elem_size = sizeof(u8),
1029 .array_type = NO_ARRAY,
1030 .tlv_type = 0x18,
1031 .offset = offsetof(struct
1032 wlfw_ind_register_req_msg_v01,
1033 fw_init_done_enable_valid),
1034 },
1035 {
1036 .data_type = QMI_UNSIGNED_1_BYTE,
1037 .elem_len = 1,
1038 .elem_size = sizeof(u8),
1039 .array_type = NO_ARRAY,
1040 .tlv_type = 0x18,
1041 .offset = offsetof(struct
1042 wlfw_ind_register_req_msg_v01,
1043 fw_init_done_enable),
1044 },
1045 {
1046 .data_type = QMI_OPT_FLAG,
1047 .elem_len = 1,
1048 .elem_size = sizeof(u8),
1049 .array_type = NO_ARRAY,
1050 .tlv_type = 0x19,
1051 .offset = offsetof(struct
1052 wlfw_ind_register_req_msg_v01,
1053 rejuvenate_enable_valid),
1054 },
1055 {
1056 .data_type = QMI_UNSIGNED_4_BYTE,
1057 .elem_len = 1,
1058 .elem_size = sizeof(u32),
1059 .array_type = NO_ARRAY,
1060 .tlv_type = 0x19,
1061 .offset = offsetof(struct
1062 wlfw_ind_register_req_msg_v01,
1063 rejuvenate_enable),
1064 },
1065 {
1066 .data_type = QMI_OPT_FLAG,
1067 .elem_len = 1,
1068 .elem_size = sizeof(u8),
1069 .array_type = NO_ARRAY,
1070 .tlv_type = 0x1A,
1071 .offset = offsetof(struct
1072 wlfw_ind_register_req_msg_v01,
1073 xo_cal_enable_valid),
1074 },
1075 {
1076 .data_type = QMI_UNSIGNED_1_BYTE,
1077 .elem_len = 1,
1078 .elem_size = sizeof(u8),
1079 .array_type = NO_ARRAY,
1080 .tlv_type = 0x1A,
1081 .offset = offsetof(struct
1082 wlfw_ind_register_req_msg_v01,
1083 xo_cal_enable),
1084 },
1085 {
1086 .data_type = QMI_OPT_FLAG,
1087 .elem_len = 1,
1088 .elem_size = sizeof(u8),
1089 .array_type = NO_ARRAY,
1090 .tlv_type = 0x1B,
1091 .offset = offsetof(struct
1092 wlfw_ind_register_req_msg_v01,
1093 cal_done_enable_valid),
1094 },
1095 {
1096 .data_type = QMI_UNSIGNED_1_BYTE,
1097 .elem_len = 1,
1098 .elem_size = sizeof(u8),
1099 .array_type = NO_ARRAY,
1100 .tlv_type = 0x1B,
1101 .offset = offsetof(struct
1102 wlfw_ind_register_req_msg_v01,
1103 cal_done_enable),
1104 },
1105 {
1106 .data_type = QMI_OPT_FLAG,
1107 .elem_len = 1,
1108 .elem_size = sizeof(u8),
1109 .array_type = NO_ARRAY,
1110 .tlv_type = 0x1C,
1111 .offset = offsetof(struct
1112 wlfw_ind_register_req_msg_v01,
1113 qdss_trace_req_mem_enable_valid),
1114 },
1115 {
1116 .data_type = QMI_UNSIGNED_1_BYTE,
1117 .elem_len = 1,
1118 .elem_size = sizeof(u8),
1119 .array_type = NO_ARRAY,
1120 .tlv_type = 0x1C,
1121 .offset = offsetof(struct
1122 wlfw_ind_register_req_msg_v01,
1123 qdss_trace_req_mem_enable),
1124 },
1125 {
1126 .data_type = QMI_OPT_FLAG,
1127 .elem_len = 1,
1128 .elem_size = sizeof(u8),
1129 .array_type = NO_ARRAY,
1130 .tlv_type = 0x1D,
1131 .offset = offsetof(struct
1132 wlfw_ind_register_req_msg_v01,
1133 qdss_trace_save_enable_valid),
1134 },
1135 {
1136 .data_type = QMI_UNSIGNED_1_BYTE,
1137 .elem_len = 1,
1138 .elem_size = sizeof(u8),
1139 .array_type = NO_ARRAY,
1140 .tlv_type = 0x1D,
1141 .offset = offsetof(struct
1142 wlfw_ind_register_req_msg_v01,
1143 qdss_trace_save_enable),
1144 },
1145 {
1146 .data_type = QMI_OPT_FLAG,
1147 .elem_len = 1,
1148 .elem_size = sizeof(u8),
1149 .array_type = NO_ARRAY,
1150 .tlv_type = 0x1E,
1151 .offset = offsetof(struct
1152 wlfw_ind_register_req_msg_v01,
1153 qdss_trace_free_enable_valid),
1154 },
1155 {
1156 .data_type = QMI_UNSIGNED_1_BYTE,
1157 .elem_len = 1,
1158 .elem_size = sizeof(u8),
1159 .array_type = NO_ARRAY,
1160 .tlv_type = 0x1E,
1161 .offset = offsetof(struct
1162 wlfw_ind_register_req_msg_v01,
1163 qdss_trace_free_enable),
1164 },
1165 {
1166 .data_type = QMI_OPT_FLAG,
1167 .elem_len = 1,
1168 .elem_size = sizeof(u8),
1169 .array_type = NO_ARRAY,
1170 .tlv_type = 0x1F,
1171 .offset = offsetof(struct
1172 wlfw_ind_register_req_msg_v01,
1173 respond_get_info_enable_valid),
1174 },
1175 {
1176 .data_type = QMI_UNSIGNED_1_BYTE,
1177 .elem_len = 1,
1178 .elem_size = sizeof(u8),
1179 .array_type = NO_ARRAY,
1180 .tlv_type = 0x1F,
1181 .offset = offsetof(struct
1182 wlfw_ind_register_req_msg_v01,
1183 respond_get_info_enable),
1184 },
1185 {
1186 .data_type = QMI_OPT_FLAG,
1187 .elem_len = 1,
1188 .elem_size = sizeof(u8),
1189 .array_type = NO_ARRAY,
1190 .tlv_type = 0x20,
1191 .offset = offsetof(struct
1192 wlfw_ind_register_req_msg_v01,
1193 m3_dump_upload_req_enable_valid),
1194 },
1195 {
1196 .data_type = QMI_UNSIGNED_1_BYTE,
1197 .elem_len = 1,
1198 .elem_size = sizeof(u8),
1199 .array_type = NO_ARRAY,
1200 .tlv_type = 0x20,
1201 .offset = offsetof(struct
1202 wlfw_ind_register_req_msg_v01,
1203 m3_dump_upload_req_enable),
1204 },
1205 {
1206 .data_type = QMI_OPT_FLAG,
1207 .elem_len = 1,
1208 .elem_size = sizeof(u8),
1209 .array_type = NO_ARRAY,
1210 .tlv_type = 0x21,
1211 .offset = offsetof(struct
1212 wlfw_ind_register_req_msg_v01,
1213 wfc_call_twt_config_enable_valid),
1214 },
1215 {
1216 .data_type = QMI_UNSIGNED_1_BYTE,
1217 .elem_len = 1,
1218 .elem_size = sizeof(u8),
1219 .array_type = NO_ARRAY,
1220 .tlv_type = 0x21,
1221 .offset = offsetof(struct
1222 wlfw_ind_register_req_msg_v01,
1223 wfc_call_twt_config_enable),
1224 },
1225 {
1226 .data_type = QMI_OPT_FLAG,
1227 .elem_len = 1,
1228 .elem_size = sizeof(u8),
1229 .array_type = NO_ARRAY,
1230 .tlv_type = 0x22,
1231 .offset = offsetof(struct
1232 wlfw_ind_register_req_msg_v01,
1233 qdss_mem_ready_enable_valid),
1234 },
1235 {
1236 .data_type = QMI_UNSIGNED_1_BYTE,
1237 .elem_len = 1,
1238 .elem_size = sizeof(u8),
1239 .array_type = NO_ARRAY,
1240 .tlv_type = 0x22,
1241 .offset = offsetof(struct
1242 wlfw_ind_register_req_msg_v01,
1243 qdss_mem_ready_enable),
1244 },
1245 {
1246 .data_type = QMI_OPT_FLAG,
1247 .elem_len = 1,
1248 .elem_size = sizeof(u8),
1249 .array_type = NO_ARRAY,
1250 .tlv_type = 0x23,
1251 .offset = offsetof(struct
1252 wlfw_ind_register_req_msg_v01,
1253 m3_dump_upload_segments_req_enable_valid),
1254 },
1255 {
1256 .data_type = QMI_UNSIGNED_1_BYTE,
1257 .elem_len = 1,
1258 .elem_size = sizeof(u8),
1259 .array_type = NO_ARRAY,
1260 .tlv_type = 0x23,
1261 .offset = offsetof(struct
1262 wlfw_ind_register_req_msg_v01,
1263 m3_dump_upload_segments_req_enable),
1264 },
1265 {
1266 .data_type = QMI_OPT_FLAG,
1267 .elem_len = 1,
1268 .elem_size = sizeof(u8),
1269 .array_type = NO_ARRAY,
1270 .tlv_type = 0x24,
1271 .offset = offsetof(struct
1272 wlfw_ind_register_req_msg_v01,
1273 fw_ssr_enable_valid),
1274 },
1275 {
1276 .data_type = QMI_UNSIGNED_1_BYTE,
1277 .elem_len = 1,
1278 .elem_size = sizeof(u8),
1279 .array_type = NO_ARRAY,
1280 .tlv_type = 0x24,
1281 .offset = offsetof(struct
1282 wlfw_ind_register_req_msg_v01,
1283 fw_ssr_enable),
1284 },
1285 {
1286 .data_type = QMI_OPT_FLAG,
1287 .elem_len = 1,
1288 .elem_size = sizeof(u8),
1289 .array_type = NO_ARRAY,
1290 .tlv_type = 0x25,
1291 .offset = offsetof(struct
1292 wlfw_ind_register_req_msg_v01,
1293 async_data_enable_valid),
1294 },
1295 {
1296 .data_type = QMI_UNSIGNED_1_BYTE,
1297 .elem_len = 1,
1298 .elem_size = sizeof(u8),
1299 .array_type = NO_ARRAY,
1300 .tlv_type = 0x25,
1301 .offset = offsetof(struct
1302 wlfw_ind_register_req_msg_v01,
1303 async_data_enable),
1304 },
1305 {
1306 .data_type = QMI_EOTI,
1307 .array_type = NO_ARRAY,
1308 .tlv_type = QMI_COMMON_TLV_TYPE,
1309 },
1310 };
1311 EXPORT_SYMBOL(wlfw_ind_register_req_msg_v01_ei);
1312
1313 struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
1314 {
1315 .data_type = QMI_STRUCT,
1316 .elem_len = 1,
1317 .elem_size = sizeof(struct qmi_response_type_v01),
1318 .array_type = NO_ARRAY,
1319 .tlv_type = 0x02,
1320 .offset = offsetof(struct
1321 wlfw_ind_register_resp_msg_v01,
1322 resp),
1323 .ei_array = qmi_response_type_v01_ei,
1324 },
1325 {
1326 .data_type = QMI_OPT_FLAG,
1327 .elem_len = 1,
1328 .elem_size = sizeof(u8),
1329 .array_type = NO_ARRAY,
1330 .tlv_type = 0x10,
1331 .offset = offsetof(struct
1332 wlfw_ind_register_resp_msg_v01,
1333 fw_status_valid),
1334 },
1335 {
1336 .data_type = QMI_UNSIGNED_8_BYTE,
1337 .elem_len = 1,
1338 .elem_size = sizeof(u64),
1339 .array_type = NO_ARRAY,
1340 .tlv_type = 0x10,
1341 .offset = offsetof(struct
1342 wlfw_ind_register_resp_msg_v01,
1343 fw_status),
1344 },
1345 {
1346 .data_type = QMI_EOTI,
1347 .array_type = NO_ARRAY,
1348 .tlv_type = QMI_COMMON_TLV_TYPE,
1349 },
1350 };
1351 EXPORT_SYMBOL(wlfw_ind_register_resp_msg_v01_ei);
1352
1353 struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
1354 {
1355 .data_type = QMI_EOTI,
1356 .array_type = NO_ARRAY,
1357 .tlv_type = QMI_COMMON_TLV_TYPE,
1358 },
1359 };
1360 EXPORT_SYMBOL(wlfw_fw_ready_ind_msg_v01_ei);
1361
1362 struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
1363 {
1364 .data_type = QMI_OPT_FLAG,
1365 .elem_len = 1,
1366 .elem_size = sizeof(u8),
1367 .array_type = NO_ARRAY,
1368 .tlv_type = 0x10,
1369 .offset = offsetof(struct
1370 wlfw_msa_ready_ind_msg_v01,
1371 hang_data_addr_offset_valid),
1372 },
1373 {
1374 .data_type = QMI_UNSIGNED_4_BYTE,
1375 .elem_len = 1,
1376 .elem_size = sizeof(u32),
1377 .array_type = NO_ARRAY,
1378 .tlv_type = 0x10,
1379 .offset = offsetof(struct
1380 wlfw_msa_ready_ind_msg_v01,
1381 hang_data_addr_offset),
1382 },
1383 {
1384 .data_type = QMI_OPT_FLAG,
1385 .elem_len = 1,
1386 .elem_size = sizeof(u8),
1387 .array_type = NO_ARRAY,
1388 .tlv_type = 0x11,
1389 .offset = offsetof(struct
1390 wlfw_msa_ready_ind_msg_v01,
1391 hang_data_length_valid),
1392 },
1393 {
1394 .data_type = QMI_UNSIGNED_2_BYTE,
1395 .elem_len = 1,
1396 .elem_size = sizeof(u16),
1397 .array_type = NO_ARRAY,
1398 .tlv_type = 0x11,
1399 .offset = offsetof(struct
1400 wlfw_msa_ready_ind_msg_v01,
1401 hang_data_length),
1402 },
1403 {
1404 .data_type = QMI_EOTI,
1405 .array_type = NO_ARRAY,
1406 .tlv_type = QMI_COMMON_TLV_TYPE,
1407 },
1408 };
1409 EXPORT_SYMBOL(wlfw_msa_ready_ind_msg_v01_ei);
1410
1411 struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
1412 {
1413 .data_type = QMI_OPT_FLAG,
1414 .elem_len = 1,
1415 .elem_size = sizeof(u8),
1416 .array_type = NO_ARRAY,
1417 .tlv_type = 0x10,
1418 .offset = offsetof(struct
1419 wlfw_pin_connect_result_ind_msg_v01,
1420 pwr_pin_result_valid),
1421 },
1422 {
1423 .data_type = QMI_UNSIGNED_4_BYTE,
1424 .elem_len = 1,
1425 .elem_size = sizeof(u32),
1426 .array_type = NO_ARRAY,
1427 .tlv_type = 0x10,
1428 .offset = offsetof(struct
1429 wlfw_pin_connect_result_ind_msg_v01,
1430 pwr_pin_result),
1431 },
1432 {
1433 .data_type = QMI_OPT_FLAG,
1434 .elem_len = 1,
1435 .elem_size = sizeof(u8),
1436 .array_type = NO_ARRAY,
1437 .tlv_type = 0x11,
1438 .offset = offsetof(struct
1439 wlfw_pin_connect_result_ind_msg_v01,
1440 phy_io_pin_result_valid),
1441 },
1442 {
1443 .data_type = QMI_UNSIGNED_4_BYTE,
1444 .elem_len = 1,
1445 .elem_size = sizeof(u32),
1446 .array_type = NO_ARRAY,
1447 .tlv_type = 0x11,
1448 .offset = offsetof(struct
1449 wlfw_pin_connect_result_ind_msg_v01,
1450 phy_io_pin_result),
1451 },
1452 {
1453 .data_type = QMI_OPT_FLAG,
1454 .elem_len = 1,
1455 .elem_size = sizeof(u8),
1456 .array_type = NO_ARRAY,
1457 .tlv_type = 0x12,
1458 .offset = offsetof(struct
1459 wlfw_pin_connect_result_ind_msg_v01,
1460 rf_pin_result_valid),
1461 },
1462 {
1463 .data_type = QMI_UNSIGNED_4_BYTE,
1464 .elem_len = 1,
1465 .elem_size = sizeof(u32),
1466 .array_type = NO_ARRAY,
1467 .tlv_type = 0x12,
1468 .offset = offsetof(struct
1469 wlfw_pin_connect_result_ind_msg_v01,
1470 rf_pin_result),
1471 },
1472 {
1473 .data_type = QMI_EOTI,
1474 .array_type = NO_ARRAY,
1475 .tlv_type = QMI_COMMON_TLV_TYPE,
1476 },
1477 };
1478 EXPORT_SYMBOL(wlfw_pin_connect_result_ind_msg_v01_ei);
1479
1480 struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
1481 {
1482 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1483 .elem_len = 1,
1484 .elem_size = sizeof(enum wlfw_driver_mode_enum_v01),
1485 .array_type = NO_ARRAY,
1486 .tlv_type = 0x01,
1487 .offset = offsetof(struct
1488 wlfw_wlan_mode_req_msg_v01,
1489 mode),
1490 },
1491 {
1492 .data_type = QMI_OPT_FLAG,
1493 .elem_len = 1,
1494 .elem_size = sizeof(u8),
1495 .array_type = NO_ARRAY,
1496 .tlv_type = 0x10,
1497 .offset = offsetof(struct
1498 wlfw_wlan_mode_req_msg_v01,
1499 hw_debug_valid),
1500 },
1501 {
1502 .data_type = QMI_UNSIGNED_1_BYTE,
1503 .elem_len = 1,
1504 .elem_size = sizeof(u8),
1505 .array_type = NO_ARRAY,
1506 .tlv_type = 0x10,
1507 .offset = offsetof(struct
1508 wlfw_wlan_mode_req_msg_v01,
1509 hw_debug),
1510 },
1511 {
1512 .data_type = QMI_OPT_FLAG,
1513 .elem_len = 1,
1514 .elem_size = sizeof(u8),
1515 .array_type = NO_ARRAY,
1516 .tlv_type = 0x11,
1517 .offset = offsetof(struct
1518 wlfw_wlan_mode_req_msg_v01,
1519 xo_cal_data_valid),
1520 },
1521 {
1522 .data_type = QMI_UNSIGNED_1_BYTE,
1523 .elem_len = 1,
1524 .elem_size = sizeof(u8),
1525 .array_type = NO_ARRAY,
1526 .tlv_type = 0x11,
1527 .offset = offsetof(struct
1528 wlfw_wlan_mode_req_msg_v01,
1529 xo_cal_data),
1530 },
1531 {
1532 .data_type = QMI_OPT_FLAG,
1533 .elem_len = 1,
1534 .elem_size = sizeof(u8),
1535 .array_type = NO_ARRAY,
1536 .tlv_type = 0x12,
1537 .offset = offsetof(struct
1538 wlfw_wlan_mode_req_msg_v01,
1539 wlan_en_delay_valid),
1540 },
1541 {
1542 .data_type = QMI_UNSIGNED_4_BYTE,
1543 .elem_len = 1,
1544 .elem_size = sizeof(u32),
1545 .array_type = NO_ARRAY,
1546 .tlv_type = 0x12,
1547 .offset = offsetof(struct
1548 wlfw_wlan_mode_req_msg_v01,
1549 wlan_en_delay),
1550 },
1551 {
1552 .data_type = QMI_EOTI,
1553 .array_type = NO_ARRAY,
1554 .tlv_type = QMI_COMMON_TLV_TYPE,
1555 },
1556 };
1557 EXPORT_SYMBOL(wlfw_wlan_mode_req_msg_v01_ei);
1558
1559 struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
1560 {
1561 .data_type = QMI_STRUCT,
1562 .elem_len = 1,
1563 .elem_size = sizeof(struct qmi_response_type_v01),
1564 .array_type = NO_ARRAY,
1565 .tlv_type = 0x02,
1566 .offset = offsetof(struct
1567 wlfw_wlan_mode_resp_msg_v01,
1568 resp),
1569 .ei_array = qmi_response_type_v01_ei,
1570 },
1571 {
1572 .data_type = QMI_EOTI,
1573 .array_type = NO_ARRAY,
1574 .tlv_type = QMI_COMMON_TLV_TYPE,
1575 },
1576 };
1577 EXPORT_SYMBOL(wlfw_wlan_mode_resp_msg_v01_ei);
1578
1579 struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
1580 {
1581 .data_type = QMI_OPT_FLAG,
1582 .elem_len = 1,
1583 .elem_size = sizeof(u8),
1584 .array_type = NO_ARRAY,
1585 .tlv_type = 0x10,
1586 .offset = offsetof(struct
1587 wlfw_wlan_cfg_req_msg_v01,
1588 host_version_valid),
1589 },
1590 {
1591 .data_type = QMI_STRING,
1592 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1,
1593 .elem_size = sizeof(char),
1594 .array_type = NO_ARRAY,
1595 .tlv_type = 0x10,
1596 .offset = offsetof(struct
1597 wlfw_wlan_cfg_req_msg_v01,
1598 host_version),
1599 },
1600 {
1601 .data_type = QMI_OPT_FLAG,
1602 .elem_len = 1,
1603 .elem_size = sizeof(u8),
1604 .array_type = NO_ARRAY,
1605 .tlv_type = 0x11,
1606 .offset = offsetof(struct
1607 wlfw_wlan_cfg_req_msg_v01,
1608 tgt_cfg_valid),
1609 },
1610 {
1611 .data_type = QMI_DATA_LEN,
1612 .elem_len = 1,
1613 .elem_size = sizeof(u8),
1614 .array_type = NO_ARRAY,
1615 .tlv_type = 0x11,
1616 .offset = offsetof(struct
1617 wlfw_wlan_cfg_req_msg_v01,
1618 tgt_cfg_len),
1619 },
1620 {
1621 .data_type = QMI_STRUCT,
1622 .elem_len = QMI_WLFW_MAX_NUM_CE_V01,
1623 .elem_size = sizeof(struct wlfw_ce_tgt_pipe_cfg_s_v01),
1624 .array_type = VAR_LEN_ARRAY,
1625 .tlv_type = 0x11,
1626 .offset = offsetof(struct
1627 wlfw_wlan_cfg_req_msg_v01,
1628 tgt_cfg),
1629 .ei_array = wlfw_ce_tgt_pipe_cfg_s_v01_ei,
1630 },
1631 {
1632 .data_type = QMI_OPT_FLAG,
1633 .elem_len = 1,
1634 .elem_size = sizeof(u8),
1635 .array_type = NO_ARRAY,
1636 .tlv_type = 0x12,
1637 .offset = offsetof(struct
1638 wlfw_wlan_cfg_req_msg_v01,
1639 svc_cfg_valid),
1640 },
1641 {
1642 .data_type = QMI_DATA_LEN,
1643 .elem_len = 1,
1644 .elem_size = sizeof(u8),
1645 .array_type = NO_ARRAY,
1646 .tlv_type = 0x12,
1647 .offset = offsetof(struct
1648 wlfw_wlan_cfg_req_msg_v01,
1649 svc_cfg_len),
1650 },
1651 {
1652 .data_type = QMI_STRUCT,
1653 .elem_len = QMI_WLFW_MAX_NUM_SVC_V01,
1654 .elem_size = sizeof(struct wlfw_ce_svc_pipe_cfg_s_v01),
1655 .array_type = VAR_LEN_ARRAY,
1656 .tlv_type = 0x12,
1657 .offset = offsetof(struct
1658 wlfw_wlan_cfg_req_msg_v01,
1659 svc_cfg),
1660 .ei_array = wlfw_ce_svc_pipe_cfg_s_v01_ei,
1661 },
1662 {
1663 .data_type = QMI_OPT_FLAG,
1664 .elem_len = 1,
1665 .elem_size = sizeof(u8),
1666 .array_type = NO_ARRAY,
1667 .tlv_type = 0x13,
1668 .offset = offsetof(struct
1669 wlfw_wlan_cfg_req_msg_v01,
1670 shadow_reg_valid),
1671 },
1672 {
1673 .data_type = QMI_DATA_LEN,
1674 .elem_len = 1,
1675 .elem_size = sizeof(u8),
1676 .array_type = NO_ARRAY,
1677 .tlv_type = 0x13,
1678 .offset = offsetof(struct
1679 wlfw_wlan_cfg_req_msg_v01,
1680 shadow_reg_len),
1681 },
1682 {
1683 .data_type = QMI_STRUCT,
1684 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V01,
1685 .elem_size = sizeof(struct wlfw_shadow_reg_cfg_s_v01),
1686 .array_type = VAR_LEN_ARRAY,
1687 .tlv_type = 0x13,
1688 .offset = offsetof(struct
1689 wlfw_wlan_cfg_req_msg_v01,
1690 shadow_reg),
1691 .ei_array = wlfw_shadow_reg_cfg_s_v01_ei,
1692 },
1693 {
1694 .data_type = QMI_OPT_FLAG,
1695 .elem_len = 1,
1696 .elem_size = sizeof(u8),
1697 .array_type = NO_ARRAY,
1698 .tlv_type = 0x14,
1699 .offset = offsetof(struct
1700 wlfw_wlan_cfg_req_msg_v01,
1701 shadow_reg_v2_valid),
1702 },
1703 {
1704 .data_type = QMI_DATA_LEN,
1705 .elem_len = 1,
1706 .elem_size = sizeof(u8),
1707 .array_type = NO_ARRAY,
1708 .tlv_type = 0x14,
1709 .offset = offsetof(struct
1710 wlfw_wlan_cfg_req_msg_v01,
1711 shadow_reg_v2_len),
1712 },
1713 {
1714 .data_type = QMI_STRUCT,
1715 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01,
1716 .elem_size = sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01),
1717 .array_type = VAR_LEN_ARRAY,
1718 .tlv_type = 0x14,
1719 .offset = offsetof(struct
1720 wlfw_wlan_cfg_req_msg_v01,
1721 shadow_reg_v2),
1722 .ei_array = wlfw_shadow_reg_v2_cfg_s_v01_ei,
1723 },
1724 {
1725 .data_type = QMI_OPT_FLAG,
1726 .elem_len = 1,
1727 .elem_size = sizeof(u8),
1728 .array_type = NO_ARRAY,
1729 .tlv_type = 0x15,
1730 .offset = offsetof(struct
1731 wlfw_wlan_cfg_req_msg_v01,
1732 rri_over_ddr_cfg_valid),
1733 },
1734 {
1735 .data_type = QMI_STRUCT,
1736 .elem_len = 1,
1737 .elem_size = sizeof(struct wlfw_rri_over_ddr_cfg_s_v01),
1738 .array_type = NO_ARRAY,
1739 .tlv_type = 0x15,
1740 .offset = offsetof(struct
1741 wlfw_wlan_cfg_req_msg_v01,
1742 rri_over_ddr_cfg),
1743 .ei_array = wlfw_rri_over_ddr_cfg_s_v01_ei,
1744 },
1745 {
1746 .data_type = QMI_OPT_FLAG,
1747 .elem_len = 1,
1748 .elem_size = sizeof(u8),
1749 .array_type = NO_ARRAY,
1750 .tlv_type = 0x16,
1751 .offset = offsetof(struct
1752 wlfw_wlan_cfg_req_msg_v01,
1753 msi_cfg_valid),
1754 },
1755 {
1756 .data_type = QMI_DATA_LEN,
1757 .elem_len = 1,
1758 .elem_size = sizeof(u8),
1759 .array_type = NO_ARRAY,
1760 .tlv_type = 0x16,
1761 .offset = offsetof(struct
1762 wlfw_wlan_cfg_req_msg_v01,
1763 msi_cfg_len),
1764 },
1765 {
1766 .data_type = QMI_STRUCT,
1767 .elem_len = QMI_WLFW_MAX_NUM_CE_V01,
1768 .elem_size = sizeof(struct wlfw_msi_cfg_s_v01),
1769 .array_type = VAR_LEN_ARRAY,
1770 .tlv_type = 0x16,
1771 .offset = offsetof(struct
1772 wlfw_wlan_cfg_req_msg_v01,
1773 msi_cfg),
1774 .ei_array = wlfw_msi_cfg_s_v01_ei,
1775 },
1776 {
1777 .data_type = QMI_OPT_FLAG,
1778 .elem_len = 1,
1779 .elem_size = sizeof(u8),
1780 .array_type = NO_ARRAY,
1781 .tlv_type = 0x17,
1782 .offset = offsetof(struct
1783 wlfw_wlan_cfg_req_msg_v01,
1784 shadow_reg_v3_valid),
1785 },
1786 {
1787 .data_type = QMI_DATA_LEN,
1788 .elem_len = 1,
1789 .elem_size = sizeof(u8),
1790 .array_type = NO_ARRAY,
1791 .tlv_type = 0x17,
1792 .offset = offsetof(struct
1793 wlfw_wlan_cfg_req_msg_v01,
1794 shadow_reg_v3_len),
1795 },
1796 {
1797 .data_type = QMI_STRUCT,
1798 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V3_V01,
1799 .elem_size = sizeof(struct wlfw_shadow_reg_v3_cfg_s_v01),
1800 .array_type = VAR_LEN_ARRAY,
1801 .tlv_type = 0x17,
1802 .offset = offsetof(struct
1803 wlfw_wlan_cfg_req_msg_v01,
1804 shadow_reg_v3),
1805 .ei_array = wlfw_shadow_reg_v3_cfg_s_v01_ei,
1806 },
1807 {
1808 .data_type = QMI_EOTI,
1809 .array_type = NO_ARRAY,
1810 .tlv_type = QMI_COMMON_TLV_TYPE,
1811 },
1812 };
1813 EXPORT_SYMBOL(wlfw_wlan_cfg_req_msg_v01_ei);
1814
1815 struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
1816 {
1817 .data_type = QMI_STRUCT,
1818 .elem_len = 1,
1819 .elem_size = sizeof(struct qmi_response_type_v01),
1820 .array_type = NO_ARRAY,
1821 .tlv_type = 0x02,
1822 .offset = offsetof(struct
1823 wlfw_wlan_cfg_resp_msg_v01,
1824 resp),
1825 .ei_array = qmi_response_type_v01_ei,
1826 },
1827 {
1828 .data_type = QMI_EOTI,
1829 .array_type = NO_ARRAY,
1830 .tlv_type = QMI_COMMON_TLV_TYPE,
1831 },
1832 };
1833 EXPORT_SYMBOL(wlfw_wlan_cfg_resp_msg_v01_ei);
1834
1835 struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
1836 {
1837 .data_type = QMI_EOTI,
1838 .array_type = NO_ARRAY,
1839 .tlv_type = QMI_COMMON_TLV_TYPE,
1840 },
1841 };
1842 EXPORT_SYMBOL(wlfw_cap_req_msg_v01_ei);
1843
1844 struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
1845 {
1846 .data_type = QMI_STRUCT,
1847 .elem_len = 1,
1848 .elem_size = sizeof(struct qmi_response_type_v01),
1849 .array_type = NO_ARRAY,
1850 .tlv_type = 0x02,
1851 .offset = offsetof(struct
1852 wlfw_cap_resp_msg_v01,
1853 resp),
1854 .ei_array = qmi_response_type_v01_ei,
1855 },
1856 {
1857 .data_type = QMI_OPT_FLAG,
1858 .elem_len = 1,
1859 .elem_size = sizeof(u8),
1860 .array_type = NO_ARRAY,
1861 .tlv_type = 0x10,
1862 .offset = offsetof(struct
1863 wlfw_cap_resp_msg_v01,
1864 chip_info_valid),
1865 },
1866 {
1867 .data_type = QMI_STRUCT,
1868 .elem_len = 1,
1869 .elem_size = sizeof(struct wlfw_rf_chip_info_s_v01),
1870 .array_type = NO_ARRAY,
1871 .tlv_type = 0x10,
1872 .offset = offsetof(struct
1873 wlfw_cap_resp_msg_v01,
1874 chip_info),
1875 .ei_array = wlfw_rf_chip_info_s_v01_ei,
1876 },
1877 {
1878 .data_type = QMI_OPT_FLAG,
1879 .elem_len = 1,
1880 .elem_size = sizeof(u8),
1881 .array_type = NO_ARRAY,
1882 .tlv_type = 0x11,
1883 .offset = offsetof(struct
1884 wlfw_cap_resp_msg_v01,
1885 board_info_valid),
1886 },
1887 {
1888 .data_type = QMI_STRUCT,
1889 .elem_len = 1,
1890 .elem_size = sizeof(struct wlfw_rf_board_info_s_v01),
1891 .array_type = NO_ARRAY,
1892 .tlv_type = 0x11,
1893 .offset = offsetof(struct
1894 wlfw_cap_resp_msg_v01,
1895 board_info),
1896 .ei_array = wlfw_rf_board_info_s_v01_ei,
1897 },
1898 {
1899 .data_type = QMI_OPT_FLAG,
1900 .elem_len = 1,
1901 .elem_size = sizeof(u8),
1902 .array_type = NO_ARRAY,
1903 .tlv_type = 0x12,
1904 .offset = offsetof(struct
1905 wlfw_cap_resp_msg_v01,
1906 soc_info_valid),
1907 },
1908 {
1909 .data_type = QMI_STRUCT,
1910 .elem_len = 1,
1911 .elem_size = sizeof(struct wlfw_soc_info_s_v01),
1912 .array_type = NO_ARRAY,
1913 .tlv_type = 0x12,
1914 .offset = offsetof(struct
1915 wlfw_cap_resp_msg_v01,
1916 soc_info),
1917 .ei_array = wlfw_soc_info_s_v01_ei,
1918 },
1919 {
1920 .data_type = QMI_OPT_FLAG,
1921 .elem_len = 1,
1922 .elem_size = sizeof(u8),
1923 .array_type = NO_ARRAY,
1924 .tlv_type = 0x13,
1925 .offset = offsetof(struct
1926 wlfw_cap_resp_msg_v01,
1927 fw_version_info_valid),
1928 },
1929 {
1930 .data_type = QMI_STRUCT,
1931 .elem_len = 1,
1932 .elem_size = sizeof(struct wlfw_fw_version_info_s_v01),
1933 .array_type = NO_ARRAY,
1934 .tlv_type = 0x13,
1935 .offset = offsetof(struct
1936 wlfw_cap_resp_msg_v01,
1937 fw_version_info),
1938 .ei_array = wlfw_fw_version_info_s_v01_ei,
1939 },
1940 {
1941 .data_type = QMI_OPT_FLAG,
1942 .elem_len = 1,
1943 .elem_size = sizeof(u8),
1944 .array_type = NO_ARRAY,
1945 .tlv_type = 0x14,
1946 .offset = offsetof(struct
1947 wlfw_cap_resp_msg_v01,
1948 fw_build_id_valid),
1949 },
1950 {
1951 .data_type = QMI_STRING,
1952 .elem_len = QMI_WLFW_MAX_BUILD_ID_LEN_V01 + 1,
1953 .elem_size = sizeof(char),
1954 .array_type = NO_ARRAY,
1955 .tlv_type = 0x14,
1956 .offset = offsetof(struct
1957 wlfw_cap_resp_msg_v01,
1958 fw_build_id),
1959 },
1960 {
1961 .data_type = QMI_OPT_FLAG,
1962 .elem_len = 1,
1963 .elem_size = sizeof(u8),
1964 .array_type = NO_ARRAY,
1965 .tlv_type = 0x15,
1966 .offset = offsetof(struct
1967 wlfw_cap_resp_msg_v01,
1968 num_macs_valid),
1969 },
1970 {
1971 .data_type = QMI_UNSIGNED_1_BYTE,
1972 .elem_len = 1,
1973 .elem_size = sizeof(u8),
1974 .array_type = NO_ARRAY,
1975 .tlv_type = 0x15,
1976 .offset = offsetof(struct
1977 wlfw_cap_resp_msg_v01,
1978 num_macs),
1979 },
1980 {
1981 .data_type = QMI_OPT_FLAG,
1982 .elem_len = 1,
1983 .elem_size = sizeof(u8),
1984 .array_type = NO_ARRAY,
1985 .tlv_type = 0x16,
1986 .offset = offsetof(struct
1987 wlfw_cap_resp_msg_v01,
1988 voltage_mv_valid),
1989 },
1990 {
1991 .data_type = QMI_UNSIGNED_4_BYTE,
1992 .elem_len = 1,
1993 .elem_size = sizeof(u32),
1994 .array_type = NO_ARRAY,
1995 .tlv_type = 0x16,
1996 .offset = offsetof(struct
1997 wlfw_cap_resp_msg_v01,
1998 voltage_mv),
1999 },
2000 {
2001 .data_type = QMI_OPT_FLAG,
2002 .elem_len = 1,
2003 .elem_size = sizeof(u8),
2004 .array_type = NO_ARRAY,
2005 .tlv_type = 0x17,
2006 .offset = offsetof(struct
2007 wlfw_cap_resp_msg_v01,
2008 time_freq_hz_valid),
2009 },
2010 {
2011 .data_type = QMI_UNSIGNED_4_BYTE,
2012 .elem_len = 1,
2013 .elem_size = sizeof(u32),
2014 .array_type = NO_ARRAY,
2015 .tlv_type = 0x17,
2016 .offset = offsetof(struct
2017 wlfw_cap_resp_msg_v01,
2018 time_freq_hz),
2019 },
2020 {
2021 .data_type = QMI_OPT_FLAG,
2022 .elem_len = 1,
2023 .elem_size = sizeof(u8),
2024 .array_type = NO_ARRAY,
2025 .tlv_type = 0x18,
2026 .offset = offsetof(struct
2027 wlfw_cap_resp_msg_v01,
2028 otp_version_valid),
2029 },
2030 {
2031 .data_type = QMI_UNSIGNED_4_BYTE,
2032 .elem_len = 1,
2033 .elem_size = sizeof(u32),
2034 .array_type = NO_ARRAY,
2035 .tlv_type = 0x18,
2036 .offset = offsetof(struct
2037 wlfw_cap_resp_msg_v01,
2038 otp_version),
2039 },
2040 {
2041 .data_type = QMI_OPT_FLAG,
2042 .elem_len = 1,
2043 .elem_size = sizeof(u8),
2044 .array_type = NO_ARRAY,
2045 .tlv_type = 0x19,
2046 .offset = offsetof(struct
2047 wlfw_cap_resp_msg_v01,
2048 eeprom_caldata_read_timeout_valid),
2049 },
2050 {
2051 .data_type = QMI_UNSIGNED_4_BYTE,
2052 .elem_len = 1,
2053 .elem_size = sizeof(u32),
2054 .array_type = NO_ARRAY,
2055 .tlv_type = 0x19,
2056 .offset = offsetof(struct
2057 wlfw_cap_resp_msg_v01,
2058 eeprom_caldata_read_timeout),
2059 },
2060 {
2061 .data_type = QMI_OPT_FLAG,
2062 .elem_len = 1,
2063 .elem_size = sizeof(u8),
2064 .array_type = NO_ARRAY,
2065 .tlv_type = 0x1A,
2066 .offset = offsetof(struct
2067 wlfw_cap_resp_msg_v01,
2068 fw_caps_valid),
2069 },
2070 {
2071 .data_type = QMI_UNSIGNED_8_BYTE,
2072 .elem_len = 1,
2073 .elem_size = sizeof(u64),
2074 .array_type = NO_ARRAY,
2075 .tlv_type = 0x1A,
2076 .offset = offsetof(struct
2077 wlfw_cap_resp_msg_v01,
2078 fw_caps),
2079 },
2080 {
2081 .data_type = QMI_OPT_FLAG,
2082 .elem_len = 1,
2083 .elem_size = sizeof(u8),
2084 .array_type = NO_ARRAY,
2085 .tlv_type = 0x1B,
2086 .offset = offsetof(struct
2087 wlfw_cap_resp_msg_v01,
2088 rd_card_chain_cap_valid),
2089 },
2090 {
2091 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2092 .elem_len = 1,
2093 .elem_size = sizeof(enum wlfw_rd_card_chain_cap_v01),
2094 .array_type = NO_ARRAY,
2095 .tlv_type = 0x1B,
2096 .offset = offsetof(struct
2097 wlfw_cap_resp_msg_v01,
2098 rd_card_chain_cap),
2099 },
2100 {
2101 .data_type = QMI_OPT_FLAG,
2102 .elem_len = 1,
2103 .elem_size = sizeof(u8),
2104 .array_type = NO_ARRAY,
2105 .tlv_type = 0x1C,
2106 .offset = offsetof(struct
2107 wlfw_cap_resp_msg_v01,
2108 dev_mem_info_valid),
2109 },
2110 {
2111 .data_type = QMI_STRUCT,
2112 .elem_len = QMI_WLFW_MAX_DEV_MEM_NUM_V01,
2113 .elem_size = sizeof(struct wlfw_dev_mem_info_s_v01),
2114 .array_type = STATIC_ARRAY,
2115 .tlv_type = 0x1C,
2116 .offset = offsetof(struct
2117 wlfw_cap_resp_msg_v01,
2118 dev_mem_info),
2119 .ei_array = wlfw_dev_mem_info_s_v01_ei,
2120 },
2121 {
2122 .data_type = QMI_OPT_FLAG,
2123 .elem_len = 1,
2124 .elem_size = sizeof(u8),
2125 .array_type = NO_ARRAY,
2126 .tlv_type = 0x1D,
2127 .offset = offsetof(struct
2128 wlfw_cap_resp_msg_v01,
2129 foundry_name_valid),
2130 },
2131 {
2132 .data_type = QMI_STRING,
2133 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1,
2134 .elem_size = sizeof(char),
2135 .array_type = NO_ARRAY,
2136 .tlv_type = 0x1D,
2137 .offset = offsetof(struct
2138 wlfw_cap_resp_msg_v01,
2139 foundry_name),
2140 },
2141 {
2142 .data_type = QMI_OPT_FLAG,
2143 .elem_len = 1,
2144 .elem_size = sizeof(u8),
2145 .array_type = NO_ARRAY,
2146 .tlv_type = 0x1E,
2147 .offset = offsetof(struct
2148 wlfw_cap_resp_msg_v01,
2149 hang_data_addr_offset_valid),
2150 },
2151 {
2152 .data_type = QMI_UNSIGNED_4_BYTE,
2153 .elem_len = 1,
2154 .elem_size = sizeof(u32),
2155 .array_type = NO_ARRAY,
2156 .tlv_type = 0x1E,
2157 .offset = offsetof(struct
2158 wlfw_cap_resp_msg_v01,
2159 hang_data_addr_offset),
2160 },
2161 {
2162 .data_type = QMI_OPT_FLAG,
2163 .elem_len = 1,
2164 .elem_size = sizeof(u8),
2165 .array_type = NO_ARRAY,
2166 .tlv_type = 0x1F,
2167 .offset = offsetof(struct
2168 wlfw_cap_resp_msg_v01,
2169 hang_data_length_valid),
2170 },
2171 {
2172 .data_type = QMI_UNSIGNED_2_BYTE,
2173 .elem_len = 1,
2174 .elem_size = sizeof(u16),
2175 .array_type = NO_ARRAY,
2176 .tlv_type = 0x1F,
2177 .offset = offsetof(struct
2178 wlfw_cap_resp_msg_v01,
2179 hang_data_length),
2180 },
2181 {
2182 .data_type = QMI_OPT_FLAG,
2183 .elem_len = 1,
2184 .elem_size = sizeof(u8),
2185 .array_type = NO_ARRAY,
2186 .tlv_type = 0x20,
2187 .offset = offsetof(struct
2188 wlfw_cap_resp_msg_v01,
2189 bdf_dnld_method_valid),
2190 },
2191 {
2192 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2193 .elem_len = 1,
2194 .elem_size = sizeof(enum wlfw_bdf_dnld_method_v01),
2195 .array_type = NO_ARRAY,
2196 .tlv_type = 0x20,
2197 .offset = offsetof(struct
2198 wlfw_cap_resp_msg_v01,
2199 bdf_dnld_method),
2200 },
2201 {
2202 .data_type = QMI_OPT_FLAG,
2203 .elem_len = 1,
2204 .elem_size = sizeof(u8),
2205 .array_type = NO_ARRAY,
2206 .tlv_type = 0x21,
2207 .offset = offsetof(struct
2208 wlfw_cap_resp_msg_v01,
2209 hwid_bitmap_valid),
2210 },
2211 {
2212 .data_type = QMI_UNSIGNED_1_BYTE,
2213 .elem_len = 1,
2214 .elem_size = sizeof(u8),
2215 .array_type = NO_ARRAY,
2216 .tlv_type = 0x21,
2217 .offset = offsetof(struct
2218 wlfw_cap_resp_msg_v01,
2219 hwid_bitmap),
2220 },
2221 {
2222 .data_type = QMI_OPT_FLAG,
2223 .elem_len = 1,
2224 .elem_size = sizeof(u8),
2225 .array_type = NO_ARRAY,
2226 .tlv_type = 0x22,
2227 .offset = offsetof(struct
2228 wlfw_cap_resp_msg_v01,
2229 ol_cpr_cfg_valid),
2230 },
2231 {
2232 .data_type = QMI_STRUCT,
2233 .elem_len = 1,
2234 .elem_size = sizeof(struct wlfw_pmu_cfg_v01),
2235 .array_type = NO_ARRAY,
2236 .tlv_type = 0x22,
2237 .offset = offsetof(struct
2238 wlfw_cap_resp_msg_v01,
2239 ol_cpr_cfg),
2240 .ei_array = wlfw_pmu_cfg_v01_ei,
2241 },
2242 {
2243 .data_type = QMI_OPT_FLAG,
2244 .elem_len = 1,
2245 .elem_size = sizeof(u8),
2246 .array_type = NO_ARRAY,
2247 .tlv_type = 0x23,
2248 .offset = offsetof(struct
2249 wlfw_cap_resp_msg_v01,
2250 regdb_mandatory_valid),
2251 },
2252 {
2253 .data_type = QMI_UNSIGNED_1_BYTE,
2254 .elem_len = 1,
2255 .elem_size = sizeof(u8),
2256 .array_type = NO_ARRAY,
2257 .tlv_type = 0x23,
2258 .offset = offsetof(struct
2259 wlfw_cap_resp_msg_v01,
2260 regdb_mandatory),
2261 },
2262 {
2263 .data_type = QMI_OPT_FLAG,
2264 .elem_len = 1,
2265 .elem_size = sizeof(u8),
2266 .array_type = NO_ARRAY,
2267 .tlv_type = 0x24,
2268 .offset = offsetof(struct
2269 wlfw_cap_resp_msg_v01,
2270 regdb_support_valid),
2271 },
2272 {
2273 .data_type = QMI_UNSIGNED_1_BYTE,
2274 .elem_len = 1,
2275 .elem_size = sizeof(u8),
2276 .array_type = NO_ARRAY,
2277 .tlv_type = 0x24,
2278 .offset = offsetof(struct
2279 wlfw_cap_resp_msg_v01,
2280 regdb_support),
2281 },
2282 {
2283 .data_type = QMI_OPT_FLAG,
2284 .elem_len = 1,
2285 .elem_size = sizeof(u8),
2286 .array_type = NO_ARRAY,
2287 .tlv_type = 0x25,
2288 .offset = offsetof(struct
2289 wlfw_cap_resp_msg_v01,
2290 rxgainlut_support_valid),
2291 },
2292 {
2293 .data_type = QMI_UNSIGNED_1_BYTE,
2294 .elem_len = 1,
2295 .elem_size = sizeof(u8),
2296 .array_type = NO_ARRAY,
2297 .tlv_type = 0x25,
2298 .offset = offsetof(struct
2299 wlfw_cap_resp_msg_v01,
2300 rxgainlut_support),
2301 },
2302 {
2303 .data_type = QMI_OPT_FLAG,
2304 .elem_len = 1,
2305 .elem_size = sizeof(u8),
2306 .array_type = NO_ARRAY,
2307 .tlv_type = 0x26,
2308 .offset = offsetof(struct
2309 wlfw_cap_resp_msg_v01,
2310 he_channel_width_cap_valid),
2311 },
2312 {
2313 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2314 .elem_len = 1,
2315 .elem_size = sizeof(enum wlfw_he_channel_width_cap_v01),
2316 .array_type = NO_ARRAY,
2317 .tlv_type = 0x26,
2318 .offset = offsetof(struct
2319 wlfw_cap_resp_msg_v01,
2320 he_channel_width_cap),
2321 },
2322 {
2323 .data_type = QMI_OPT_FLAG,
2324 .elem_len = 1,
2325 .elem_size = sizeof(u8),
2326 .array_type = NO_ARRAY,
2327 .tlv_type = 0x27,
2328 .offset = offsetof(struct
2329 wlfw_cap_resp_msg_v01,
2330 phy_qam_cap_valid),
2331 },
2332 {
2333 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2334 .elem_len = 1,
2335 .elem_size = sizeof(enum wlfw_phy_qam_cap_v01),
2336 .array_type = NO_ARRAY,
2337 .tlv_type = 0x27,
2338 .offset = offsetof(struct
2339 wlfw_cap_resp_msg_v01,
2340 phy_qam_cap),
2341 },
2342 {
2343 .data_type = QMI_OPT_FLAG,
2344 .elem_len = 1,
2345 .elem_size = sizeof(u8),
2346 .array_type = NO_ARRAY,
2347 .tlv_type = 0x28,
2348 .offset = offsetof(struct
2349 wlfw_cap_resp_msg_v01,
2350 serial_id_valid),
2351 },
2352 {
2353 .data_type = QMI_STRUCT,
2354 .elem_len = 1,
2355 .elem_size = sizeof(struct wlchip_serial_id_v01),
2356 .array_type = NO_ARRAY,
2357 .tlv_type = 0x28,
2358 .offset = offsetof(struct
2359 wlfw_cap_resp_msg_v01,
2360 serial_id),
2361 .ei_array = wlchip_serial_id_v01_ei,
2362 },
2363 {
2364 .data_type = QMI_EOTI,
2365 .array_type = NO_ARRAY,
2366 .tlv_type = QMI_COMMON_TLV_TYPE,
2367 },
2368 };
2369 EXPORT_SYMBOL(wlfw_cap_resp_msg_v01_ei);
2370
2371 struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
2372 {
2373 .data_type = QMI_UNSIGNED_1_BYTE,
2374 .elem_len = 1,
2375 .elem_size = sizeof(u8),
2376 .array_type = NO_ARRAY,
2377 .tlv_type = 0x01,
2378 .offset = offsetof(struct
2379 wlfw_bdf_download_req_msg_v01,
2380 valid),
2381 },
2382 {
2383 .data_type = QMI_OPT_FLAG,
2384 .elem_len = 1,
2385 .elem_size = sizeof(u8),
2386 .array_type = NO_ARRAY,
2387 .tlv_type = 0x10,
2388 .offset = offsetof(struct
2389 wlfw_bdf_download_req_msg_v01,
2390 file_id_valid),
2391 },
2392 {
2393 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2394 .elem_len = 1,
2395 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
2396 .array_type = NO_ARRAY,
2397 .tlv_type = 0x10,
2398 .offset = offsetof(struct
2399 wlfw_bdf_download_req_msg_v01,
2400 file_id),
2401 },
2402 {
2403 .data_type = QMI_OPT_FLAG,
2404 .elem_len = 1,
2405 .elem_size = sizeof(u8),
2406 .array_type = NO_ARRAY,
2407 .tlv_type = 0x11,
2408 .offset = offsetof(struct
2409 wlfw_bdf_download_req_msg_v01,
2410 total_size_valid),
2411 },
2412 {
2413 .data_type = QMI_UNSIGNED_4_BYTE,
2414 .elem_len = 1,
2415 .elem_size = sizeof(u32),
2416 .array_type = NO_ARRAY,
2417 .tlv_type = 0x11,
2418 .offset = offsetof(struct
2419 wlfw_bdf_download_req_msg_v01,
2420 total_size),
2421 },
2422 {
2423 .data_type = QMI_OPT_FLAG,
2424 .elem_len = 1,
2425 .elem_size = sizeof(u8),
2426 .array_type = NO_ARRAY,
2427 .tlv_type = 0x12,
2428 .offset = offsetof(struct
2429 wlfw_bdf_download_req_msg_v01,
2430 seg_id_valid),
2431 },
2432 {
2433 .data_type = QMI_UNSIGNED_4_BYTE,
2434 .elem_len = 1,
2435 .elem_size = sizeof(u32),
2436 .array_type = NO_ARRAY,
2437 .tlv_type = 0x12,
2438 .offset = offsetof(struct
2439 wlfw_bdf_download_req_msg_v01,
2440 seg_id),
2441 },
2442 {
2443 .data_type = QMI_OPT_FLAG,
2444 .elem_len = 1,
2445 .elem_size = sizeof(u8),
2446 .array_type = NO_ARRAY,
2447 .tlv_type = 0x13,
2448 .offset = offsetof(struct
2449 wlfw_bdf_download_req_msg_v01,
2450 data_valid),
2451 },
2452 {
2453 .data_type = QMI_DATA_LEN,
2454 .elem_len = 1,
2455 .elem_size = sizeof(u16),
2456 .array_type = NO_ARRAY,
2457 .tlv_type = 0x13,
2458 .offset = offsetof(struct
2459 wlfw_bdf_download_req_msg_v01,
2460 data_len),
2461 },
2462 {
2463 .data_type = QMI_UNSIGNED_1_BYTE,
2464 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
2465 .elem_size = sizeof(u8),
2466 .array_type = VAR_LEN_ARRAY,
2467 .tlv_type = 0x13,
2468 .offset = offsetof(struct
2469 wlfw_bdf_download_req_msg_v01,
2470 data),
2471 },
2472 {
2473 .data_type = QMI_OPT_FLAG,
2474 .elem_len = 1,
2475 .elem_size = sizeof(u8),
2476 .array_type = NO_ARRAY,
2477 .tlv_type = 0x14,
2478 .offset = offsetof(struct
2479 wlfw_bdf_download_req_msg_v01,
2480 end_valid),
2481 },
2482 {
2483 .data_type = QMI_UNSIGNED_1_BYTE,
2484 .elem_len = 1,
2485 .elem_size = sizeof(u8),
2486 .array_type = NO_ARRAY,
2487 .tlv_type = 0x14,
2488 .offset = offsetof(struct
2489 wlfw_bdf_download_req_msg_v01,
2490 end),
2491 },
2492 {
2493 .data_type = QMI_OPT_FLAG,
2494 .elem_len = 1,
2495 .elem_size = sizeof(u8),
2496 .array_type = NO_ARRAY,
2497 .tlv_type = 0x15,
2498 .offset = offsetof(struct
2499 wlfw_bdf_download_req_msg_v01,
2500 bdf_type_valid),
2501 },
2502 {
2503 .data_type = QMI_UNSIGNED_1_BYTE,
2504 .elem_len = 1,
2505 .elem_size = sizeof(u8),
2506 .array_type = NO_ARRAY,
2507 .tlv_type = 0x15,
2508 .offset = offsetof(struct
2509 wlfw_bdf_download_req_msg_v01,
2510 bdf_type),
2511 },
2512 {
2513 .data_type = QMI_EOTI,
2514 .array_type = NO_ARRAY,
2515 .tlv_type = QMI_COMMON_TLV_TYPE,
2516 },
2517 };
2518 EXPORT_SYMBOL(wlfw_bdf_download_req_msg_v01_ei);
2519
2520 struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
2521 {
2522 .data_type = QMI_STRUCT,
2523 .elem_len = 1,
2524 .elem_size = sizeof(struct qmi_response_type_v01),
2525 .array_type = NO_ARRAY,
2526 .tlv_type = 0x02,
2527 .offset = offsetof(struct
2528 wlfw_bdf_download_resp_msg_v01,
2529 resp),
2530 .ei_array = qmi_response_type_v01_ei,
2531 },
2532 {
2533 .data_type = QMI_OPT_FLAG,
2534 .elem_len = 1,
2535 .elem_size = sizeof(u8),
2536 .array_type = NO_ARRAY,
2537 .tlv_type = 0x10,
2538 .offset = offsetof(struct
2539 wlfw_bdf_download_resp_msg_v01,
2540 host_bdf_data_valid),
2541 },
2542 {
2543 .data_type = QMI_UNSIGNED_8_BYTE,
2544 .elem_len = 1,
2545 .elem_size = sizeof(u64),
2546 .array_type = NO_ARRAY,
2547 .tlv_type = 0x10,
2548 .offset = offsetof(struct
2549 wlfw_bdf_download_resp_msg_v01,
2550 host_bdf_data),
2551 },
2552 {
2553 .data_type = QMI_EOTI,
2554 .array_type = NO_ARRAY,
2555 .tlv_type = QMI_COMMON_TLV_TYPE,
2556 },
2557 };
2558 EXPORT_SYMBOL(wlfw_bdf_download_resp_msg_v01_ei);
2559
2560 struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
2561 {
2562 .data_type = QMI_DATA_LEN,
2563 .elem_len = 1,
2564 .elem_size = sizeof(u8),
2565 .array_type = NO_ARRAY,
2566 .tlv_type = 0x01,
2567 .offset = offsetof(struct
2568 wlfw_cal_report_req_msg_v01,
2569 meta_data_len),
2570 },
2571 {
2572 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2573 .elem_len = QMI_WLFW_MAX_NUM_CAL_V01,
2574 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
2575 .array_type = VAR_LEN_ARRAY,
2576 .tlv_type = 0x01,
2577 .offset = offsetof(struct
2578 wlfw_cal_report_req_msg_v01,
2579 meta_data),
2580 },
2581 {
2582 .data_type = QMI_OPT_FLAG,
2583 .elem_len = 1,
2584 .elem_size = sizeof(u8),
2585 .array_type = NO_ARRAY,
2586 .tlv_type = 0x10,
2587 .offset = offsetof(struct
2588 wlfw_cal_report_req_msg_v01,
2589 xo_cal_data_valid),
2590 },
2591 {
2592 .data_type = QMI_UNSIGNED_1_BYTE,
2593 .elem_len = 1,
2594 .elem_size = sizeof(u8),
2595 .array_type = NO_ARRAY,
2596 .tlv_type = 0x10,
2597 .offset = offsetof(struct
2598 wlfw_cal_report_req_msg_v01,
2599 xo_cal_data),
2600 },
2601 {
2602 .data_type = QMI_OPT_FLAG,
2603 .elem_len = 1,
2604 .elem_size = sizeof(u8),
2605 .array_type = NO_ARRAY,
2606 .tlv_type = 0x11,
2607 .offset = offsetof(struct
2608 wlfw_cal_report_req_msg_v01,
2609 cal_remove_supported_valid),
2610 },
2611 {
2612 .data_type = QMI_UNSIGNED_1_BYTE,
2613 .elem_len = 1,
2614 .elem_size = sizeof(u8),
2615 .array_type = NO_ARRAY,
2616 .tlv_type = 0x11,
2617 .offset = offsetof(struct
2618 wlfw_cal_report_req_msg_v01,
2619 cal_remove_supported),
2620 },
2621 {
2622 .data_type = QMI_OPT_FLAG,
2623 .elem_len = 1,
2624 .elem_size = sizeof(u8),
2625 .array_type = NO_ARRAY,
2626 .tlv_type = 0x12,
2627 .offset = offsetof(struct
2628 wlfw_cal_report_req_msg_v01,
2629 cal_file_download_size_valid),
2630 },
2631 {
2632 .data_type = QMI_UNSIGNED_8_BYTE,
2633 .elem_len = 1,
2634 .elem_size = sizeof(u64),
2635 .array_type = NO_ARRAY,
2636 .tlv_type = 0x12,
2637 .offset = offsetof(struct
2638 wlfw_cal_report_req_msg_v01,
2639 cal_file_download_size),
2640 },
2641 {
2642 .data_type = QMI_EOTI,
2643 .array_type = NO_ARRAY,
2644 .tlv_type = QMI_COMMON_TLV_TYPE,
2645 },
2646 };
2647 EXPORT_SYMBOL(wlfw_cal_report_req_msg_v01_ei);
2648
2649 struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
2650 {
2651 .data_type = QMI_STRUCT,
2652 .elem_len = 1,
2653 .elem_size = sizeof(struct qmi_response_type_v01),
2654 .array_type = NO_ARRAY,
2655 .tlv_type = 0x02,
2656 .offset = offsetof(struct
2657 wlfw_cal_report_resp_msg_v01,
2658 resp),
2659 .ei_array = qmi_response_type_v01_ei,
2660 },
2661 {
2662 .data_type = QMI_EOTI,
2663 .array_type = NO_ARRAY,
2664 .tlv_type = QMI_COMMON_TLV_TYPE,
2665 },
2666 };
2667 EXPORT_SYMBOL(wlfw_cal_report_resp_msg_v01_ei);
2668
2669 struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
2670 {
2671 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2672 .elem_len = 1,
2673 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
2674 .array_type = NO_ARRAY,
2675 .tlv_type = 0x01,
2676 .offset = offsetof(struct
2677 wlfw_initiate_cal_download_ind_msg_v01,
2678 cal_id),
2679 },
2680 {
2681 .data_type = QMI_OPT_FLAG,
2682 .elem_len = 1,
2683 .elem_size = sizeof(u8),
2684 .array_type = NO_ARRAY,
2685 .tlv_type = 0x10,
2686 .offset = offsetof(struct
2687 wlfw_initiate_cal_download_ind_msg_v01,
2688 total_size_valid),
2689 },
2690 {
2691 .data_type = QMI_UNSIGNED_4_BYTE,
2692 .elem_len = 1,
2693 .elem_size = sizeof(u32),
2694 .array_type = NO_ARRAY,
2695 .tlv_type = 0x10,
2696 .offset = offsetof(struct
2697 wlfw_initiate_cal_download_ind_msg_v01,
2698 total_size),
2699 },
2700 {
2701 .data_type = QMI_OPT_FLAG,
2702 .elem_len = 1,
2703 .elem_size = sizeof(u8),
2704 .array_type = NO_ARRAY,
2705 .tlv_type = 0x11,
2706 .offset = offsetof(struct
2707 wlfw_initiate_cal_download_ind_msg_v01,
2708 cal_data_location_valid),
2709 },
2710 {
2711 .data_type = QMI_UNSIGNED_4_BYTE,
2712 .elem_len = 1,
2713 .elem_size = sizeof(u32),
2714 .array_type = NO_ARRAY,
2715 .tlv_type = 0x11,
2716 .offset = offsetof(struct
2717 wlfw_initiate_cal_download_ind_msg_v01,
2718 cal_data_location),
2719 },
2720 {
2721 .data_type = QMI_EOTI,
2722 .array_type = NO_ARRAY,
2723 .tlv_type = QMI_COMMON_TLV_TYPE,
2724 },
2725 };
2726 EXPORT_SYMBOL(wlfw_initiate_cal_download_ind_msg_v01_ei);
2727
2728 struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
2729 {
2730 .data_type = QMI_UNSIGNED_1_BYTE,
2731 .elem_len = 1,
2732 .elem_size = sizeof(u8),
2733 .array_type = NO_ARRAY,
2734 .tlv_type = 0x01,
2735 .offset = offsetof(struct
2736 wlfw_cal_download_req_msg_v01,
2737 valid),
2738 },
2739 {
2740 .data_type = QMI_OPT_FLAG,
2741 .elem_len = 1,
2742 .elem_size = sizeof(u8),
2743 .array_type = NO_ARRAY,
2744 .tlv_type = 0x10,
2745 .offset = offsetof(struct
2746 wlfw_cal_download_req_msg_v01,
2747 file_id_valid),
2748 },
2749 {
2750 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2751 .elem_len = 1,
2752 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
2753 .array_type = NO_ARRAY,
2754 .tlv_type = 0x10,
2755 .offset = offsetof(struct
2756 wlfw_cal_download_req_msg_v01,
2757 file_id),
2758 },
2759 {
2760 .data_type = QMI_OPT_FLAG,
2761 .elem_len = 1,
2762 .elem_size = sizeof(u8),
2763 .array_type = NO_ARRAY,
2764 .tlv_type = 0x11,
2765 .offset = offsetof(struct
2766 wlfw_cal_download_req_msg_v01,
2767 total_size_valid),
2768 },
2769 {
2770 .data_type = QMI_UNSIGNED_4_BYTE,
2771 .elem_len = 1,
2772 .elem_size = sizeof(u32),
2773 .array_type = NO_ARRAY,
2774 .tlv_type = 0x11,
2775 .offset = offsetof(struct
2776 wlfw_cal_download_req_msg_v01,
2777 total_size),
2778 },
2779 {
2780 .data_type = QMI_OPT_FLAG,
2781 .elem_len = 1,
2782 .elem_size = sizeof(u8),
2783 .array_type = NO_ARRAY,
2784 .tlv_type = 0x12,
2785 .offset = offsetof(struct
2786 wlfw_cal_download_req_msg_v01,
2787 seg_id_valid),
2788 },
2789 {
2790 .data_type = QMI_UNSIGNED_4_BYTE,
2791 .elem_len = 1,
2792 .elem_size = sizeof(u32),
2793 .array_type = NO_ARRAY,
2794 .tlv_type = 0x12,
2795 .offset = offsetof(struct
2796 wlfw_cal_download_req_msg_v01,
2797 seg_id),
2798 },
2799 {
2800 .data_type = QMI_OPT_FLAG,
2801 .elem_len = 1,
2802 .elem_size = sizeof(u8),
2803 .array_type = NO_ARRAY,
2804 .tlv_type = 0x13,
2805 .offset = offsetof(struct
2806 wlfw_cal_download_req_msg_v01,
2807 data_valid),
2808 },
2809 {
2810 .data_type = QMI_DATA_LEN,
2811 .elem_len = 1,
2812 .elem_size = sizeof(u16),
2813 .array_type = NO_ARRAY,
2814 .tlv_type = 0x13,
2815 .offset = offsetof(struct
2816 wlfw_cal_download_req_msg_v01,
2817 data_len),
2818 },
2819 {
2820 .data_type = QMI_UNSIGNED_1_BYTE,
2821 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
2822 .elem_size = sizeof(u8),
2823 .array_type = VAR_LEN_ARRAY,
2824 .tlv_type = 0x13,
2825 .offset = offsetof(struct
2826 wlfw_cal_download_req_msg_v01,
2827 data),
2828 },
2829 {
2830 .data_type = QMI_OPT_FLAG,
2831 .elem_len = 1,
2832 .elem_size = sizeof(u8),
2833 .array_type = NO_ARRAY,
2834 .tlv_type = 0x14,
2835 .offset = offsetof(struct
2836 wlfw_cal_download_req_msg_v01,
2837 end_valid),
2838 },
2839 {
2840 .data_type = QMI_UNSIGNED_1_BYTE,
2841 .elem_len = 1,
2842 .elem_size = sizeof(u8),
2843 .array_type = NO_ARRAY,
2844 .tlv_type = 0x14,
2845 .offset = offsetof(struct
2846 wlfw_cal_download_req_msg_v01,
2847 end),
2848 },
2849 {
2850 .data_type = QMI_OPT_FLAG,
2851 .elem_len = 1,
2852 .elem_size = sizeof(u8),
2853 .array_type = NO_ARRAY,
2854 .tlv_type = 0x15,
2855 .offset = offsetof(struct
2856 wlfw_cal_download_req_msg_v01,
2857 cal_data_location_valid),
2858 },
2859 {
2860 .data_type = QMI_UNSIGNED_4_BYTE,
2861 .elem_len = 1,
2862 .elem_size = sizeof(u32),
2863 .array_type = NO_ARRAY,
2864 .tlv_type = 0x15,
2865 .offset = offsetof(struct
2866 wlfw_cal_download_req_msg_v01,
2867 cal_data_location),
2868 },
2869 {
2870 .data_type = QMI_EOTI,
2871 .array_type = NO_ARRAY,
2872 .tlv_type = QMI_COMMON_TLV_TYPE,
2873 },
2874 };
2875 EXPORT_SYMBOL(wlfw_cal_download_req_msg_v01_ei);
2876
2877 struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
2878 {
2879 .data_type = QMI_STRUCT,
2880 .elem_len = 1,
2881 .elem_size = sizeof(struct qmi_response_type_v01),
2882 .array_type = NO_ARRAY,
2883 .tlv_type = 0x02,
2884 .offset = offsetof(struct
2885 wlfw_cal_download_resp_msg_v01,
2886 resp),
2887 .ei_array = qmi_response_type_v01_ei,
2888 },
2889 {
2890 .data_type = QMI_EOTI,
2891 .array_type = NO_ARRAY,
2892 .tlv_type = QMI_COMMON_TLV_TYPE,
2893 },
2894 };
2895 EXPORT_SYMBOL(wlfw_cal_download_resp_msg_v01_ei);
2896
2897 struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
2898 {
2899 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2900 .elem_len = 1,
2901 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
2902 .array_type = NO_ARRAY,
2903 .tlv_type = 0x01,
2904 .offset = offsetof(struct
2905 wlfw_initiate_cal_update_ind_msg_v01,
2906 cal_id),
2907 },
2908 {
2909 .data_type = QMI_UNSIGNED_4_BYTE,
2910 .elem_len = 1,
2911 .elem_size = sizeof(u32),
2912 .array_type = NO_ARRAY,
2913 .tlv_type = 0x02,
2914 .offset = offsetof(struct
2915 wlfw_initiate_cal_update_ind_msg_v01,
2916 total_size),
2917 },
2918 {
2919 .data_type = QMI_OPT_FLAG,
2920 .elem_len = 1,
2921 .elem_size = sizeof(u8),
2922 .array_type = NO_ARRAY,
2923 .tlv_type = 0x10,
2924 .offset = offsetof(struct
2925 wlfw_initiate_cal_update_ind_msg_v01,
2926 cal_data_location_valid),
2927 },
2928 {
2929 .data_type = QMI_UNSIGNED_4_BYTE,
2930 .elem_len = 1,
2931 .elem_size = sizeof(u32),
2932 .array_type = NO_ARRAY,
2933 .tlv_type = 0x10,
2934 .offset = offsetof(struct
2935 wlfw_initiate_cal_update_ind_msg_v01,
2936 cal_data_location),
2937 },
2938 {
2939 .data_type = QMI_EOTI,
2940 .array_type = NO_ARRAY,
2941 .tlv_type = QMI_COMMON_TLV_TYPE,
2942 },
2943 };
2944 EXPORT_SYMBOL(wlfw_initiate_cal_update_ind_msg_v01_ei);
2945
2946 struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
2947 {
2948 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2949 .elem_len = 1,
2950 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
2951 .array_type = NO_ARRAY,
2952 .tlv_type = 0x01,
2953 .offset = offsetof(struct
2954 wlfw_cal_update_req_msg_v01,
2955 cal_id),
2956 },
2957 {
2958 .data_type = QMI_UNSIGNED_4_BYTE,
2959 .elem_len = 1,
2960 .elem_size = sizeof(u32),
2961 .array_type = NO_ARRAY,
2962 .tlv_type = 0x02,
2963 .offset = offsetof(struct
2964 wlfw_cal_update_req_msg_v01,
2965 seg_id),
2966 },
2967 {
2968 .data_type = QMI_EOTI,
2969 .array_type = NO_ARRAY,
2970 .tlv_type = QMI_COMMON_TLV_TYPE,
2971 },
2972 };
2973 EXPORT_SYMBOL(wlfw_cal_update_req_msg_v01_ei);
2974
2975 struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
2976 {
2977 .data_type = QMI_STRUCT,
2978 .elem_len = 1,
2979 .elem_size = sizeof(struct qmi_response_type_v01),
2980 .array_type = NO_ARRAY,
2981 .tlv_type = 0x02,
2982 .offset = offsetof(struct
2983 wlfw_cal_update_resp_msg_v01,
2984 resp),
2985 .ei_array = qmi_response_type_v01_ei,
2986 },
2987 {
2988 .data_type = QMI_OPT_FLAG,
2989 .elem_len = 1,
2990 .elem_size = sizeof(u8),
2991 .array_type = NO_ARRAY,
2992 .tlv_type = 0x10,
2993 .offset = offsetof(struct
2994 wlfw_cal_update_resp_msg_v01,
2995 file_id_valid),
2996 },
2997 {
2998 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2999 .elem_len = 1,
3000 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
3001 .array_type = NO_ARRAY,
3002 .tlv_type = 0x10,
3003 .offset = offsetof(struct
3004 wlfw_cal_update_resp_msg_v01,
3005 file_id),
3006 },
3007 {
3008 .data_type = QMI_OPT_FLAG,
3009 .elem_len = 1,
3010 .elem_size = sizeof(u8),
3011 .array_type = NO_ARRAY,
3012 .tlv_type = 0x11,
3013 .offset = offsetof(struct
3014 wlfw_cal_update_resp_msg_v01,
3015 total_size_valid),
3016 },
3017 {
3018 .data_type = QMI_UNSIGNED_4_BYTE,
3019 .elem_len = 1,
3020 .elem_size = sizeof(u32),
3021 .array_type = NO_ARRAY,
3022 .tlv_type = 0x11,
3023 .offset = offsetof(struct
3024 wlfw_cal_update_resp_msg_v01,
3025 total_size),
3026 },
3027 {
3028 .data_type = QMI_OPT_FLAG,
3029 .elem_len = 1,
3030 .elem_size = sizeof(u8),
3031 .array_type = NO_ARRAY,
3032 .tlv_type = 0x12,
3033 .offset = offsetof(struct
3034 wlfw_cal_update_resp_msg_v01,
3035 seg_id_valid),
3036 },
3037 {
3038 .data_type = QMI_UNSIGNED_4_BYTE,
3039 .elem_len = 1,
3040 .elem_size = sizeof(u32),
3041 .array_type = NO_ARRAY,
3042 .tlv_type = 0x12,
3043 .offset = offsetof(struct
3044 wlfw_cal_update_resp_msg_v01,
3045 seg_id),
3046 },
3047 {
3048 .data_type = QMI_OPT_FLAG,
3049 .elem_len = 1,
3050 .elem_size = sizeof(u8),
3051 .array_type = NO_ARRAY,
3052 .tlv_type = 0x13,
3053 .offset = offsetof(struct
3054 wlfw_cal_update_resp_msg_v01,
3055 data_valid),
3056 },
3057 {
3058 .data_type = QMI_DATA_LEN,
3059 .elem_len = 1,
3060 .elem_size = sizeof(u16),
3061 .array_type = NO_ARRAY,
3062 .tlv_type = 0x13,
3063 .offset = offsetof(struct
3064 wlfw_cal_update_resp_msg_v01,
3065 data_len),
3066 },
3067 {
3068 .data_type = QMI_UNSIGNED_1_BYTE,
3069 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
3070 .elem_size = sizeof(u8),
3071 .array_type = VAR_LEN_ARRAY,
3072 .tlv_type = 0x13,
3073 .offset = offsetof(struct
3074 wlfw_cal_update_resp_msg_v01,
3075 data),
3076 },
3077 {
3078 .data_type = QMI_OPT_FLAG,
3079 .elem_len = 1,
3080 .elem_size = sizeof(u8),
3081 .array_type = NO_ARRAY,
3082 .tlv_type = 0x14,
3083 .offset = offsetof(struct
3084 wlfw_cal_update_resp_msg_v01,
3085 end_valid),
3086 },
3087 {
3088 .data_type = QMI_UNSIGNED_1_BYTE,
3089 .elem_len = 1,
3090 .elem_size = sizeof(u8),
3091 .array_type = NO_ARRAY,
3092 .tlv_type = 0x14,
3093 .offset = offsetof(struct
3094 wlfw_cal_update_resp_msg_v01,
3095 end),
3096 },
3097 {
3098 .data_type = QMI_OPT_FLAG,
3099 .elem_len = 1,
3100 .elem_size = sizeof(u8),
3101 .array_type = NO_ARRAY,
3102 .tlv_type = 0x15,
3103 .offset = offsetof(struct
3104 wlfw_cal_update_resp_msg_v01,
3105 cal_data_location_valid),
3106 },
3107 {
3108 .data_type = QMI_UNSIGNED_4_BYTE,
3109 .elem_len = 1,
3110 .elem_size = sizeof(u32),
3111 .array_type = NO_ARRAY,
3112 .tlv_type = 0x15,
3113 .offset = offsetof(struct
3114 wlfw_cal_update_resp_msg_v01,
3115 cal_data_location),
3116 },
3117 {
3118 .data_type = QMI_EOTI,
3119 .array_type = NO_ARRAY,
3120 .tlv_type = QMI_COMMON_TLV_TYPE,
3121 },
3122 };
3123 EXPORT_SYMBOL(wlfw_cal_update_resp_msg_v01_ei);
3124
3125 struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
3126 {
3127 .data_type = QMI_UNSIGNED_8_BYTE,
3128 .elem_len = 1,
3129 .elem_size = sizeof(u64),
3130 .array_type = NO_ARRAY,
3131 .tlv_type = 0x01,
3132 .offset = offsetof(struct
3133 wlfw_msa_info_req_msg_v01,
3134 msa_addr),
3135 },
3136 {
3137 .data_type = QMI_UNSIGNED_4_BYTE,
3138 .elem_len = 1,
3139 .elem_size = sizeof(u32),
3140 .array_type = NO_ARRAY,
3141 .tlv_type = 0x02,
3142 .offset = offsetof(struct
3143 wlfw_msa_info_req_msg_v01,
3144 size),
3145 },
3146 {
3147 .data_type = QMI_EOTI,
3148 .array_type = NO_ARRAY,
3149 .tlv_type = QMI_COMMON_TLV_TYPE,
3150 },
3151 };
3152 EXPORT_SYMBOL(wlfw_msa_info_req_msg_v01_ei);
3153
3154 struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
3155 {
3156 .data_type = QMI_STRUCT,
3157 .elem_len = 1,
3158 .elem_size = sizeof(struct qmi_response_type_v01),
3159 .array_type = NO_ARRAY,
3160 .tlv_type = 0x02,
3161 .offset = offsetof(struct
3162 wlfw_msa_info_resp_msg_v01,
3163 resp),
3164 .ei_array = qmi_response_type_v01_ei,
3165 },
3166 {
3167 .data_type = QMI_DATA_LEN,
3168 .elem_len = 1,
3169 .elem_size = sizeof(u8),
3170 .array_type = NO_ARRAY,
3171 .tlv_type = 0x03,
3172 .offset = offsetof(struct
3173 wlfw_msa_info_resp_msg_v01,
3174 mem_region_info_len),
3175 },
3176 {
3177 .data_type = QMI_STRUCT,
3178 .elem_len = QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01,
3179 .elem_size = sizeof(struct wlfw_memory_region_info_s_v01),
3180 .array_type = VAR_LEN_ARRAY,
3181 .tlv_type = 0x03,
3182 .offset = offsetof(struct
3183 wlfw_msa_info_resp_msg_v01,
3184 mem_region_info),
3185 .ei_array = wlfw_memory_region_info_s_v01_ei,
3186 },
3187 {
3188 .data_type = QMI_EOTI,
3189 .array_type = NO_ARRAY,
3190 .tlv_type = QMI_COMMON_TLV_TYPE,
3191 },
3192 };
3193 EXPORT_SYMBOL(wlfw_msa_info_resp_msg_v01_ei);
3194
3195 struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
3196 {
3197 .data_type = QMI_EOTI,
3198 .array_type = NO_ARRAY,
3199 .tlv_type = QMI_COMMON_TLV_TYPE,
3200 },
3201 };
3202 EXPORT_SYMBOL(wlfw_msa_ready_req_msg_v01_ei);
3203
3204 struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
3205 {
3206 .data_type = QMI_STRUCT,
3207 .elem_len = 1,
3208 .elem_size = sizeof(struct qmi_response_type_v01),
3209 .array_type = NO_ARRAY,
3210 .tlv_type = 0x02,
3211 .offset = offsetof(struct
3212 wlfw_msa_ready_resp_msg_v01,
3213 resp),
3214 .ei_array = qmi_response_type_v01_ei,
3215 },
3216 {
3217 .data_type = QMI_EOTI,
3218 .array_type = NO_ARRAY,
3219 .tlv_type = QMI_COMMON_TLV_TYPE,
3220 },
3221 };
3222 EXPORT_SYMBOL(wlfw_msa_ready_resp_msg_v01_ei);
3223
3224 struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
3225 {
3226 .data_type = QMI_OPT_FLAG,
3227 .elem_len = 1,
3228 .elem_size = sizeof(u8),
3229 .array_type = NO_ARRAY,
3230 .tlv_type = 0x10,
3231 .offset = offsetof(struct
3232 wlfw_ini_req_msg_v01,
3233 enablefwlog_valid),
3234 },
3235 {
3236 .data_type = QMI_UNSIGNED_1_BYTE,
3237 .elem_len = 1,
3238 .elem_size = sizeof(u8),
3239 .array_type = NO_ARRAY,
3240 .tlv_type = 0x10,
3241 .offset = offsetof(struct
3242 wlfw_ini_req_msg_v01,
3243 enablefwlog),
3244 },
3245 {
3246 .data_type = QMI_EOTI,
3247 .array_type = NO_ARRAY,
3248 .tlv_type = QMI_COMMON_TLV_TYPE,
3249 },
3250 };
3251 EXPORT_SYMBOL(wlfw_ini_req_msg_v01_ei);
3252
3253 struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
3254 {
3255 .data_type = QMI_STRUCT,
3256 .elem_len = 1,
3257 .elem_size = sizeof(struct qmi_response_type_v01),
3258 .array_type = NO_ARRAY,
3259 .tlv_type = 0x02,
3260 .offset = offsetof(struct
3261 wlfw_ini_resp_msg_v01,
3262 resp),
3263 .ei_array = qmi_response_type_v01_ei,
3264 },
3265 {
3266 .data_type = QMI_EOTI,
3267 .array_type = NO_ARRAY,
3268 .tlv_type = QMI_COMMON_TLV_TYPE,
3269 },
3270 };
3271 EXPORT_SYMBOL(wlfw_ini_resp_msg_v01_ei);
3272
3273 struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
3274 {
3275 .data_type = QMI_UNSIGNED_4_BYTE,
3276 .elem_len = 1,
3277 .elem_size = sizeof(u32),
3278 .array_type = NO_ARRAY,
3279 .tlv_type = 0x01,
3280 .offset = offsetof(struct
3281 wlfw_athdiag_read_req_msg_v01,
3282 offset),
3283 },
3284 {
3285 .data_type = QMI_UNSIGNED_4_BYTE,
3286 .elem_len = 1,
3287 .elem_size = sizeof(u32),
3288 .array_type = NO_ARRAY,
3289 .tlv_type = 0x02,
3290 .offset = offsetof(struct
3291 wlfw_athdiag_read_req_msg_v01,
3292 mem_type),
3293 },
3294 {
3295 .data_type = QMI_UNSIGNED_4_BYTE,
3296 .elem_len = 1,
3297 .elem_size = sizeof(u32),
3298 .array_type = NO_ARRAY,
3299 .tlv_type = 0x03,
3300 .offset = offsetof(struct
3301 wlfw_athdiag_read_req_msg_v01,
3302 data_len),
3303 },
3304 {
3305 .data_type = QMI_EOTI,
3306 .array_type = NO_ARRAY,
3307 .tlv_type = QMI_COMMON_TLV_TYPE,
3308 },
3309 };
3310 EXPORT_SYMBOL(wlfw_athdiag_read_req_msg_v01_ei);
3311
3312 struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
3313 {
3314 .data_type = QMI_STRUCT,
3315 .elem_len = 1,
3316 .elem_size = sizeof(struct qmi_response_type_v01),
3317 .array_type = NO_ARRAY,
3318 .tlv_type = 0x02,
3319 .offset = offsetof(struct
3320 wlfw_athdiag_read_resp_msg_v01,
3321 resp),
3322 .ei_array = qmi_response_type_v01_ei,
3323 },
3324 {
3325 .data_type = QMI_OPT_FLAG,
3326 .elem_len = 1,
3327 .elem_size = sizeof(u8),
3328 .array_type = NO_ARRAY,
3329 .tlv_type = 0x10,
3330 .offset = offsetof(struct
3331 wlfw_athdiag_read_resp_msg_v01,
3332 data_valid),
3333 },
3334 {
3335 .data_type = QMI_DATA_LEN,
3336 .elem_len = 1,
3337 .elem_size = sizeof(u16),
3338 .array_type = NO_ARRAY,
3339 .tlv_type = 0x10,
3340 .offset = offsetof(struct
3341 wlfw_athdiag_read_resp_msg_v01,
3342 data_len),
3343 },
3344 {
3345 .data_type = QMI_UNSIGNED_1_BYTE,
3346 .elem_len = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
3347 .elem_size = sizeof(u8),
3348 .array_type = VAR_LEN_ARRAY,
3349 .tlv_type = 0x10,
3350 .offset = offsetof(struct
3351 wlfw_athdiag_read_resp_msg_v01,
3352 data),
3353 },
3354 {
3355 .data_type = QMI_EOTI,
3356 .array_type = NO_ARRAY,
3357 .tlv_type = QMI_COMMON_TLV_TYPE,
3358 },
3359 };
3360 EXPORT_SYMBOL(wlfw_athdiag_read_resp_msg_v01_ei);
3361
3362 struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
3363 {
3364 .data_type = QMI_UNSIGNED_4_BYTE,
3365 .elem_len = 1,
3366 .elem_size = sizeof(u32),
3367 .array_type = NO_ARRAY,
3368 .tlv_type = 0x01,
3369 .offset = offsetof(struct
3370 wlfw_athdiag_write_req_msg_v01,
3371 offset),
3372 },
3373 {
3374 .data_type = QMI_UNSIGNED_4_BYTE,
3375 .elem_len = 1,
3376 .elem_size = sizeof(u32),
3377 .array_type = NO_ARRAY,
3378 .tlv_type = 0x02,
3379 .offset = offsetof(struct
3380 wlfw_athdiag_write_req_msg_v01,
3381 mem_type),
3382 },
3383 {
3384 .data_type = QMI_DATA_LEN,
3385 .elem_len = 1,
3386 .elem_size = sizeof(u16),
3387 .array_type = NO_ARRAY,
3388 .tlv_type = 0x03,
3389 .offset = offsetof(struct
3390 wlfw_athdiag_write_req_msg_v01,
3391 data_len),
3392 },
3393 {
3394 .data_type = QMI_UNSIGNED_1_BYTE,
3395 .elem_len = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
3396 .elem_size = sizeof(u8),
3397 .array_type = VAR_LEN_ARRAY,
3398 .tlv_type = 0x03,
3399 .offset = offsetof(struct
3400 wlfw_athdiag_write_req_msg_v01,
3401 data),
3402 },
3403 {
3404 .data_type = QMI_EOTI,
3405 .array_type = NO_ARRAY,
3406 .tlv_type = QMI_COMMON_TLV_TYPE,
3407 },
3408 };
3409 EXPORT_SYMBOL(wlfw_athdiag_write_req_msg_v01_ei);
3410
3411 struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
3412 {
3413 .data_type = QMI_STRUCT,
3414 .elem_len = 1,
3415 .elem_size = sizeof(struct qmi_response_type_v01),
3416 .array_type = NO_ARRAY,
3417 .tlv_type = 0x02,
3418 .offset = offsetof(struct
3419 wlfw_athdiag_write_resp_msg_v01,
3420 resp),
3421 .ei_array = qmi_response_type_v01_ei,
3422 },
3423 {
3424 .data_type = QMI_EOTI,
3425 .array_type = NO_ARRAY,
3426 .tlv_type = QMI_COMMON_TLV_TYPE,
3427 },
3428 };
3429 EXPORT_SYMBOL(wlfw_athdiag_write_resp_msg_v01_ei);
3430
3431 struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
3432 {
3433 .data_type = QMI_UNSIGNED_8_BYTE,
3434 .elem_len = 1,
3435 .elem_size = sizeof(u64),
3436 .array_type = NO_ARRAY,
3437 .tlv_type = 0x01,
3438 .offset = offsetof(struct
3439 wlfw_vbatt_req_msg_v01,
3440 voltage_uv),
3441 },
3442 {
3443 .data_type = QMI_EOTI,
3444 .array_type = NO_ARRAY,
3445 .tlv_type = QMI_COMMON_TLV_TYPE,
3446 },
3447 };
3448 EXPORT_SYMBOL(wlfw_vbatt_req_msg_v01_ei);
3449
3450 struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
3451 {
3452 .data_type = QMI_STRUCT,
3453 .elem_len = 1,
3454 .elem_size = sizeof(struct qmi_response_type_v01),
3455 .array_type = NO_ARRAY,
3456 .tlv_type = 0x02,
3457 .offset = offsetof(struct
3458 wlfw_vbatt_resp_msg_v01,
3459 resp),
3460 .ei_array = qmi_response_type_v01_ei,
3461 },
3462 {
3463 .data_type = QMI_EOTI,
3464 .array_type = NO_ARRAY,
3465 .tlv_type = QMI_COMMON_TLV_TYPE,
3466 },
3467 };
3468 EXPORT_SYMBOL(wlfw_vbatt_resp_msg_v01_ei);
3469
3470 struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
3471 {
3472 .data_type = QMI_OPT_FLAG,
3473 .elem_len = 1,
3474 .elem_size = sizeof(u8),
3475 .array_type = NO_ARRAY,
3476 .tlv_type = 0x10,
3477 .offset = offsetof(struct
3478 wlfw_mac_addr_req_msg_v01,
3479 mac_addr_valid),
3480 },
3481 {
3482 .data_type = QMI_UNSIGNED_1_BYTE,
3483 .elem_len = QMI_WLFW_MAC_ADDR_SIZE_V01,
3484 .elem_size = sizeof(u8),
3485 .array_type = STATIC_ARRAY,
3486 .tlv_type = 0x10,
3487 .offset = offsetof(struct
3488 wlfw_mac_addr_req_msg_v01,
3489 mac_addr),
3490 },
3491 {
3492 .data_type = QMI_EOTI,
3493 .array_type = NO_ARRAY,
3494 .tlv_type = QMI_COMMON_TLV_TYPE,
3495 },
3496 };
3497 EXPORT_SYMBOL(wlfw_mac_addr_req_msg_v01_ei);
3498
3499 struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
3500 {
3501 .data_type = QMI_STRUCT,
3502 .elem_len = 1,
3503 .elem_size = sizeof(struct qmi_response_type_v01),
3504 .array_type = NO_ARRAY,
3505 .tlv_type = 0x02,
3506 .offset = offsetof(struct
3507 wlfw_mac_addr_resp_msg_v01,
3508 resp),
3509 .ei_array = qmi_response_type_v01_ei,
3510 },
3511 {
3512 .data_type = QMI_EOTI,
3513 .array_type = NO_ARRAY,
3514 .tlv_type = QMI_COMMON_TLV_TYPE,
3515 },
3516 };
3517 EXPORT_SYMBOL(wlfw_mac_addr_resp_msg_v01_ei);
3518
3519 struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
3520 {
3521 .data_type = QMI_OPT_FLAG,
3522 .elem_len = 1,
3523 .elem_size = sizeof(u8),
3524 .array_type = NO_ARRAY,
3525 .tlv_type = 0x10,
3526 .offset = offsetof(struct
3527 wlfw_host_cap_req_msg_v01,
3528 num_clients_valid),
3529 },
3530 {
3531 .data_type = QMI_UNSIGNED_4_BYTE,
3532 .elem_len = 1,
3533 .elem_size = sizeof(u32),
3534 .array_type = NO_ARRAY,
3535 .tlv_type = 0x10,
3536 .offset = offsetof(struct
3537 wlfw_host_cap_req_msg_v01,
3538 num_clients),
3539 },
3540 {
3541 .data_type = QMI_OPT_FLAG,
3542 .elem_len = 1,
3543 .elem_size = sizeof(u8),
3544 .array_type = NO_ARRAY,
3545 .tlv_type = 0x11,
3546 .offset = offsetof(struct
3547 wlfw_host_cap_req_msg_v01,
3548 wake_msi_valid),
3549 },
3550 {
3551 .data_type = QMI_UNSIGNED_4_BYTE,
3552 .elem_len = 1,
3553 .elem_size = sizeof(u32),
3554 .array_type = NO_ARRAY,
3555 .tlv_type = 0x11,
3556 .offset = offsetof(struct
3557 wlfw_host_cap_req_msg_v01,
3558 wake_msi),
3559 },
3560 {
3561 .data_type = QMI_OPT_FLAG,
3562 .elem_len = 1,
3563 .elem_size = sizeof(u8),
3564 .array_type = NO_ARRAY,
3565 .tlv_type = 0x12,
3566 .offset = offsetof(struct
3567 wlfw_host_cap_req_msg_v01,
3568 gpios_valid),
3569 },
3570 {
3571 .data_type = QMI_DATA_LEN,
3572 .elem_len = 1,
3573 .elem_size = sizeof(u8),
3574 .array_type = NO_ARRAY,
3575 .tlv_type = 0x12,
3576 .offset = offsetof(struct
3577 wlfw_host_cap_req_msg_v01,
3578 gpios_len),
3579 },
3580 {
3581 .data_type = QMI_UNSIGNED_4_BYTE,
3582 .elem_len = QMI_WLFW_MAX_NUM_GPIO_V01,
3583 .elem_size = sizeof(u32),
3584 .array_type = VAR_LEN_ARRAY,
3585 .tlv_type = 0x12,
3586 .offset = offsetof(struct
3587 wlfw_host_cap_req_msg_v01,
3588 gpios),
3589 },
3590 {
3591 .data_type = QMI_OPT_FLAG,
3592 .elem_len = 1,
3593 .elem_size = sizeof(u8),
3594 .array_type = NO_ARRAY,
3595 .tlv_type = 0x13,
3596 .offset = offsetof(struct
3597 wlfw_host_cap_req_msg_v01,
3598 nm_modem_valid),
3599 },
3600 {
3601 .data_type = QMI_UNSIGNED_1_BYTE,
3602 .elem_len = 1,
3603 .elem_size = sizeof(u8),
3604 .array_type = NO_ARRAY,
3605 .tlv_type = 0x13,
3606 .offset = offsetof(struct
3607 wlfw_host_cap_req_msg_v01,
3608 nm_modem),
3609 },
3610 {
3611 .data_type = QMI_OPT_FLAG,
3612 .elem_len = 1,
3613 .elem_size = sizeof(u8),
3614 .array_type = NO_ARRAY,
3615 .tlv_type = 0x14,
3616 .offset = offsetof(struct
3617 wlfw_host_cap_req_msg_v01,
3618 bdf_support_valid),
3619 },
3620 {
3621 .data_type = QMI_UNSIGNED_1_BYTE,
3622 .elem_len = 1,
3623 .elem_size = sizeof(u8),
3624 .array_type = NO_ARRAY,
3625 .tlv_type = 0x14,
3626 .offset = offsetof(struct
3627 wlfw_host_cap_req_msg_v01,
3628 bdf_support),
3629 },
3630 {
3631 .data_type = QMI_OPT_FLAG,
3632 .elem_len = 1,
3633 .elem_size = sizeof(u8),
3634 .array_type = NO_ARRAY,
3635 .tlv_type = 0x15,
3636 .offset = offsetof(struct
3637 wlfw_host_cap_req_msg_v01,
3638 bdf_cache_support_valid),
3639 },
3640 {
3641 .data_type = QMI_UNSIGNED_1_BYTE,
3642 .elem_len = 1,
3643 .elem_size = sizeof(u8),
3644 .array_type = NO_ARRAY,
3645 .tlv_type = 0x15,
3646 .offset = offsetof(struct
3647 wlfw_host_cap_req_msg_v01,
3648 bdf_cache_support),
3649 },
3650 {
3651 .data_type = QMI_OPT_FLAG,
3652 .elem_len = 1,
3653 .elem_size = sizeof(u8),
3654 .array_type = NO_ARRAY,
3655 .tlv_type = 0x16,
3656 .offset = offsetof(struct
3657 wlfw_host_cap_req_msg_v01,
3658 m3_support_valid),
3659 },
3660 {
3661 .data_type = QMI_UNSIGNED_1_BYTE,
3662 .elem_len = 1,
3663 .elem_size = sizeof(u8),
3664 .array_type = NO_ARRAY,
3665 .tlv_type = 0x16,
3666 .offset = offsetof(struct
3667 wlfw_host_cap_req_msg_v01,
3668 m3_support),
3669 },
3670 {
3671 .data_type = QMI_OPT_FLAG,
3672 .elem_len = 1,
3673 .elem_size = sizeof(u8),
3674 .array_type = NO_ARRAY,
3675 .tlv_type = 0x17,
3676 .offset = offsetof(struct
3677 wlfw_host_cap_req_msg_v01,
3678 m3_cache_support_valid),
3679 },
3680 {
3681 .data_type = QMI_UNSIGNED_1_BYTE,
3682 .elem_len = 1,
3683 .elem_size = sizeof(u8),
3684 .array_type = NO_ARRAY,
3685 .tlv_type = 0x17,
3686 .offset = offsetof(struct
3687 wlfw_host_cap_req_msg_v01,
3688 m3_cache_support),
3689 },
3690 {
3691 .data_type = QMI_OPT_FLAG,
3692 .elem_len = 1,
3693 .elem_size = sizeof(u8),
3694 .array_type = NO_ARRAY,
3695 .tlv_type = 0x18,
3696 .offset = offsetof(struct
3697 wlfw_host_cap_req_msg_v01,
3698 cal_filesys_support_valid),
3699 },
3700 {
3701 .data_type = QMI_UNSIGNED_1_BYTE,
3702 .elem_len = 1,
3703 .elem_size = sizeof(u8),
3704 .array_type = NO_ARRAY,
3705 .tlv_type = 0x18,
3706 .offset = offsetof(struct
3707 wlfw_host_cap_req_msg_v01,
3708 cal_filesys_support),
3709 },
3710 {
3711 .data_type = QMI_OPT_FLAG,
3712 .elem_len = 1,
3713 .elem_size = sizeof(u8),
3714 .array_type = NO_ARRAY,
3715 .tlv_type = 0x19,
3716 .offset = offsetof(struct
3717 wlfw_host_cap_req_msg_v01,
3718 cal_cache_support_valid),
3719 },
3720 {
3721 .data_type = QMI_UNSIGNED_1_BYTE,
3722 .elem_len = 1,
3723 .elem_size = sizeof(u8),
3724 .array_type = NO_ARRAY,
3725 .tlv_type = 0x19,
3726 .offset = offsetof(struct
3727 wlfw_host_cap_req_msg_v01,
3728 cal_cache_support),
3729 },
3730 {
3731 .data_type = QMI_OPT_FLAG,
3732 .elem_len = 1,
3733 .elem_size = sizeof(u8),
3734 .array_type = NO_ARRAY,
3735 .tlv_type = 0x1A,
3736 .offset = offsetof(struct
3737 wlfw_host_cap_req_msg_v01,
3738 cal_done_valid),
3739 },
3740 {
3741 .data_type = QMI_UNSIGNED_1_BYTE,
3742 .elem_len = 1,
3743 .elem_size = sizeof(u8),
3744 .array_type = NO_ARRAY,
3745 .tlv_type = 0x1A,
3746 .offset = offsetof(struct
3747 wlfw_host_cap_req_msg_v01,
3748 cal_done),
3749 },
3750 {
3751 .data_type = QMI_OPT_FLAG,
3752 .elem_len = 1,
3753 .elem_size = sizeof(u8),
3754 .array_type = NO_ARRAY,
3755 .tlv_type = 0x1B,
3756 .offset = offsetof(struct
3757 wlfw_host_cap_req_msg_v01,
3758 mem_bucket_valid),
3759 },
3760 {
3761 .data_type = QMI_UNSIGNED_4_BYTE,
3762 .elem_len = 1,
3763 .elem_size = sizeof(u32),
3764 .array_type = NO_ARRAY,
3765 .tlv_type = 0x1B,
3766 .offset = offsetof(struct
3767 wlfw_host_cap_req_msg_v01,
3768 mem_bucket),
3769 },
3770 {
3771 .data_type = QMI_OPT_FLAG,
3772 .elem_len = 1,
3773 .elem_size = sizeof(u8),
3774 .array_type = NO_ARRAY,
3775 .tlv_type = 0x1C,
3776 .offset = offsetof(struct
3777 wlfw_host_cap_req_msg_v01,
3778 mem_cfg_mode_valid),
3779 },
3780 {
3781 .data_type = QMI_UNSIGNED_1_BYTE,
3782 .elem_len = 1,
3783 .elem_size = sizeof(u8),
3784 .array_type = NO_ARRAY,
3785 .tlv_type = 0x1C,
3786 .offset = offsetof(struct
3787 wlfw_host_cap_req_msg_v01,
3788 mem_cfg_mode),
3789 },
3790 {
3791 .data_type = QMI_OPT_FLAG,
3792 .elem_len = 1,
3793 .elem_size = sizeof(u8),
3794 .array_type = NO_ARRAY,
3795 .tlv_type = 0x1D,
3796 .offset = offsetof(struct
3797 wlfw_host_cap_req_msg_v01,
3798 cal_duration_valid),
3799 },
3800 {
3801 .data_type = QMI_UNSIGNED_2_BYTE,
3802 .elem_len = 1,
3803 .elem_size = sizeof(u16),
3804 .array_type = NO_ARRAY,
3805 .tlv_type = 0x1D,
3806 .offset = offsetof(struct
3807 wlfw_host_cap_req_msg_v01,
3808 cal_duration),
3809 },
3810 {
3811 .data_type = QMI_OPT_FLAG,
3812 .elem_len = 1,
3813 .elem_size = sizeof(u8),
3814 .array_type = NO_ARRAY,
3815 .tlv_type = 0x1E,
3816 .offset = offsetof(struct
3817 wlfw_host_cap_req_msg_v01,
3818 platform_name_valid),
3819 },
3820 {
3821 .data_type = QMI_STRING,
3822 .elem_len = QMI_WLFW_MAX_PLATFORM_NAME_LEN_V01 + 1,
3823 .elem_size = sizeof(char),
3824 .array_type = NO_ARRAY,
3825 .tlv_type = 0x1E,
3826 .offset = offsetof(struct
3827 wlfw_host_cap_req_msg_v01,
3828 platform_name),
3829 },
3830 {
3831 .data_type = QMI_OPT_FLAG,
3832 .elem_len = 1,
3833 .elem_size = sizeof(u8),
3834 .array_type = NO_ARRAY,
3835 .tlv_type = 0x1F,
3836 .offset = offsetof(struct
3837 wlfw_host_cap_req_msg_v01,
3838 ddr_range_valid),
3839 },
3840 {
3841 .data_type = QMI_STRUCT,
3842 .elem_len = QMI_WLFW_MAX_HOST_DDR_RANGE_SIZE_V01,
3843 .elem_size = sizeof(struct wlfw_host_ddr_range_s_v01),
3844 .array_type = STATIC_ARRAY,
3845 .tlv_type = 0x1F,
3846 .offset = offsetof(struct
3847 wlfw_host_cap_req_msg_v01,
3848 ddr_range),
3849 .ei_array = wlfw_host_ddr_range_s_v01_ei,
3850 },
3851 {
3852 .data_type = QMI_OPT_FLAG,
3853 .elem_len = 1,
3854 .elem_size = sizeof(u8),
3855 .array_type = NO_ARRAY,
3856 .tlv_type = 0x20,
3857 .offset = offsetof(struct
3858 wlfw_host_cap_req_msg_v01,
3859 host_build_type_valid),
3860 },
3861 {
3862 .data_type = QMI_SIGNED_4_BYTE_ENUM,
3863 .elem_len = 1,
3864 .elem_size = sizeof(enum wlfw_host_build_type_v01),
3865 .array_type = NO_ARRAY,
3866 .tlv_type = 0x20,
3867 .offset = offsetof(struct
3868 wlfw_host_cap_req_msg_v01,
3869 host_build_type),
3870 },
3871 {
3872 .data_type = QMI_OPT_FLAG,
3873 .elem_len = 1,
3874 .elem_size = sizeof(u8),
3875 .array_type = NO_ARRAY,
3876 .tlv_type = 0x21,
3877 .offset = offsetof(struct
3878 wlfw_host_cap_req_msg_v01,
3879 mlo_capable_valid),
3880 },
3881 {
3882 .data_type = QMI_UNSIGNED_1_BYTE,
3883 .elem_len = 1,
3884 .elem_size = sizeof(u8),
3885 .array_type = NO_ARRAY,
3886 .tlv_type = 0x21,
3887 .offset = offsetof(struct
3888 wlfw_host_cap_req_msg_v01,
3889 mlo_capable),
3890 },
3891 {
3892 .data_type = QMI_OPT_FLAG,
3893 .elem_len = 1,
3894 .elem_size = sizeof(u8),
3895 .array_type = NO_ARRAY,
3896 .tlv_type = 0x22,
3897 .offset = offsetof(struct
3898 wlfw_host_cap_req_msg_v01,
3899 mlo_chip_id_valid),
3900 },
3901 {
3902 .data_type = QMI_UNSIGNED_2_BYTE,
3903 .elem_len = 1,
3904 .elem_size = sizeof(u16),
3905 .array_type = NO_ARRAY,
3906 .tlv_type = 0x22,
3907 .offset = offsetof(struct
3908 wlfw_host_cap_req_msg_v01,
3909 mlo_chip_id),
3910 },
3911 {
3912 .data_type = QMI_OPT_FLAG,
3913 .elem_len = 1,
3914 .elem_size = sizeof(u8),
3915 .array_type = NO_ARRAY,
3916 .tlv_type = 0x23,
3917 .offset = offsetof(struct
3918 wlfw_host_cap_req_msg_v01,
3919 mlo_group_id_valid),
3920 },
3921 {
3922 .data_type = QMI_UNSIGNED_1_BYTE,
3923 .elem_len = 1,
3924 .elem_size = sizeof(u8),
3925 .array_type = NO_ARRAY,
3926 .tlv_type = 0x23,
3927 .offset = offsetof(struct
3928 wlfw_host_cap_req_msg_v01,
3929 mlo_group_id),
3930 },
3931 {
3932 .data_type = QMI_OPT_FLAG,
3933 .elem_len = 1,
3934 .elem_size = sizeof(u8),
3935 .array_type = NO_ARRAY,
3936 .tlv_type = 0x24,
3937 .offset = offsetof(struct
3938 wlfw_host_cap_req_msg_v01,
3939 max_mlo_peer_valid),
3940 },
3941 {
3942 .data_type = QMI_UNSIGNED_2_BYTE,
3943 .elem_len = 1,
3944 .elem_size = sizeof(u16),
3945 .array_type = NO_ARRAY,
3946 .tlv_type = 0x24,
3947 .offset = offsetof(struct
3948 wlfw_host_cap_req_msg_v01,
3949 max_mlo_peer),
3950 },
3951 {
3952 .data_type = QMI_OPT_FLAG,
3953 .elem_len = 1,
3954 .elem_size = sizeof(u8),
3955 .array_type = NO_ARRAY,
3956 .tlv_type = 0x25,
3957 .offset = offsetof(struct
3958 wlfw_host_cap_req_msg_v01,
3959 mlo_num_chips_valid),
3960 },
3961 {
3962 .data_type = QMI_UNSIGNED_1_BYTE,
3963 .elem_len = 1,
3964 .elem_size = sizeof(u8),
3965 .array_type = NO_ARRAY,
3966 .tlv_type = 0x25,
3967 .offset = offsetof(struct
3968 wlfw_host_cap_req_msg_v01,
3969 mlo_num_chips),
3970 },
3971 {
3972 .data_type = QMI_OPT_FLAG,
3973 .elem_len = 1,
3974 .elem_size = sizeof(u8),
3975 .array_type = NO_ARRAY,
3976 .tlv_type = 0x26,
3977 .offset = offsetof(struct
3978 wlfw_host_cap_req_msg_v01,
3979 mlo_chip_info_valid),
3980 },
3981 {
3982 .data_type = QMI_STRUCT,
3983 .elem_len = QMI_WLFW_MAX_MLO_CHIP_V01,
3984 .elem_size = sizeof(struct mlo_chip_info_s_v01),
3985 .array_type = STATIC_ARRAY,
3986 .tlv_type = 0x26,
3987 .offset = offsetof(struct
3988 wlfw_host_cap_req_msg_v01,
3989 mlo_chip_info),
3990 .ei_array = mlo_chip_info_s_v01_ei,
3991 },
3992 {
3993 .data_type = QMI_OPT_FLAG,
3994 .elem_len = 1,
3995 .elem_size = sizeof(u8),
3996 .array_type = NO_ARRAY,
3997 .tlv_type = 0x27,
3998 .offset = offsetof(struct
3999 wlfw_host_cap_req_msg_v01,
4000 feature_list_valid),
4001 },
4002 {
4003 .data_type = QMI_UNSIGNED_8_BYTE,
4004 .elem_len = 1,
4005 .elem_size = sizeof(u64),
4006 .array_type = NO_ARRAY,
4007 .tlv_type = 0x27,
4008 .offset = offsetof(struct
4009 wlfw_host_cap_req_msg_v01,
4010 feature_list),
4011 },
4012 {
4013 .data_type = QMI_OPT_FLAG,
4014 .elem_len = 1,
4015 .elem_size = sizeof(u8),
4016 .array_type = NO_ARRAY,
4017 .tlv_type = 0x28,
4018 .offset = offsetof(struct
4019 wlfw_host_cap_req_msg_v01,
4020 num_wlan_clients_valid),
4021 },
4022 {
4023 .data_type = QMI_UNSIGNED_2_BYTE,
4024 .elem_len = 1,
4025 .elem_size = sizeof(u16),
4026 .array_type = NO_ARRAY,
4027 .tlv_type = 0x28,
4028 .offset = offsetof(struct
4029 wlfw_host_cap_req_msg_v01,
4030 num_wlan_clients),
4031 },
4032 {
4033 .data_type = QMI_OPT_FLAG,
4034 .elem_len = 1,
4035 .elem_size = sizeof(u8),
4036 .array_type = NO_ARRAY,
4037 .tlv_type = 0x29,
4038 .offset = offsetof(struct
4039 wlfw_host_cap_req_msg_v01,
4040 num_wlan_vaps_valid),
4041 },
4042 {
4043 .data_type = QMI_UNSIGNED_1_BYTE,
4044 .elem_len = 1,
4045 .elem_size = sizeof(u8),
4046 .array_type = NO_ARRAY,
4047 .tlv_type = 0x29,
4048 .offset = offsetof(struct
4049 wlfw_host_cap_req_msg_v01,
4050 num_wlan_vaps),
4051 },
4052 {
4053 .data_type = QMI_OPT_FLAG,
4054 .elem_len = 1,
4055 .elem_size = sizeof(u8),
4056 .array_type = NO_ARRAY,
4057 .tlv_type = 0x2A,
4058 .offset = offsetof(struct
4059 wlfw_host_cap_req_msg_v01,
4060 wake_msi_addr_valid),
4061 },
4062 {
4063 .data_type = QMI_UNSIGNED_4_BYTE,
4064 .elem_len = 1,
4065 .elem_size = sizeof(u32),
4066 .array_type = NO_ARRAY,
4067 .tlv_type = 0x2A,
4068 .offset = offsetof(struct
4069 wlfw_host_cap_req_msg_v01,
4070 wake_msi_addr),
4071 },
4072 {
4073 .data_type = QMI_OPT_FLAG,
4074 .elem_len = 1,
4075 .elem_size = sizeof(u8),
4076 .array_type = NO_ARRAY,
4077 .tlv_type = 0x2B,
4078 .offset = offsetof(struct
4079 wlfw_host_cap_req_msg_v01,
4080 wlan_enable_delay_valid),
4081 },
4082 {
4083 .data_type = QMI_UNSIGNED_4_BYTE,
4084 .elem_len = 1,
4085 .elem_size = sizeof(u32),
4086 .array_type = NO_ARRAY,
4087 .tlv_type = 0x2B,
4088 .offset = offsetof(struct
4089 wlfw_host_cap_req_msg_v01,
4090 wlan_enable_delay),
4091 },
4092 {
4093 .data_type = QMI_OPT_FLAG,
4094 .elem_len = 1,
4095 .elem_size = sizeof(u8),
4096 .array_type = NO_ARRAY,
4097 .tlv_type = 0x2C,
4098 .offset = offsetof(struct
4099 wlfw_host_cap_req_msg_v01,
4100 ddr_type_valid),
4101 },
4102 {
4103 .data_type = QMI_UNSIGNED_4_BYTE,
4104 .elem_len = 1,
4105 .elem_size = sizeof(u32),
4106 .array_type = NO_ARRAY,
4107 .tlv_type = 0x2C,
4108 .offset = offsetof(struct
4109 wlfw_host_cap_req_msg_v01,
4110 ddr_type),
4111 },
4112 {
4113 .data_type = QMI_OPT_FLAG,
4114 .elem_len = 1,
4115 .elem_size = sizeof(u8),
4116 .array_type = NO_ARRAY,
4117 .tlv_type = 0x2D,
4118 .offset = offsetof(struct
4119 wlfw_host_cap_req_msg_v01,
4120 gpio_info_valid),
4121 },
4122 {
4123 .data_type = QMI_DATA_LEN,
4124 .elem_len = 1,
4125 .elem_size = sizeof(u8),
4126 .array_type = NO_ARRAY,
4127 .tlv_type = 0x2D,
4128 .offset = offsetof(struct
4129 wlfw_host_cap_req_msg_v01,
4130 gpio_info_len),
4131 },
4132 {
4133 .data_type = QMI_UNSIGNED_4_BYTE,
4134 .elem_len = QMI_WLFW_MAX_NUM_GPIO_INFO_V01,
4135 .elem_size = sizeof(u32),
4136 .array_type = VAR_LEN_ARRAY,
4137 .tlv_type = 0x2D,
4138 .offset = offsetof(struct
4139 wlfw_host_cap_req_msg_v01,
4140 gpio_info),
4141 },
4142 {
4143 .data_type = QMI_OPT_FLAG,
4144 .elem_len = 1,
4145 .elem_size = sizeof(u8),
4146 .array_type = NO_ARRAY,
4147 .tlv_type = 0x2E,
4148 .offset = offsetof(struct
4149 wlfw_host_cap_req_msg_v01,
4150 fw_ini_cfg_support_valid),
4151 },
4152 {
4153 .data_type = QMI_UNSIGNED_1_BYTE,
4154 .elem_len = 1,
4155 .elem_size = sizeof(u8),
4156 .array_type = NO_ARRAY,
4157 .tlv_type = 0x2E,
4158 .offset = offsetof(struct
4159 wlfw_host_cap_req_msg_v01,
4160 fw_ini_cfg_support),
4161 },
4162 {
4163 .data_type = QMI_OPT_FLAG,
4164 .elem_len = 1,
4165 .elem_size = sizeof(u8),
4166 .array_type = NO_ARRAY,
4167 .tlv_type = 0x2F,
4168 .offset = offsetof(struct
4169 wlfw_host_cap_req_msg_v01,
4170 mlo_chip_v2_info_valid),
4171 },
4172 {
4173 .data_type = QMI_STRUCT,
4174 .elem_len = QMI_WLFW_MLO_V2_CHP_V01,
4175 .elem_size = sizeof(struct mlo_chip_v2_info_s_v01),
4176 .array_type = STATIC_ARRAY,
4177 .tlv_type = 0x2F,
4178 .offset = offsetof(struct
4179 wlfw_host_cap_req_msg_v01,
4180 mlo_chip_v2_info),
4181 .ei_array = mlo_chip_v2_info_s_v01_ei,
4182 },
4183 {
4184 .data_type = QMI_OPT_FLAG,
4185 .elem_len = 1,
4186 .elem_size = sizeof(u8),
4187 .array_type = NO_ARRAY,
4188 .tlv_type = 0x30,
4189 .offset = offsetof(struct
4190 wlfw_host_cap_req_msg_v01,
4191 pcie_link_info_valid),
4192 },
4193 {
4194 .data_type = QMI_STRUCT,
4195 .elem_len = 1,
4196 .elem_size = sizeof(struct wlfw_host_pcie_link_info_s_v01),
4197 .array_type = NO_ARRAY,
4198 .tlv_type = 0x30,
4199 .offset = offsetof(struct
4200 wlfw_host_cap_req_msg_v01,
4201 pcie_link_info),
4202 .ei_array = wlfw_host_pcie_link_info_s_v01_ei,
4203 },
4204 {
4205 .data_type = QMI_EOTI,
4206 .array_type = NO_ARRAY,
4207 .tlv_type = QMI_COMMON_TLV_TYPE,
4208 },
4209 };
4210 EXPORT_SYMBOL(wlfw_host_cap_req_msg_v01_ei);
4211
4212 struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
4213 {
4214 .data_type = QMI_STRUCT,
4215 .elem_len = 1,
4216 .elem_size = sizeof(struct qmi_response_type_v01),
4217 .array_type = NO_ARRAY,
4218 .tlv_type = 0x02,
4219 .offset = offsetof(struct
4220 wlfw_host_cap_resp_msg_v01,
4221 resp),
4222 .ei_array = qmi_response_type_v01_ei,
4223 },
4224 {
4225 .data_type = QMI_EOTI,
4226 .array_type = NO_ARRAY,
4227 .tlv_type = QMI_COMMON_TLV_TYPE,
4228 },
4229 };
4230 EXPORT_SYMBOL(wlfw_host_cap_resp_msg_v01_ei);
4231
4232 struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
4233 {
4234 .data_type = QMI_DATA_LEN,
4235 .elem_len = 1,
4236 .elem_size = sizeof(u8),
4237 .array_type = NO_ARRAY,
4238 .tlv_type = 0x01,
4239 .offset = offsetof(struct
4240 wlfw_request_mem_ind_msg_v01,
4241 mem_seg_len),
4242 },
4243 {
4244 .data_type = QMI_STRUCT,
4245 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
4246 .elem_size = sizeof(struct wlfw_mem_seg_s_v01),
4247 .array_type = VAR_LEN_ARRAY,
4248 .tlv_type = 0x01,
4249 .offset = offsetof(struct
4250 wlfw_request_mem_ind_msg_v01,
4251 mem_seg),
4252 .ei_array = wlfw_mem_seg_s_v01_ei,
4253 },
4254 {
4255 .data_type = QMI_EOTI,
4256 .array_type = NO_ARRAY,
4257 .tlv_type = QMI_COMMON_TLV_TYPE,
4258 },
4259 };
4260 EXPORT_SYMBOL(wlfw_request_mem_ind_msg_v01_ei);
4261
4262 struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
4263 {
4264 .data_type = QMI_DATA_LEN,
4265 .elem_len = 1,
4266 .elem_size = sizeof(u8),
4267 .array_type = NO_ARRAY,
4268 .tlv_type = 0x01,
4269 .offset = offsetof(struct
4270 wlfw_respond_mem_req_msg_v01,
4271 mem_seg_len),
4272 },
4273 {
4274 .data_type = QMI_STRUCT,
4275 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
4276 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01),
4277 .array_type = VAR_LEN_ARRAY,
4278 .tlv_type = 0x01,
4279 .offset = offsetof(struct
4280 wlfw_respond_mem_req_msg_v01,
4281 mem_seg),
4282 .ei_array = wlfw_mem_seg_resp_s_v01_ei,
4283 },
4284 {
4285 .data_type = QMI_EOTI,
4286 .array_type = NO_ARRAY,
4287 .tlv_type = QMI_COMMON_TLV_TYPE,
4288 },
4289 };
4290 EXPORT_SYMBOL(wlfw_respond_mem_req_msg_v01_ei);
4291
4292 struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
4293 {
4294 .data_type = QMI_STRUCT,
4295 .elem_len = 1,
4296 .elem_size = sizeof(struct qmi_response_type_v01),
4297 .array_type = NO_ARRAY,
4298 .tlv_type = 0x02,
4299 .offset = offsetof(struct
4300 wlfw_respond_mem_resp_msg_v01,
4301 resp),
4302 .ei_array = qmi_response_type_v01_ei,
4303 },
4304 {
4305 .data_type = QMI_OPT_FLAG,
4306 .elem_len = 1,
4307 .elem_size = sizeof(u8),
4308 .array_type = NO_ARRAY,
4309 .tlv_type = 0x10,
4310 .offset = offsetof(struct
4311 wlfw_respond_mem_resp_msg_v01,
4312 share_mem_valid),
4313 },
4314 {
4315 .data_type = QMI_DATA_LEN,
4316 .elem_len = 1,
4317 .elem_size = sizeof(u8),
4318 .array_type = NO_ARRAY,
4319 .tlv_type = 0x10,
4320 .offset = offsetof(struct
4321 wlfw_respond_mem_resp_msg_v01,
4322 share_mem_len),
4323 },
4324 {
4325 .data_type = QMI_STRUCT,
4326 .elem_len = QMI_WLFW_MAX_NUM_SHARE_MEM_V01,
4327 .elem_size = sizeof(struct wlfw_share_mem_info_s_v01),
4328 .array_type = VAR_LEN_ARRAY,
4329 .tlv_type = 0x10,
4330 .offset = offsetof(struct
4331 wlfw_respond_mem_resp_msg_v01,
4332 share_mem),
4333 .ei_array = wlfw_share_mem_info_s_v01_ei,
4334 },
4335 {
4336 .data_type = QMI_EOTI,
4337 .array_type = NO_ARRAY,
4338 .tlv_type = QMI_COMMON_TLV_TYPE,
4339 },
4340 };
4341 EXPORT_SYMBOL(wlfw_respond_mem_resp_msg_v01_ei);
4342
4343 struct qmi_elem_info wlfw_fw_mem_ready_ind_msg_v01_ei[] = {
4344 {
4345 .data_type = QMI_EOTI,
4346 .array_type = NO_ARRAY,
4347 .tlv_type = QMI_COMMON_TLV_TYPE,
4348 },
4349 };
4350 EXPORT_SYMBOL(wlfw_fw_mem_ready_ind_msg_v01_ei);
4351
4352 struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
4353 {
4354 .data_type = QMI_OPT_FLAG,
4355 .elem_len = 1,
4356 .elem_size = sizeof(u8),
4357 .array_type = NO_ARRAY,
4358 .tlv_type = 0x10,
4359 .offset = offsetof(struct
4360 wlfw_fw_init_done_ind_msg_v01,
4361 hang_data_addr_offset_valid),
4362 },
4363 {
4364 .data_type = QMI_UNSIGNED_4_BYTE,
4365 .elem_len = 1,
4366 .elem_size = sizeof(u32),
4367 .array_type = NO_ARRAY,
4368 .tlv_type = 0x10,
4369 .offset = offsetof(struct
4370 wlfw_fw_init_done_ind_msg_v01,
4371 hang_data_addr_offset),
4372 },
4373 {
4374 .data_type = QMI_OPT_FLAG,
4375 .elem_len = 1,
4376 .elem_size = sizeof(u8),
4377 .array_type = NO_ARRAY,
4378 .tlv_type = 0x11,
4379 .offset = offsetof(struct
4380 wlfw_fw_init_done_ind_msg_v01,
4381 hang_data_length_valid),
4382 },
4383 {
4384 .data_type = QMI_UNSIGNED_2_BYTE,
4385 .elem_len = 1,
4386 .elem_size = sizeof(u16),
4387 .array_type = NO_ARRAY,
4388 .tlv_type = 0x11,
4389 .offset = offsetof(struct
4390 wlfw_fw_init_done_ind_msg_v01,
4391 hang_data_length),
4392 },
4393 {
4394 .data_type = QMI_OPT_FLAG,
4395 .elem_len = 1,
4396 .elem_size = sizeof(u8),
4397 .array_type = NO_ARRAY,
4398 .tlv_type = 0x12,
4399 .offset = offsetof(struct
4400 wlfw_fw_init_done_ind_msg_v01,
4401 soft_sku_features_valid),
4402 },
4403 {
4404 .data_type = QMI_UNSIGNED_8_BYTE,
4405 .elem_len = 1,
4406 .elem_size = sizeof(u64),
4407 .array_type = NO_ARRAY,
4408 .tlv_type = 0x12,
4409 .offset = offsetof(struct
4410 wlfw_fw_init_done_ind_msg_v01,
4411 soft_sku_features),
4412 },
4413 {
4414 .data_type = QMI_EOTI,
4415 .array_type = NO_ARRAY,
4416 .tlv_type = QMI_COMMON_TLV_TYPE,
4417 },
4418 };
4419 EXPORT_SYMBOL(wlfw_fw_init_done_ind_msg_v01_ei);
4420
4421 struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
4422 {
4423 .data_type = QMI_OPT_FLAG,
4424 .elem_len = 1,
4425 .elem_size = sizeof(u8),
4426 .array_type = NO_ARRAY,
4427 .tlv_type = 0x10,
4428 .offset = offsetof(struct
4429 wlfw_rejuvenate_ind_msg_v01,
4430 cause_for_rejuvenation_valid),
4431 },
4432 {
4433 .data_type = QMI_UNSIGNED_1_BYTE,
4434 .elem_len = 1,
4435 .elem_size = sizeof(u8),
4436 .array_type = NO_ARRAY,
4437 .tlv_type = 0x10,
4438 .offset = offsetof(struct
4439 wlfw_rejuvenate_ind_msg_v01,
4440 cause_for_rejuvenation),
4441 },
4442 {
4443 .data_type = QMI_OPT_FLAG,
4444 .elem_len = 1,
4445 .elem_size = sizeof(u8),
4446 .array_type = NO_ARRAY,
4447 .tlv_type = 0x11,
4448 .offset = offsetof(struct
4449 wlfw_rejuvenate_ind_msg_v01,
4450 requesting_sub_system_valid),
4451 },
4452 {
4453 .data_type = QMI_UNSIGNED_1_BYTE,
4454 .elem_len = 1,
4455 .elem_size = sizeof(u8),
4456 .array_type = NO_ARRAY,
4457 .tlv_type = 0x11,
4458 .offset = offsetof(struct
4459 wlfw_rejuvenate_ind_msg_v01,
4460 requesting_sub_system),
4461 },
4462 {
4463 .data_type = QMI_OPT_FLAG,
4464 .elem_len = 1,
4465 .elem_size = sizeof(u8),
4466 .array_type = NO_ARRAY,
4467 .tlv_type = 0x12,
4468 .offset = offsetof(struct
4469 wlfw_rejuvenate_ind_msg_v01,
4470 line_number_valid),
4471 },
4472 {
4473 .data_type = QMI_UNSIGNED_2_BYTE,
4474 .elem_len = 1,
4475 .elem_size = sizeof(u16),
4476 .array_type = NO_ARRAY,
4477 .tlv_type = 0x12,
4478 .offset = offsetof(struct
4479 wlfw_rejuvenate_ind_msg_v01,
4480 line_number),
4481 },
4482 {
4483 .data_type = QMI_OPT_FLAG,
4484 .elem_len = 1,
4485 .elem_size = sizeof(u8),
4486 .array_type = NO_ARRAY,
4487 .tlv_type = 0x13,
4488 .offset = offsetof(struct
4489 wlfw_rejuvenate_ind_msg_v01,
4490 function_name_valid),
4491 },
4492 {
4493 .data_type = QMI_STRING,
4494 .elem_len = QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1,
4495 .elem_size = sizeof(char),
4496 .array_type = NO_ARRAY,
4497 .tlv_type = 0x13,
4498 .offset = offsetof(struct
4499 wlfw_rejuvenate_ind_msg_v01,
4500 function_name),
4501 },
4502 {
4503 .data_type = QMI_EOTI,
4504 .array_type = NO_ARRAY,
4505 .tlv_type = QMI_COMMON_TLV_TYPE,
4506 },
4507 };
4508 EXPORT_SYMBOL(wlfw_rejuvenate_ind_msg_v01_ei);
4509
4510 struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
4511 {
4512 .data_type = QMI_EOTI,
4513 .array_type = NO_ARRAY,
4514 .tlv_type = QMI_COMMON_TLV_TYPE,
4515 },
4516 };
4517 EXPORT_SYMBOL(wlfw_rejuvenate_ack_req_msg_v01_ei);
4518
4519 struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
4520 {
4521 .data_type = QMI_STRUCT,
4522 .elem_len = 1,
4523 .elem_size = sizeof(struct qmi_response_type_v01),
4524 .array_type = NO_ARRAY,
4525 .tlv_type = 0x02,
4526 .offset = offsetof(struct
4527 wlfw_rejuvenate_ack_resp_msg_v01,
4528 resp),
4529 .ei_array = qmi_response_type_v01_ei,
4530 },
4531 {
4532 .data_type = QMI_EOTI,
4533 .array_type = NO_ARRAY,
4534 .tlv_type = QMI_COMMON_TLV_TYPE,
4535 },
4536 };
4537 EXPORT_SYMBOL(wlfw_rejuvenate_ack_resp_msg_v01_ei);
4538
4539 struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
4540 {
4541 .data_type = QMI_OPT_FLAG,
4542 .elem_len = 1,
4543 .elem_size = sizeof(u8),
4544 .array_type = NO_ARRAY,
4545 .tlv_type = 0x10,
4546 .offset = offsetof(struct
4547 wlfw_dynamic_feature_mask_req_msg_v01,
4548 mask_valid),
4549 },
4550 {
4551 .data_type = QMI_UNSIGNED_8_BYTE,
4552 .elem_len = 1,
4553 .elem_size = sizeof(u64),
4554 .array_type = NO_ARRAY,
4555 .tlv_type = 0x10,
4556 .offset = offsetof(struct
4557 wlfw_dynamic_feature_mask_req_msg_v01,
4558 mask),
4559 },
4560 {
4561 .data_type = QMI_EOTI,
4562 .array_type = NO_ARRAY,
4563 .tlv_type = QMI_COMMON_TLV_TYPE,
4564 },
4565 };
4566 EXPORT_SYMBOL(wlfw_dynamic_feature_mask_req_msg_v01_ei);
4567
4568 struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
4569 {
4570 .data_type = QMI_STRUCT,
4571 .elem_len = 1,
4572 .elem_size = sizeof(struct qmi_response_type_v01),
4573 .array_type = NO_ARRAY,
4574 .tlv_type = 0x02,
4575 .offset = offsetof(struct
4576 wlfw_dynamic_feature_mask_resp_msg_v01,
4577 resp),
4578 .ei_array = qmi_response_type_v01_ei,
4579 },
4580 {
4581 .data_type = QMI_OPT_FLAG,
4582 .elem_len = 1,
4583 .elem_size = sizeof(u8),
4584 .array_type = NO_ARRAY,
4585 .tlv_type = 0x10,
4586 .offset = offsetof(struct
4587 wlfw_dynamic_feature_mask_resp_msg_v01,
4588 prev_mask_valid),
4589 },
4590 {
4591 .data_type = QMI_UNSIGNED_8_BYTE,
4592 .elem_len = 1,
4593 .elem_size = sizeof(u64),
4594 .array_type = NO_ARRAY,
4595 .tlv_type = 0x10,
4596 .offset = offsetof(struct
4597 wlfw_dynamic_feature_mask_resp_msg_v01,
4598 prev_mask),
4599 },
4600 {
4601 .data_type = QMI_OPT_FLAG,
4602 .elem_len = 1,
4603 .elem_size = sizeof(u8),
4604 .array_type = NO_ARRAY,
4605 .tlv_type = 0x11,
4606 .offset = offsetof(struct
4607 wlfw_dynamic_feature_mask_resp_msg_v01,
4608 curr_mask_valid),
4609 },
4610 {
4611 .data_type = QMI_UNSIGNED_8_BYTE,
4612 .elem_len = 1,
4613 .elem_size = sizeof(u64),
4614 .array_type = NO_ARRAY,
4615 .tlv_type = 0x11,
4616 .offset = offsetof(struct
4617 wlfw_dynamic_feature_mask_resp_msg_v01,
4618 curr_mask),
4619 },
4620 {
4621 .data_type = QMI_EOTI,
4622 .array_type = NO_ARRAY,
4623 .tlv_type = QMI_COMMON_TLV_TYPE,
4624 },
4625 };
4626 EXPORT_SYMBOL(wlfw_dynamic_feature_mask_resp_msg_v01_ei);
4627
4628 struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
4629 {
4630 .data_type = QMI_UNSIGNED_8_BYTE,
4631 .elem_len = 1,
4632 .elem_size = sizeof(u64),
4633 .array_type = NO_ARRAY,
4634 .tlv_type = 0x01,
4635 .offset = offsetof(struct
4636 wlfw_m3_info_req_msg_v01,
4637 addr),
4638 },
4639 {
4640 .data_type = QMI_UNSIGNED_4_BYTE,
4641 .elem_len = 1,
4642 .elem_size = sizeof(u32),
4643 .array_type = NO_ARRAY,
4644 .tlv_type = 0x02,
4645 .offset = offsetof(struct
4646 wlfw_m3_info_req_msg_v01,
4647 size),
4648 },
4649 {
4650 .data_type = QMI_EOTI,
4651 .array_type = NO_ARRAY,
4652 .tlv_type = QMI_COMMON_TLV_TYPE,
4653 },
4654 };
4655 EXPORT_SYMBOL(wlfw_m3_info_req_msg_v01_ei);
4656
4657 struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
4658 {
4659 .data_type = QMI_STRUCT,
4660 .elem_len = 1,
4661 .elem_size = sizeof(struct qmi_response_type_v01),
4662 .array_type = NO_ARRAY,
4663 .tlv_type = 0x02,
4664 .offset = offsetof(struct
4665 wlfw_m3_info_resp_msg_v01,
4666 resp),
4667 .ei_array = qmi_response_type_v01_ei,
4668 },
4669 {
4670 .data_type = QMI_EOTI,
4671 .array_type = NO_ARRAY,
4672 .tlv_type = QMI_COMMON_TLV_TYPE,
4673 },
4674 };
4675 EXPORT_SYMBOL(wlfw_m3_info_resp_msg_v01_ei);
4676
4677 struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
4678 {
4679 .data_type = QMI_UNSIGNED_1_BYTE,
4680 .elem_len = 1,
4681 .elem_size = sizeof(u8),
4682 .array_type = NO_ARRAY,
4683 .tlv_type = 0x01,
4684 .offset = offsetof(struct
4685 wlfw_xo_cal_ind_msg_v01,
4686 xo_cal_data),
4687 },
4688 {
4689 .data_type = QMI_EOTI,
4690 .array_type = NO_ARRAY,
4691 .tlv_type = QMI_COMMON_TLV_TYPE,
4692 },
4693 };
4694 EXPORT_SYMBOL(wlfw_xo_cal_ind_msg_v01_ei);
4695
4696 struct qmi_elem_info wlfw_cal_done_ind_msg_v01_ei[] = {
4697 {
4698 .data_type = QMI_OPT_FLAG,
4699 .elem_len = 1,
4700 .elem_size = sizeof(u8),
4701 .array_type = NO_ARRAY,
4702 .tlv_type = 0x10,
4703 .offset = offsetof(struct
4704 wlfw_cal_done_ind_msg_v01,
4705 cal_file_upload_size_valid),
4706 },
4707 {
4708 .data_type = QMI_UNSIGNED_8_BYTE,
4709 .elem_len = 1,
4710 .elem_size = sizeof(u64),
4711 .array_type = NO_ARRAY,
4712 .tlv_type = 0x10,
4713 .offset = offsetof(struct
4714 wlfw_cal_done_ind_msg_v01,
4715 cal_file_upload_size),
4716 },
4717 {
4718 .data_type = QMI_EOTI,
4719 .array_type = NO_ARRAY,
4720 .tlv_type = QMI_COMMON_TLV_TYPE,
4721 },
4722 };
4723 EXPORT_SYMBOL(wlfw_cal_done_ind_msg_v01_ei);
4724
4725 struct qmi_elem_info wlfw_qdss_trace_req_mem_ind_msg_v01_ei[] = {
4726 {
4727 .data_type = QMI_DATA_LEN,
4728 .elem_len = 1,
4729 .elem_size = sizeof(u8),
4730 .array_type = NO_ARRAY,
4731 .tlv_type = 0x01,
4732 .offset = offsetof(struct
4733 wlfw_qdss_trace_req_mem_ind_msg_v01,
4734 mem_seg_len),
4735 },
4736 {
4737 .data_type = QMI_STRUCT,
4738 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
4739 .elem_size = sizeof(struct wlfw_mem_seg_s_v01),
4740 .array_type = VAR_LEN_ARRAY,
4741 .tlv_type = 0x01,
4742 .offset = offsetof(struct
4743 wlfw_qdss_trace_req_mem_ind_msg_v01,
4744 mem_seg),
4745 .ei_array = wlfw_mem_seg_s_v01_ei,
4746 },
4747 {
4748 .data_type = QMI_EOTI,
4749 .array_type = NO_ARRAY,
4750 .tlv_type = QMI_COMMON_TLV_TYPE,
4751 },
4752 };
4753 EXPORT_SYMBOL(wlfw_qdss_trace_req_mem_ind_msg_v01_ei);
4754
4755 struct qmi_elem_info wlfw_qdss_trace_mem_info_req_msg_v01_ei[] = {
4756 {
4757 .data_type = QMI_DATA_LEN,
4758 .elem_len = 1,
4759 .elem_size = sizeof(u8),
4760 .array_type = NO_ARRAY,
4761 .tlv_type = 0x01,
4762 .offset = offsetof(struct
4763 wlfw_qdss_trace_mem_info_req_msg_v01,
4764 mem_seg_len),
4765 },
4766 {
4767 .data_type = QMI_STRUCT,
4768 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
4769 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01),
4770 .array_type = VAR_LEN_ARRAY,
4771 .tlv_type = 0x01,
4772 .offset = offsetof(struct
4773 wlfw_qdss_trace_mem_info_req_msg_v01,
4774 mem_seg),
4775 .ei_array = wlfw_mem_seg_resp_s_v01_ei,
4776 },
4777 {
4778 .data_type = QMI_OPT_FLAG,
4779 .elem_len = 1,
4780 .elem_size = sizeof(u8),
4781 .array_type = NO_ARRAY,
4782 .tlv_type = 0x10,
4783 .offset = offsetof(struct
4784 wlfw_qdss_trace_mem_info_req_msg_v01,
4785 end_valid),
4786 },
4787 {
4788 .data_type = QMI_UNSIGNED_1_BYTE,
4789 .elem_len = 1,
4790 .elem_size = sizeof(u8),
4791 .array_type = NO_ARRAY,
4792 .tlv_type = 0x10,
4793 .offset = offsetof(struct
4794 wlfw_qdss_trace_mem_info_req_msg_v01,
4795 end),
4796 },
4797 {
4798 .data_type = QMI_EOTI,
4799 .array_type = NO_ARRAY,
4800 .tlv_type = QMI_COMMON_TLV_TYPE,
4801 },
4802 };
4803 EXPORT_SYMBOL(wlfw_qdss_trace_mem_info_req_msg_v01_ei);
4804
4805 struct qmi_elem_info wlfw_qdss_trace_mem_info_resp_msg_v01_ei[] = {
4806 {
4807 .data_type = QMI_STRUCT,
4808 .elem_len = 1,
4809 .elem_size = sizeof(struct qmi_response_type_v01),
4810 .array_type = NO_ARRAY,
4811 .tlv_type = 0x02,
4812 .offset = offsetof(struct
4813 wlfw_qdss_trace_mem_info_resp_msg_v01,
4814 resp),
4815 .ei_array = qmi_response_type_v01_ei,
4816 },
4817 {
4818 .data_type = QMI_EOTI,
4819 .array_type = NO_ARRAY,
4820 .tlv_type = QMI_COMMON_TLV_TYPE,
4821 },
4822 };
4823 EXPORT_SYMBOL(wlfw_qdss_trace_mem_info_resp_msg_v01_ei);
4824
4825 struct qmi_elem_info wlfw_qdss_trace_save_ind_msg_v01_ei[] = {
4826 {
4827 .data_type = QMI_UNSIGNED_4_BYTE,
4828 .elem_len = 1,
4829 .elem_size = sizeof(u32),
4830 .array_type = NO_ARRAY,
4831 .tlv_type = 0x01,
4832 .offset = offsetof(struct
4833 wlfw_qdss_trace_save_ind_msg_v01,
4834 source),
4835 },
4836 {
4837 .data_type = QMI_UNSIGNED_4_BYTE,
4838 .elem_len = 1,
4839 .elem_size = sizeof(u32),
4840 .array_type = NO_ARRAY,
4841 .tlv_type = 0x02,
4842 .offset = offsetof(struct
4843 wlfw_qdss_trace_save_ind_msg_v01,
4844 total_size),
4845 },
4846 {
4847 .data_type = QMI_OPT_FLAG,
4848 .elem_len = 1,
4849 .elem_size = sizeof(u8),
4850 .array_type = NO_ARRAY,
4851 .tlv_type = 0x10,
4852 .offset = offsetof(struct
4853 wlfw_qdss_trace_save_ind_msg_v01,
4854 mem_seg_valid),
4855 },
4856 {
4857 .data_type = QMI_DATA_LEN,
4858 .elem_len = 1,
4859 .elem_size = sizeof(u8),
4860 .array_type = NO_ARRAY,
4861 .tlv_type = 0x10,
4862 .offset = offsetof(struct
4863 wlfw_qdss_trace_save_ind_msg_v01,
4864 mem_seg_len),
4865 },
4866 {
4867 .data_type = QMI_STRUCT,
4868 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
4869 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01),
4870 .array_type = VAR_LEN_ARRAY,
4871 .tlv_type = 0x10,
4872 .offset = offsetof(struct
4873 wlfw_qdss_trace_save_ind_msg_v01,
4874 mem_seg),
4875 .ei_array = wlfw_mem_seg_resp_s_v01_ei,
4876 },
4877 {
4878 .data_type = QMI_OPT_FLAG,
4879 .elem_len = 1,
4880 .elem_size = sizeof(u8),
4881 .array_type = NO_ARRAY,
4882 .tlv_type = 0x11,
4883 .offset = offsetof(struct
4884 wlfw_qdss_trace_save_ind_msg_v01,
4885 file_name_valid),
4886 },
4887 {
4888 .data_type = QMI_STRING,
4889 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1,
4890 .elem_size = sizeof(char),
4891 .array_type = NO_ARRAY,
4892 .tlv_type = 0x11,
4893 .offset = offsetof(struct
4894 wlfw_qdss_trace_save_ind_msg_v01,
4895 file_name),
4896 },
4897 {
4898 .data_type = QMI_EOTI,
4899 .array_type = NO_ARRAY,
4900 .tlv_type = QMI_COMMON_TLV_TYPE,
4901 },
4902 };
4903 EXPORT_SYMBOL(wlfw_qdss_trace_save_ind_msg_v01_ei);
4904
4905 struct qmi_elem_info wlfw_qdss_trace_data_req_msg_v01_ei[] = {
4906 {
4907 .data_type = QMI_UNSIGNED_4_BYTE,
4908 .elem_len = 1,
4909 .elem_size = sizeof(u32),
4910 .array_type = NO_ARRAY,
4911 .tlv_type = 0x01,
4912 .offset = offsetof(struct
4913 wlfw_qdss_trace_data_req_msg_v01,
4914 seg_id),
4915 },
4916 {
4917 .data_type = QMI_EOTI,
4918 .array_type = NO_ARRAY,
4919 .tlv_type = QMI_COMMON_TLV_TYPE,
4920 },
4921 };
4922 EXPORT_SYMBOL(wlfw_qdss_trace_data_req_msg_v01_ei);
4923
4924 struct qmi_elem_info wlfw_qdss_trace_data_resp_msg_v01_ei[] = {
4925 {
4926 .data_type = QMI_STRUCT,
4927 .elem_len = 1,
4928 .elem_size = sizeof(struct qmi_response_type_v01),
4929 .array_type = NO_ARRAY,
4930 .tlv_type = 0x02,
4931 .offset = offsetof(struct
4932 wlfw_qdss_trace_data_resp_msg_v01,
4933 resp),
4934 .ei_array = qmi_response_type_v01_ei,
4935 },
4936 {
4937 .data_type = QMI_OPT_FLAG,
4938 .elem_len = 1,
4939 .elem_size = sizeof(u8),
4940 .array_type = NO_ARRAY,
4941 .tlv_type = 0x10,
4942 .offset = offsetof(struct
4943 wlfw_qdss_trace_data_resp_msg_v01,
4944 total_size_valid),
4945 },
4946 {
4947 .data_type = QMI_UNSIGNED_4_BYTE,
4948 .elem_len = 1,
4949 .elem_size = sizeof(u32),
4950 .array_type = NO_ARRAY,
4951 .tlv_type = 0x10,
4952 .offset = offsetof(struct
4953 wlfw_qdss_trace_data_resp_msg_v01,
4954 total_size),
4955 },
4956 {
4957 .data_type = QMI_OPT_FLAG,
4958 .elem_len = 1,
4959 .elem_size = sizeof(u8),
4960 .array_type = NO_ARRAY,
4961 .tlv_type = 0x11,
4962 .offset = offsetof(struct
4963 wlfw_qdss_trace_data_resp_msg_v01,
4964 seg_id_valid),
4965 },
4966 {
4967 .data_type = QMI_UNSIGNED_4_BYTE,
4968 .elem_len = 1,
4969 .elem_size = sizeof(u32),
4970 .array_type = NO_ARRAY,
4971 .tlv_type = 0x11,
4972 .offset = offsetof(struct
4973 wlfw_qdss_trace_data_resp_msg_v01,
4974 seg_id),
4975 },
4976 {
4977 .data_type = QMI_OPT_FLAG,
4978 .elem_len = 1,
4979 .elem_size = sizeof(u8),
4980 .array_type = NO_ARRAY,
4981 .tlv_type = 0x12,
4982 .offset = offsetof(struct
4983 wlfw_qdss_trace_data_resp_msg_v01,
4984 data_valid),
4985 },
4986 {
4987 .data_type = QMI_DATA_LEN,
4988 .elem_len = 1,
4989 .elem_size = sizeof(u16),
4990 .array_type = NO_ARRAY,
4991 .tlv_type = 0x12,
4992 .offset = offsetof(struct
4993 wlfw_qdss_trace_data_resp_msg_v01,
4994 data_len),
4995 },
4996 {
4997 .data_type = QMI_UNSIGNED_1_BYTE,
4998 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
4999 .elem_size = sizeof(u8),
5000 .array_type = VAR_LEN_ARRAY,
5001 .tlv_type = 0x12,
5002 .offset = offsetof(struct
5003 wlfw_qdss_trace_data_resp_msg_v01,
5004 data),
5005 },
5006 {
5007 .data_type = QMI_OPT_FLAG,
5008 .elem_len = 1,
5009 .elem_size = sizeof(u8),
5010 .array_type = NO_ARRAY,
5011 .tlv_type = 0x13,
5012 .offset = offsetof(struct
5013 wlfw_qdss_trace_data_resp_msg_v01,
5014 end_valid),
5015 },
5016 {
5017 .data_type = QMI_UNSIGNED_1_BYTE,
5018 .elem_len = 1,
5019 .elem_size = sizeof(u8),
5020 .array_type = NO_ARRAY,
5021 .tlv_type = 0x13,
5022 .offset = offsetof(struct
5023 wlfw_qdss_trace_data_resp_msg_v01,
5024 end),
5025 },
5026 {
5027 .data_type = QMI_EOTI,
5028 .array_type = NO_ARRAY,
5029 .tlv_type = QMI_COMMON_TLV_TYPE,
5030 },
5031 };
5032 EXPORT_SYMBOL(wlfw_qdss_trace_data_resp_msg_v01_ei);
5033
5034 struct qmi_elem_info wlfw_qdss_trace_config_download_req_msg_v01_ei[] = {
5035 {
5036 .data_type = QMI_OPT_FLAG,
5037 .elem_len = 1,
5038 .elem_size = sizeof(u8),
5039 .array_type = NO_ARRAY,
5040 .tlv_type = 0x10,
5041 .offset = offsetof(struct
5042 wlfw_qdss_trace_config_download_req_msg_v01,
5043 total_size_valid),
5044 },
5045 {
5046 .data_type = QMI_UNSIGNED_4_BYTE,
5047 .elem_len = 1,
5048 .elem_size = sizeof(u32),
5049 .array_type = NO_ARRAY,
5050 .tlv_type = 0x10,
5051 .offset = offsetof(struct
5052 wlfw_qdss_trace_config_download_req_msg_v01,
5053 total_size),
5054 },
5055 {
5056 .data_type = QMI_OPT_FLAG,
5057 .elem_len = 1,
5058 .elem_size = sizeof(u8),
5059 .array_type = NO_ARRAY,
5060 .tlv_type = 0x11,
5061 .offset = offsetof(struct
5062 wlfw_qdss_trace_config_download_req_msg_v01,
5063 seg_id_valid),
5064 },
5065 {
5066 .data_type = QMI_UNSIGNED_4_BYTE,
5067 .elem_len = 1,
5068 .elem_size = sizeof(u32),
5069 .array_type = NO_ARRAY,
5070 .tlv_type = 0x11,
5071 .offset = offsetof(struct
5072 wlfw_qdss_trace_config_download_req_msg_v01,
5073 seg_id),
5074 },
5075 {
5076 .data_type = QMI_OPT_FLAG,
5077 .elem_len = 1,
5078 .elem_size = sizeof(u8),
5079 .array_type = NO_ARRAY,
5080 .tlv_type = 0x12,
5081 .offset = offsetof(struct
5082 wlfw_qdss_trace_config_download_req_msg_v01,
5083 data_valid),
5084 },
5085 {
5086 .data_type = QMI_DATA_LEN,
5087 .elem_len = 1,
5088 .elem_size = sizeof(u16),
5089 .array_type = NO_ARRAY,
5090 .tlv_type = 0x12,
5091 .offset = offsetof(struct
5092 wlfw_qdss_trace_config_download_req_msg_v01,
5093 data_len),
5094 },
5095 {
5096 .data_type = QMI_UNSIGNED_1_BYTE,
5097 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
5098 .elem_size = sizeof(u8),
5099 .array_type = VAR_LEN_ARRAY,
5100 .tlv_type = 0x12,
5101 .offset = offsetof(struct
5102 wlfw_qdss_trace_config_download_req_msg_v01,
5103 data),
5104 },
5105 {
5106 .data_type = QMI_OPT_FLAG,
5107 .elem_len = 1,
5108 .elem_size = sizeof(u8),
5109 .array_type = NO_ARRAY,
5110 .tlv_type = 0x13,
5111 .offset = offsetof(struct
5112 wlfw_qdss_trace_config_download_req_msg_v01,
5113 end_valid),
5114 },
5115 {
5116 .data_type = QMI_UNSIGNED_1_BYTE,
5117 .elem_len = 1,
5118 .elem_size = sizeof(u8),
5119 .array_type = NO_ARRAY,
5120 .tlv_type = 0x13,
5121 .offset = offsetof(struct
5122 wlfw_qdss_trace_config_download_req_msg_v01,
5123 end),
5124 },
5125 {
5126 .data_type = QMI_EOTI,
5127 .array_type = NO_ARRAY,
5128 .tlv_type = QMI_COMMON_TLV_TYPE,
5129 },
5130 };
5131 EXPORT_SYMBOL(wlfw_qdss_trace_config_download_req_msg_v01_ei);
5132
5133 struct qmi_elem_info wlfw_qdss_trace_config_download_resp_msg_v01_ei[] = {
5134 {
5135 .data_type = QMI_STRUCT,
5136 .elem_len = 1,
5137 .elem_size = sizeof(struct qmi_response_type_v01),
5138 .array_type = NO_ARRAY,
5139 .tlv_type = 0x02,
5140 .offset = offsetof(struct
5141 wlfw_qdss_trace_config_download_resp_msg_v01,
5142 resp),
5143 .ei_array = qmi_response_type_v01_ei,
5144 },
5145 {
5146 .data_type = QMI_EOTI,
5147 .array_type = NO_ARRAY,
5148 .tlv_type = QMI_COMMON_TLV_TYPE,
5149 },
5150 };
5151 EXPORT_SYMBOL(wlfw_qdss_trace_config_download_resp_msg_v01_ei);
5152
5153 struct qmi_elem_info wlfw_qdss_trace_mode_req_msg_v01_ei[] = {
5154 {
5155 .data_type = QMI_OPT_FLAG,
5156 .elem_len = 1,
5157 .elem_size = sizeof(u8),
5158 .array_type = NO_ARRAY,
5159 .tlv_type = 0x10,
5160 .offset = offsetof(struct
5161 wlfw_qdss_trace_mode_req_msg_v01,
5162 mode_valid),
5163 },
5164 {
5165 .data_type = QMI_SIGNED_4_BYTE_ENUM,
5166 .elem_len = 1,
5167 .elem_size = sizeof(enum wlfw_qdss_trace_mode_enum_v01),
5168 .array_type = NO_ARRAY,
5169 .tlv_type = 0x10,
5170 .offset = offsetof(struct
5171 wlfw_qdss_trace_mode_req_msg_v01,
5172 mode),
5173 },
5174 {
5175 .data_type = QMI_OPT_FLAG,
5176 .elem_len = 1,
5177 .elem_size = sizeof(u8),
5178 .array_type = NO_ARRAY,
5179 .tlv_type = 0x11,
5180 .offset = offsetof(struct
5181 wlfw_qdss_trace_mode_req_msg_v01,
5182 option_valid),
5183 },
5184 {
5185 .data_type = QMI_UNSIGNED_8_BYTE,
5186 .elem_len = 1,
5187 .elem_size = sizeof(u64),
5188 .array_type = NO_ARRAY,
5189 .tlv_type = 0x11,
5190 .offset = offsetof(struct
5191 wlfw_qdss_trace_mode_req_msg_v01,
5192 option),
5193 },
5194 {
5195 .data_type = QMI_OPT_FLAG,
5196 .elem_len = 1,
5197 .elem_size = sizeof(u8),
5198 .array_type = NO_ARRAY,
5199 .tlv_type = 0x12,
5200 .offset = offsetof(struct
5201 wlfw_qdss_trace_mode_req_msg_v01,
5202 hw_trc_disable_override_valid),
5203 },
5204 {
5205 .data_type = QMI_SIGNED_4_BYTE_ENUM,
5206 .elem_len = 1,
5207 .elem_size = sizeof(enum wlfw_qmi_param_value_v01),
5208 .array_type = NO_ARRAY,
5209 .tlv_type = 0x12,
5210 .offset = offsetof(struct
5211 wlfw_qdss_trace_mode_req_msg_v01,
5212 hw_trc_disable_override),
5213 },
5214 {
5215 .data_type = QMI_EOTI,
5216 .array_type = NO_ARRAY,
5217 .tlv_type = QMI_COMMON_TLV_TYPE,
5218 },
5219 };
5220 EXPORT_SYMBOL(wlfw_qdss_trace_mode_req_msg_v01_ei);
5221
5222 struct qmi_elem_info wlfw_qdss_trace_mode_resp_msg_v01_ei[] = {
5223 {
5224 .data_type = QMI_STRUCT,
5225 .elem_len = 1,
5226 .elem_size = sizeof(struct qmi_response_type_v01),
5227 .array_type = NO_ARRAY,
5228 .tlv_type = 0x02,
5229 .offset = offsetof(struct
5230 wlfw_qdss_trace_mode_resp_msg_v01,
5231 resp),
5232 .ei_array = qmi_response_type_v01_ei,
5233 },
5234 {
5235 .data_type = QMI_EOTI,
5236 .array_type = NO_ARRAY,
5237 .tlv_type = QMI_COMMON_TLV_TYPE,
5238 },
5239 };
5240 EXPORT_SYMBOL(wlfw_qdss_trace_mode_resp_msg_v01_ei);
5241
5242 struct qmi_elem_info wlfw_qdss_trace_free_ind_msg_v01_ei[] = {
5243 {
5244 .data_type = QMI_OPT_FLAG,
5245 .elem_len = 1,
5246 .elem_size = sizeof(u8),
5247 .array_type = NO_ARRAY,
5248 .tlv_type = 0x10,
5249 .offset = offsetof(struct
5250 wlfw_qdss_trace_free_ind_msg_v01,
5251 mem_seg_valid),
5252 },
5253 {
5254 .data_type = QMI_DATA_LEN,
5255 .elem_len = 1,
5256 .elem_size = sizeof(u8),
5257 .array_type = NO_ARRAY,
5258 .tlv_type = 0x10,
5259 .offset = offsetof(struct
5260 wlfw_qdss_trace_free_ind_msg_v01,
5261 mem_seg_len),
5262 },
5263 {
5264 .data_type = QMI_STRUCT,
5265 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
5266 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01),
5267 .array_type = VAR_LEN_ARRAY,
5268 .tlv_type = 0x10,
5269 .offset = offsetof(struct
5270 wlfw_qdss_trace_free_ind_msg_v01,
5271 mem_seg),
5272 .ei_array = wlfw_mem_seg_resp_s_v01_ei,
5273 },
5274 {
5275 .data_type = QMI_EOTI,
5276 .array_type = NO_ARRAY,
5277 .tlv_type = QMI_COMMON_TLV_TYPE,
5278 },
5279 };
5280 EXPORT_SYMBOL(wlfw_qdss_trace_free_ind_msg_v01_ei);
5281
5282 struct qmi_elem_info wlfw_shutdown_req_msg_v01_ei[] = {
5283 {
5284 .data_type = QMI_OPT_FLAG,
5285 .elem_len = 1,
5286 .elem_size = sizeof(u8),
5287 .array_type = NO_ARRAY,
5288 .tlv_type = 0x10,
5289 .offset = offsetof(struct
5290 wlfw_shutdown_req_msg_v01,
5291 shutdown_valid),
5292 },
5293 {
5294 .data_type = QMI_UNSIGNED_1_BYTE,
5295 .elem_len = 1,
5296 .elem_size = sizeof(u8),
5297 .array_type = NO_ARRAY,
5298 .tlv_type = 0x10,
5299 .offset = offsetof(struct
5300 wlfw_shutdown_req_msg_v01,
5301 shutdown),
5302 },
5303 {
5304 .data_type = QMI_EOTI,
5305 .array_type = NO_ARRAY,
5306 .tlv_type = QMI_COMMON_TLV_TYPE,
5307 },
5308 };
5309 EXPORT_SYMBOL(wlfw_shutdown_req_msg_v01_ei);
5310
5311 struct qmi_elem_info wlfw_shutdown_resp_msg_v01_ei[] = {
5312 {
5313 .data_type = QMI_STRUCT,
5314 .elem_len = 1,
5315 .elem_size = sizeof(struct qmi_response_type_v01),
5316 .array_type = NO_ARRAY,
5317 .tlv_type = 0x02,
5318 .offset = offsetof(struct
5319 wlfw_shutdown_resp_msg_v01,
5320 resp),
5321 .ei_array = qmi_response_type_v01_ei,
5322 },
5323 {
5324 .data_type = QMI_EOTI,
5325 .array_type = NO_ARRAY,
5326 .tlv_type = QMI_COMMON_TLV_TYPE,
5327 },
5328 };
5329 EXPORT_SYMBOL(wlfw_shutdown_resp_msg_v01_ei);
5330
5331 struct qmi_elem_info wlfw_antenna_switch_req_msg_v01_ei[] = {
5332 {
5333 .data_type = QMI_EOTI,
5334 .array_type = NO_ARRAY,
5335 .tlv_type = QMI_COMMON_TLV_TYPE,
5336 },
5337 };
5338 EXPORT_SYMBOL(wlfw_antenna_switch_req_msg_v01_ei);
5339
5340 struct qmi_elem_info wlfw_antenna_switch_resp_msg_v01_ei[] = {
5341 {
5342 .data_type = QMI_STRUCT,
5343 .elem_len = 1,
5344 .elem_size = sizeof(struct qmi_response_type_v01),
5345 .array_type = NO_ARRAY,
5346 .tlv_type = 0x02,
5347 .offset = offsetof(struct
5348 wlfw_antenna_switch_resp_msg_v01,
5349 resp),
5350 .ei_array = qmi_response_type_v01_ei,
5351 },
5352 {
5353 .data_type = QMI_OPT_FLAG,
5354 .elem_len = 1,
5355 .elem_size = sizeof(u8),
5356 .array_type = NO_ARRAY,
5357 .tlv_type = 0x10,
5358 .offset = offsetof(struct
5359 wlfw_antenna_switch_resp_msg_v01,
5360 antenna_valid),
5361 },
5362 {
5363 .data_type = QMI_UNSIGNED_8_BYTE,
5364 .elem_len = 1,
5365 .elem_size = sizeof(u64),
5366 .array_type = NO_ARRAY,
5367 .tlv_type = 0x10,
5368 .offset = offsetof(struct
5369 wlfw_antenna_switch_resp_msg_v01,
5370 antenna),
5371 },
5372 {
5373 .data_type = QMI_EOTI,
5374 .array_type = NO_ARRAY,
5375 .tlv_type = QMI_COMMON_TLV_TYPE,
5376 },
5377 };
5378 EXPORT_SYMBOL(wlfw_antenna_switch_resp_msg_v01_ei);
5379
5380 struct qmi_elem_info wlfw_antenna_grant_req_msg_v01_ei[] = {
5381 {
5382 .data_type = QMI_OPT_FLAG,
5383 .elem_len = 1,
5384 .elem_size = sizeof(u8),
5385 .array_type = NO_ARRAY,
5386 .tlv_type = 0x10,
5387 .offset = offsetof(struct
5388 wlfw_antenna_grant_req_msg_v01,
5389 grant_valid),
5390 },
5391 {
5392 .data_type = QMI_UNSIGNED_8_BYTE,
5393 .elem_len = 1,
5394 .elem_size = sizeof(u64),
5395 .array_type = NO_ARRAY,
5396 .tlv_type = 0x10,
5397 .offset = offsetof(struct
5398 wlfw_antenna_grant_req_msg_v01,
5399 grant),
5400 },
5401 {
5402 .data_type = QMI_EOTI,
5403 .array_type = NO_ARRAY,
5404 .tlv_type = QMI_COMMON_TLV_TYPE,
5405 },
5406 };
5407 EXPORT_SYMBOL(wlfw_antenna_grant_req_msg_v01_ei);
5408
5409 struct qmi_elem_info wlfw_antenna_grant_resp_msg_v01_ei[] = {
5410 {
5411 .data_type = QMI_STRUCT,
5412 .elem_len = 1,
5413 .elem_size = sizeof(struct qmi_response_type_v01),
5414 .array_type = NO_ARRAY,
5415 .tlv_type = 0x02,
5416 .offset = offsetof(struct
5417 wlfw_antenna_grant_resp_msg_v01,
5418 resp),
5419 .ei_array = qmi_response_type_v01_ei,
5420 },
5421 {
5422 .data_type = QMI_EOTI,
5423 .array_type = NO_ARRAY,
5424 .tlv_type = QMI_COMMON_TLV_TYPE,
5425 },
5426 };
5427 EXPORT_SYMBOL(wlfw_antenna_grant_resp_msg_v01_ei);
5428
5429 struct qmi_elem_info wlfw_wfc_call_status_req_msg_v01_ei[] = {
5430 {
5431 .data_type = QMI_DATA_LEN,
5432 .elem_len = 1,
5433 .elem_size = sizeof(u16),
5434 .array_type = NO_ARRAY,
5435 .tlv_type = 0x01,
5436 .offset = offsetof(struct
5437 wlfw_wfc_call_status_req_msg_v01,
5438 wfc_call_status_len),
5439 },
5440 {
5441 .data_type = QMI_UNSIGNED_1_BYTE,
5442 .elem_len = QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01,
5443 .elem_size = sizeof(u8),
5444 .array_type = VAR_LEN_ARRAY,
5445 .tlv_type = 0x01,
5446 .offset = offsetof(struct
5447 wlfw_wfc_call_status_req_msg_v01,
5448 wfc_call_status),
5449 },
5450 {
5451 .data_type = QMI_OPT_FLAG,
5452 .elem_len = 1,
5453 .elem_size = sizeof(u8),
5454 .array_type = NO_ARRAY,
5455 .tlv_type = 0x10,
5456 .offset = offsetof(struct
5457 wlfw_wfc_call_status_req_msg_v01,
5458 wfc_call_active_valid),
5459 },
5460 {
5461 .data_type = QMI_UNSIGNED_1_BYTE,
5462 .elem_len = 1,
5463 .elem_size = sizeof(u8),
5464 .array_type = NO_ARRAY,
5465 .tlv_type = 0x10,
5466 .offset = offsetof(struct
5467 wlfw_wfc_call_status_req_msg_v01,
5468 wfc_call_active),
5469 },
5470 {
5471 .data_type = QMI_OPT_FLAG,
5472 .elem_len = 1,
5473 .elem_size = sizeof(u8),
5474 .array_type = NO_ARRAY,
5475 .tlv_type = 0x11,
5476 .offset = offsetof(struct
5477 wlfw_wfc_call_status_req_msg_v01,
5478 all_wfc_calls_held_valid),
5479 },
5480 {
5481 .data_type = QMI_UNSIGNED_1_BYTE,
5482 .elem_len = 1,
5483 .elem_size = sizeof(u8),
5484 .array_type = NO_ARRAY,
5485 .tlv_type = 0x11,
5486 .offset = offsetof(struct
5487 wlfw_wfc_call_status_req_msg_v01,
5488 all_wfc_calls_held),
5489 },
5490 {
5491 .data_type = QMI_OPT_FLAG,
5492 .elem_len = 1,
5493 .elem_size = sizeof(u8),
5494 .array_type = NO_ARRAY,
5495 .tlv_type = 0x12,
5496 .offset = offsetof(struct
5497 wlfw_wfc_call_status_req_msg_v01,
5498 is_wfc_emergency_valid),
5499 },
5500 {
5501 .data_type = QMI_UNSIGNED_1_BYTE,
5502 .elem_len = 1,
5503 .elem_size = sizeof(u8),
5504 .array_type = NO_ARRAY,
5505 .tlv_type = 0x12,
5506 .offset = offsetof(struct
5507 wlfw_wfc_call_status_req_msg_v01,
5508 is_wfc_emergency),
5509 },
5510 {
5511 .data_type = QMI_OPT_FLAG,
5512 .elem_len = 1,
5513 .elem_size = sizeof(u8),
5514 .array_type = NO_ARRAY,
5515 .tlv_type = 0x13,
5516 .offset = offsetof(struct
5517 wlfw_wfc_call_status_req_msg_v01,
5518 twt_ims_start_valid),
5519 },
5520 {
5521 .data_type = QMI_UNSIGNED_8_BYTE,
5522 .elem_len = 1,
5523 .elem_size = sizeof(u64),
5524 .array_type = NO_ARRAY,
5525 .tlv_type = 0x13,
5526 .offset = offsetof(struct
5527 wlfw_wfc_call_status_req_msg_v01,
5528 twt_ims_start),
5529 },
5530 {
5531 .data_type = QMI_OPT_FLAG,
5532 .elem_len = 1,
5533 .elem_size = sizeof(u8),
5534 .array_type = NO_ARRAY,
5535 .tlv_type = 0x14,
5536 .offset = offsetof(struct
5537 wlfw_wfc_call_status_req_msg_v01,
5538 twt_ims_int_valid),
5539 },
5540 {
5541 .data_type = QMI_UNSIGNED_2_BYTE,
5542 .elem_len = 1,
5543 .elem_size = sizeof(u16),
5544 .array_type = NO_ARRAY,
5545 .tlv_type = 0x14,
5546 .offset = offsetof(struct
5547 wlfw_wfc_call_status_req_msg_v01,
5548 twt_ims_int),
5549 },
5550 {
5551 .data_type = QMI_OPT_FLAG,
5552 .elem_len = 1,
5553 .elem_size = sizeof(u8),
5554 .array_type = NO_ARRAY,
5555 .tlv_type = 0x15,
5556 .offset = offsetof(struct
5557 wlfw_wfc_call_status_req_msg_v01,
5558 media_quality_valid),
5559 },
5560 {
5561 .data_type = QMI_SIGNED_4_BYTE_ENUM,
5562 .elem_len = 1,
5563 .elem_size = sizeof(enum wlfw_wfc_media_quality_v01),
5564 .array_type = NO_ARRAY,
5565 .tlv_type = 0x15,
5566 .offset = offsetof(struct
5567 wlfw_wfc_call_status_req_msg_v01,
5568 media_quality),
5569 },
5570 {
5571 .data_type = QMI_EOTI,
5572 .array_type = NO_ARRAY,
5573 .tlv_type = QMI_COMMON_TLV_TYPE,
5574 },
5575 };
5576 EXPORT_SYMBOL(wlfw_wfc_call_status_req_msg_v01_ei);
5577
5578 struct qmi_elem_info wlfw_wfc_call_status_resp_msg_v01_ei[] = {
5579 {
5580 .data_type = QMI_STRUCT,
5581 .elem_len = 1,
5582 .elem_size = sizeof(struct qmi_response_type_v01),
5583 .array_type = NO_ARRAY,
5584 .tlv_type = 0x02,
5585 .offset = offsetof(struct
5586 wlfw_wfc_call_status_resp_msg_v01,
5587 resp),
5588 .ei_array = qmi_response_type_v01_ei,
5589 },
5590 {
5591 .data_type = QMI_EOTI,
5592 .array_type = NO_ARRAY,
5593 .tlv_type = QMI_COMMON_TLV_TYPE,
5594 },
5595 };
5596 EXPORT_SYMBOL(wlfw_wfc_call_status_resp_msg_v01_ei);
5597
5598 struct qmi_elem_info wlfw_get_info_req_msg_v01_ei[] = {
5599 {
5600 .data_type = QMI_UNSIGNED_1_BYTE,
5601 .elem_len = 1,
5602 .elem_size = sizeof(u8),
5603 .array_type = NO_ARRAY,
5604 .tlv_type = 0x01,
5605 .offset = offsetof(struct
5606 wlfw_get_info_req_msg_v01,
5607 type),
5608 },
5609 {
5610 .data_type = QMI_DATA_LEN,
5611 .elem_len = 1,
5612 .elem_size = sizeof(u16),
5613 .array_type = NO_ARRAY,
5614 .tlv_type = 0x02,
5615 .offset = offsetof(struct
5616 wlfw_get_info_req_msg_v01,
5617 data_len),
5618 },
5619 {
5620 .data_type = QMI_UNSIGNED_1_BYTE,
5621 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
5622 .elem_size = sizeof(u8),
5623 .array_type = VAR_LEN_ARRAY,
5624 .tlv_type = 0x02,
5625 .offset = offsetof(struct
5626 wlfw_get_info_req_msg_v01,
5627 data),
5628 },
5629 {
5630 .data_type = QMI_EOTI,
5631 .array_type = NO_ARRAY,
5632 .tlv_type = QMI_COMMON_TLV_TYPE,
5633 },
5634 };
5635 EXPORT_SYMBOL(wlfw_get_info_req_msg_v01_ei);
5636
5637 struct qmi_elem_info wlfw_get_info_resp_msg_v01_ei[] = {
5638 {
5639 .data_type = QMI_STRUCT,
5640 .elem_len = 1,
5641 .elem_size = sizeof(struct qmi_response_type_v01),
5642 .array_type = NO_ARRAY,
5643 .tlv_type = 0x02,
5644 .offset = offsetof(struct
5645 wlfw_get_info_resp_msg_v01,
5646 resp),
5647 .ei_array = qmi_response_type_v01_ei,
5648 },
5649 {
5650 .data_type = QMI_EOTI,
5651 .array_type = NO_ARRAY,
5652 .tlv_type = QMI_COMMON_TLV_TYPE,
5653 },
5654 };
5655 EXPORT_SYMBOL(wlfw_get_info_resp_msg_v01_ei);
5656
5657 struct qmi_elem_info wlfw_respond_get_info_ind_msg_v01_ei[] = {
5658 {
5659 .data_type = QMI_DATA_LEN,
5660 .elem_len = 1,
5661 .elem_size = sizeof(u16),
5662 .array_type = NO_ARRAY,
5663 .tlv_type = 0x01,
5664 .offset = offsetof(struct
5665 wlfw_respond_get_info_ind_msg_v01,
5666 data_len),
5667 },
5668 {
5669 .data_type = QMI_UNSIGNED_1_BYTE,
5670 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
5671 .elem_size = sizeof(u8),
5672 .array_type = VAR_LEN_ARRAY,
5673 .tlv_type = 0x01,
5674 .offset = offsetof(struct
5675 wlfw_respond_get_info_ind_msg_v01,
5676 data),
5677 },
5678 {
5679 .data_type = QMI_OPT_FLAG,
5680 .elem_len = 1,
5681 .elem_size = sizeof(u8),
5682 .array_type = NO_ARRAY,
5683 .tlv_type = 0x10,
5684 .offset = offsetof(struct
5685 wlfw_respond_get_info_ind_msg_v01,
5686 type_valid),
5687 },
5688 {
5689 .data_type = QMI_UNSIGNED_1_BYTE,
5690 .elem_len = 1,
5691 .elem_size = sizeof(u8),
5692 .array_type = NO_ARRAY,
5693 .tlv_type = 0x10,
5694 .offset = offsetof(struct
5695 wlfw_respond_get_info_ind_msg_v01,
5696 type),
5697 },
5698 {
5699 .data_type = QMI_OPT_FLAG,
5700 .elem_len = 1,
5701 .elem_size = sizeof(u8),
5702 .array_type = NO_ARRAY,
5703 .tlv_type = 0x11,
5704 .offset = offsetof(struct
5705 wlfw_respond_get_info_ind_msg_v01,
5706 is_last_valid),
5707 },
5708 {
5709 .data_type = QMI_UNSIGNED_1_BYTE,
5710 .elem_len = 1,
5711 .elem_size = sizeof(u8),
5712 .array_type = NO_ARRAY,
5713 .tlv_type = 0x11,
5714 .offset = offsetof(struct
5715 wlfw_respond_get_info_ind_msg_v01,
5716 is_last),
5717 },
5718 {
5719 .data_type = QMI_OPT_FLAG,
5720 .elem_len = 1,
5721 .elem_size = sizeof(u8),
5722 .array_type = NO_ARRAY,
5723 .tlv_type = 0x12,
5724 .offset = offsetof(struct
5725 wlfw_respond_get_info_ind_msg_v01,
5726 seq_no_valid),
5727 },
5728 {
5729 .data_type = QMI_UNSIGNED_4_BYTE,
5730 .elem_len = 1,
5731 .elem_size = sizeof(u32),
5732 .array_type = NO_ARRAY,
5733 .tlv_type = 0x12,
5734 .offset = offsetof(struct
5735 wlfw_respond_get_info_ind_msg_v01,
5736 seq_no),
5737 },
5738 {
5739 .data_type = QMI_EOTI,
5740 .array_type = NO_ARRAY,
5741 .tlv_type = QMI_COMMON_TLV_TYPE,
5742 },
5743 };
5744 EXPORT_SYMBOL(wlfw_respond_get_info_ind_msg_v01_ei);
5745
5746 struct qmi_elem_info wlfw_device_info_req_msg_v01_ei[] = {
5747 {
5748 .data_type = QMI_EOTI,
5749 .array_type = NO_ARRAY,
5750 .tlv_type = QMI_COMMON_TLV_TYPE,
5751 },
5752 };
5753 EXPORT_SYMBOL(wlfw_device_info_req_msg_v01_ei);
5754
5755 struct qmi_elem_info wlfw_device_info_resp_msg_v01_ei[] = {
5756 {
5757 .data_type = QMI_STRUCT,
5758 .elem_len = 1,
5759 .elem_size = sizeof(struct qmi_response_type_v01),
5760 .array_type = NO_ARRAY,
5761 .tlv_type = 0x02,
5762 .offset = offsetof(struct
5763 wlfw_device_info_resp_msg_v01,
5764 resp),
5765 .ei_array = qmi_response_type_v01_ei,
5766 },
5767 {
5768 .data_type = QMI_OPT_FLAG,
5769 .elem_len = 1,
5770 .elem_size = sizeof(u8),
5771 .array_type = NO_ARRAY,
5772 .tlv_type = 0x10,
5773 .offset = offsetof(struct
5774 wlfw_device_info_resp_msg_v01,
5775 bar_addr_valid),
5776 },
5777 {
5778 .data_type = QMI_UNSIGNED_8_BYTE,
5779 .elem_len = 1,
5780 .elem_size = sizeof(u64),
5781 .array_type = NO_ARRAY,
5782 .tlv_type = 0x10,
5783 .offset = offsetof(struct
5784 wlfw_device_info_resp_msg_v01,
5785 bar_addr),
5786 },
5787 {
5788 .data_type = QMI_OPT_FLAG,
5789 .elem_len = 1,
5790 .elem_size = sizeof(u8),
5791 .array_type = NO_ARRAY,
5792 .tlv_type = 0x11,
5793 .offset = offsetof(struct
5794 wlfw_device_info_resp_msg_v01,
5795 bar_size_valid),
5796 },
5797 {
5798 .data_type = QMI_UNSIGNED_4_BYTE,
5799 .elem_len = 1,
5800 .elem_size = sizeof(u32),
5801 .array_type = NO_ARRAY,
5802 .tlv_type = 0x11,
5803 .offset = offsetof(struct
5804 wlfw_device_info_resp_msg_v01,
5805 bar_size),
5806 },
5807 {
5808 .data_type = QMI_OPT_FLAG,
5809 .elem_len = 1,
5810 .elem_size = sizeof(u8),
5811 .array_type = NO_ARRAY,
5812 .tlv_type = 0x12,
5813 .offset = offsetof(struct
5814 wlfw_device_info_resp_msg_v01,
5815 mhi_state_info_addr_valid),
5816 },
5817 {
5818 .data_type = QMI_UNSIGNED_8_BYTE,
5819 .elem_len = 1,
5820 .elem_size = sizeof(u64),
5821 .array_type = NO_ARRAY,
5822 .tlv_type = 0x12,
5823 .offset = offsetof(struct
5824 wlfw_device_info_resp_msg_v01,
5825 mhi_state_info_addr),
5826 },
5827 {
5828 .data_type = QMI_OPT_FLAG,
5829 .elem_len = 1,
5830 .elem_size = sizeof(u8),
5831 .array_type = NO_ARRAY,
5832 .tlv_type = 0x13,
5833 .offset = offsetof(struct
5834 wlfw_device_info_resp_msg_v01,
5835 mhi_state_info_size_valid),
5836 },
5837 {
5838 .data_type = QMI_UNSIGNED_4_BYTE,
5839 .elem_len = 1,
5840 .elem_size = sizeof(u32),
5841 .array_type = NO_ARRAY,
5842 .tlv_type = 0x13,
5843 .offset = offsetof(struct
5844 wlfw_device_info_resp_msg_v01,
5845 mhi_state_info_size),
5846 },
5847 {
5848 .data_type = QMI_EOTI,
5849 .array_type = NO_ARRAY,
5850 .tlv_type = QMI_COMMON_TLV_TYPE,
5851 },
5852 };
5853 EXPORT_SYMBOL(wlfw_device_info_resp_msg_v01_ei);
5854
5855 struct qmi_elem_info wlfw_m3_dump_upload_req_ind_msg_v01_ei[] = {
5856 {
5857 .data_type = QMI_UNSIGNED_4_BYTE,
5858 .elem_len = 1,
5859 .elem_size = sizeof(u32),
5860 .array_type = NO_ARRAY,
5861 .tlv_type = 0x01,
5862 .offset = offsetof(struct
5863 wlfw_m3_dump_upload_req_ind_msg_v01,
5864 pdev_id),
5865 },
5866 {
5867 .data_type = QMI_UNSIGNED_8_BYTE,
5868 .elem_len = 1,
5869 .elem_size = sizeof(u64),
5870 .array_type = NO_ARRAY,
5871 .tlv_type = 0x02,
5872 .offset = offsetof(struct
5873 wlfw_m3_dump_upload_req_ind_msg_v01,
5874 addr),
5875 },
5876 {
5877 .data_type = QMI_UNSIGNED_8_BYTE,
5878 .elem_len = 1,
5879 .elem_size = sizeof(u64),
5880 .array_type = NO_ARRAY,
5881 .tlv_type = 0x03,
5882 .offset = offsetof(struct
5883 wlfw_m3_dump_upload_req_ind_msg_v01,
5884 size),
5885 },
5886 {
5887 .data_type = QMI_EOTI,
5888 .array_type = NO_ARRAY,
5889 .tlv_type = QMI_COMMON_TLV_TYPE,
5890 },
5891 };
5892 EXPORT_SYMBOL(wlfw_m3_dump_upload_req_ind_msg_v01_ei);
5893
5894 struct qmi_elem_info wlfw_m3_dump_upload_done_req_msg_v01_ei[] = {
5895 {
5896 .data_type = QMI_UNSIGNED_4_BYTE,
5897 .elem_len = 1,
5898 .elem_size = sizeof(u32),
5899 .array_type = NO_ARRAY,
5900 .tlv_type = 0x01,
5901 .offset = offsetof(struct
5902 wlfw_m3_dump_upload_done_req_msg_v01,
5903 pdev_id),
5904 },
5905 {
5906 .data_type = QMI_UNSIGNED_4_BYTE,
5907 .elem_len = 1,
5908 .elem_size = sizeof(u32),
5909 .array_type = NO_ARRAY,
5910 .tlv_type = 0x02,
5911 .offset = offsetof(struct
5912 wlfw_m3_dump_upload_done_req_msg_v01,
5913 status),
5914 },
5915 {
5916 .data_type = QMI_EOTI,
5917 .array_type = NO_ARRAY,
5918 .tlv_type = QMI_COMMON_TLV_TYPE,
5919 },
5920 };
5921 EXPORT_SYMBOL(wlfw_m3_dump_upload_done_req_msg_v01_ei);
5922
5923 struct qmi_elem_info wlfw_m3_dump_upload_done_resp_msg_v01_ei[] = {
5924 {
5925 .data_type = QMI_STRUCT,
5926 .elem_len = 1,
5927 .elem_size = sizeof(struct qmi_response_type_v01),
5928 .array_type = NO_ARRAY,
5929 .tlv_type = 0x02,
5930 .offset = offsetof(struct
5931 wlfw_m3_dump_upload_done_resp_msg_v01,
5932 resp),
5933 .ei_array = qmi_response_type_v01_ei,
5934 },
5935 {
5936 .data_type = QMI_EOTI,
5937 .array_type = NO_ARRAY,
5938 .tlv_type = QMI_COMMON_TLV_TYPE,
5939 },
5940 };
5941 EXPORT_SYMBOL(wlfw_m3_dump_upload_done_resp_msg_v01_ei);
5942
5943 struct qmi_elem_info wlfw_soc_wake_req_msg_v01_ei[] = {
5944 {
5945 .data_type = QMI_OPT_FLAG,
5946 .elem_len = 1,
5947 .elem_size = sizeof(u8),
5948 .array_type = NO_ARRAY,
5949 .tlv_type = 0x10,
5950 .offset = offsetof(struct
5951 wlfw_soc_wake_req_msg_v01,
5952 wake_valid),
5953 },
5954 {
5955 .data_type = QMI_SIGNED_4_BYTE_ENUM,
5956 .elem_len = 1,
5957 .elem_size = sizeof(enum wlfw_soc_wake_enum_v01),
5958 .array_type = NO_ARRAY,
5959 .tlv_type = 0x10,
5960 .offset = offsetof(struct
5961 wlfw_soc_wake_req_msg_v01,
5962 wake),
5963 },
5964 {
5965 .data_type = QMI_EOTI,
5966 .array_type = NO_ARRAY,
5967 .tlv_type = QMI_COMMON_TLV_TYPE,
5968 },
5969 };
5970 EXPORT_SYMBOL(wlfw_soc_wake_req_msg_v01_ei);
5971
5972 struct qmi_elem_info wlfw_soc_wake_resp_msg_v01_ei[] = {
5973 {
5974 .data_type = QMI_STRUCT,
5975 .elem_len = 1,
5976 .elem_size = sizeof(struct qmi_response_type_v01),
5977 .array_type = NO_ARRAY,
5978 .tlv_type = 0x02,
5979 .offset = offsetof(struct
5980 wlfw_soc_wake_resp_msg_v01,
5981 resp),
5982 .ei_array = qmi_response_type_v01_ei,
5983 },
5984 {
5985 .data_type = QMI_EOTI,
5986 .array_type = NO_ARRAY,
5987 .tlv_type = QMI_COMMON_TLV_TYPE,
5988 },
5989 };
5990 EXPORT_SYMBOL(wlfw_soc_wake_resp_msg_v01_ei);
5991
5992 struct qmi_elem_info wlfw_power_save_req_msg_v01_ei[] = {
5993 {
5994 .data_type = QMI_OPT_FLAG,
5995 .elem_len = 1,
5996 .elem_size = sizeof(u8),
5997 .array_type = NO_ARRAY,
5998 .tlv_type = 0x10,
5999 .offset = offsetof(struct
6000 wlfw_power_save_req_msg_v01,
6001 power_save_mode_valid),
6002 },
6003 {
6004 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6005 .elem_len = 1,
6006 .elem_size = sizeof(enum wlfw_power_save_mode_v01),
6007 .array_type = NO_ARRAY,
6008 .tlv_type = 0x10,
6009 .offset = offsetof(struct
6010 wlfw_power_save_req_msg_v01,
6011 power_save_mode),
6012 },
6013 {
6014 .data_type = QMI_EOTI,
6015 .array_type = NO_ARRAY,
6016 .tlv_type = QMI_COMMON_TLV_TYPE,
6017 },
6018 };
6019 EXPORT_SYMBOL(wlfw_power_save_req_msg_v01_ei);
6020
6021 struct qmi_elem_info wlfw_power_save_resp_msg_v01_ei[] = {
6022 {
6023 .data_type = QMI_STRUCT,
6024 .elem_len = 1,
6025 .elem_size = sizeof(struct qmi_response_type_v01),
6026 .array_type = NO_ARRAY,
6027 .tlv_type = 0x02,
6028 .offset = offsetof(struct
6029 wlfw_power_save_resp_msg_v01,
6030 resp),
6031 .ei_array = qmi_response_type_v01_ei,
6032 },
6033 {
6034 .data_type = QMI_EOTI,
6035 .array_type = NO_ARRAY,
6036 .tlv_type = QMI_COMMON_TLV_TYPE,
6037 },
6038 };
6039 EXPORT_SYMBOL(wlfw_power_save_resp_msg_v01_ei);
6040
6041 struct qmi_elem_info wlfw_wfc_call_twt_config_ind_msg_v01_ei[] = {
6042 {
6043 .data_type = QMI_OPT_FLAG,
6044 .elem_len = 1,
6045 .elem_size = sizeof(u8),
6046 .array_type = NO_ARRAY,
6047 .tlv_type = 0x10,
6048 .offset = offsetof(struct
6049 wlfw_wfc_call_twt_config_ind_msg_v01,
6050 twt_sta_start_valid),
6051 },
6052 {
6053 .data_type = QMI_UNSIGNED_8_BYTE,
6054 .elem_len = 1,
6055 .elem_size = sizeof(u64),
6056 .array_type = NO_ARRAY,
6057 .tlv_type = 0x10,
6058 .offset = offsetof(struct
6059 wlfw_wfc_call_twt_config_ind_msg_v01,
6060 twt_sta_start),
6061 },
6062 {
6063 .data_type = QMI_OPT_FLAG,
6064 .elem_len = 1,
6065 .elem_size = sizeof(u8),
6066 .array_type = NO_ARRAY,
6067 .tlv_type = 0x11,
6068 .offset = offsetof(struct
6069 wlfw_wfc_call_twt_config_ind_msg_v01,
6070 twt_sta_int_valid),
6071 },
6072 {
6073 .data_type = QMI_UNSIGNED_2_BYTE,
6074 .elem_len = 1,
6075 .elem_size = sizeof(u16),
6076 .array_type = NO_ARRAY,
6077 .tlv_type = 0x11,
6078 .offset = offsetof(struct
6079 wlfw_wfc_call_twt_config_ind_msg_v01,
6080 twt_sta_int),
6081 },
6082 {
6083 .data_type = QMI_OPT_FLAG,
6084 .elem_len = 1,
6085 .elem_size = sizeof(u8),
6086 .array_type = NO_ARRAY,
6087 .tlv_type = 0x12,
6088 .offset = offsetof(struct
6089 wlfw_wfc_call_twt_config_ind_msg_v01,
6090 twt_sta_upo_valid),
6091 },
6092 {
6093 .data_type = QMI_UNSIGNED_2_BYTE,
6094 .elem_len = 1,
6095 .elem_size = sizeof(u16),
6096 .array_type = NO_ARRAY,
6097 .tlv_type = 0x12,
6098 .offset = offsetof(struct
6099 wlfw_wfc_call_twt_config_ind_msg_v01,
6100 twt_sta_upo),
6101 },
6102 {
6103 .data_type = QMI_OPT_FLAG,
6104 .elem_len = 1,
6105 .elem_size = sizeof(u8),
6106 .array_type = NO_ARRAY,
6107 .tlv_type = 0x13,
6108 .offset = offsetof(struct
6109 wlfw_wfc_call_twt_config_ind_msg_v01,
6110 twt_sta_sp_valid),
6111 },
6112 {
6113 .data_type = QMI_UNSIGNED_2_BYTE,
6114 .elem_len = 1,
6115 .elem_size = sizeof(u16),
6116 .array_type = NO_ARRAY,
6117 .tlv_type = 0x13,
6118 .offset = offsetof(struct
6119 wlfw_wfc_call_twt_config_ind_msg_v01,
6120 twt_sta_sp),
6121 },
6122 {
6123 .data_type = QMI_OPT_FLAG,
6124 .elem_len = 1,
6125 .elem_size = sizeof(u8),
6126 .array_type = NO_ARRAY,
6127 .tlv_type = 0x14,
6128 .offset = offsetof(struct
6129 wlfw_wfc_call_twt_config_ind_msg_v01,
6130 twt_sta_dl_valid),
6131 },
6132 {
6133 .data_type = QMI_UNSIGNED_2_BYTE,
6134 .elem_len = 1,
6135 .elem_size = sizeof(u16),
6136 .array_type = NO_ARRAY,
6137 .tlv_type = 0x14,
6138 .offset = offsetof(struct
6139 wlfw_wfc_call_twt_config_ind_msg_v01,
6140 twt_sta_dl),
6141 },
6142 {
6143 .data_type = QMI_OPT_FLAG,
6144 .elem_len = 1,
6145 .elem_size = sizeof(u8),
6146 .array_type = NO_ARRAY,
6147 .tlv_type = 0x15,
6148 .offset = offsetof(struct
6149 wlfw_wfc_call_twt_config_ind_msg_v01,
6150 twt_sta_config_changed_valid),
6151 },
6152 {
6153 .data_type = QMI_UNSIGNED_1_BYTE,
6154 .elem_len = 1,
6155 .elem_size = sizeof(u8),
6156 .array_type = NO_ARRAY,
6157 .tlv_type = 0x15,
6158 .offset = offsetof(struct
6159 wlfw_wfc_call_twt_config_ind_msg_v01,
6160 twt_sta_config_changed),
6161 },
6162 {
6163 .data_type = QMI_EOTI,
6164 .array_type = NO_ARRAY,
6165 .tlv_type = QMI_COMMON_TLV_TYPE,
6166 },
6167 };
6168 EXPORT_SYMBOL(wlfw_wfc_call_twt_config_ind_msg_v01_ei);
6169
6170 struct qmi_elem_info wlfw_qdss_mem_ready_ind_msg_v01_ei[] = {
6171 {
6172 .data_type = QMI_EOTI,
6173 .array_type = NO_ARRAY,
6174 .tlv_type = QMI_COMMON_TLV_TYPE,
6175 },
6176 };
6177 EXPORT_SYMBOL(wlfw_qdss_mem_ready_ind_msg_v01_ei);
6178
6179 struct qmi_elem_info wlfw_pcie_gen_switch_req_msg_v01_ei[] = {
6180 {
6181 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6182 .elem_len = 1,
6183 .elem_size = sizeof(enum wlfw_pcie_gen_speed_v01),
6184 .array_type = NO_ARRAY,
6185 .tlv_type = 0x01,
6186 .offset = offsetof(struct
6187 wlfw_pcie_gen_switch_req_msg_v01,
6188 pcie_speed),
6189 },
6190 {
6191 .data_type = QMI_EOTI,
6192 .array_type = NO_ARRAY,
6193 .tlv_type = QMI_COMMON_TLV_TYPE,
6194 },
6195 };
6196 EXPORT_SYMBOL(wlfw_pcie_gen_switch_req_msg_v01_ei);
6197
6198 struct qmi_elem_info wlfw_pcie_gen_switch_resp_msg_v01_ei[] = {
6199 {
6200 .data_type = QMI_STRUCT,
6201 .elem_len = 1,
6202 .elem_size = sizeof(struct qmi_response_type_v01),
6203 .array_type = NO_ARRAY,
6204 .tlv_type = 0x02,
6205 .offset = offsetof(struct
6206 wlfw_pcie_gen_switch_resp_msg_v01,
6207 resp),
6208 .ei_array = qmi_response_type_v01_ei,
6209 },
6210 {
6211 .data_type = QMI_EOTI,
6212 .array_type = NO_ARRAY,
6213 .tlv_type = QMI_COMMON_TLV_TYPE,
6214 },
6215 };
6216 EXPORT_SYMBOL(wlfw_pcie_gen_switch_resp_msg_v01_ei);
6217
6218 struct qmi_elem_info wlfw_m3_dump_upload_segments_req_ind_msg_v01_ei[] = {
6219 {
6220 .data_type = QMI_UNSIGNED_4_BYTE,
6221 .elem_len = 1,
6222 .elem_size = sizeof(u32),
6223 .array_type = NO_ARRAY,
6224 .tlv_type = 0x01,
6225 .offset = offsetof(struct
6226 wlfw_m3_dump_upload_segments_req_ind_msg_v01,
6227 pdev_id),
6228 },
6229 {
6230 .data_type = QMI_UNSIGNED_4_BYTE,
6231 .elem_len = 1,
6232 .elem_size = sizeof(u32),
6233 .array_type = NO_ARRAY,
6234 .tlv_type = 0x02,
6235 .offset = offsetof(struct
6236 wlfw_m3_dump_upload_segments_req_ind_msg_v01,
6237 no_of_valid_segments),
6238 },
6239 {
6240 .data_type = QMI_STRUCT,
6241 .elem_len = QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01,
6242 .elem_size = sizeof(struct wlfw_m3_segment_info_s_v01),
6243 .array_type = STATIC_ARRAY,
6244 .tlv_type = 0x03,
6245 .offset = offsetof(struct
6246 wlfw_m3_dump_upload_segments_req_ind_msg_v01,
6247 m3_segment),
6248 .ei_array = wlfw_m3_segment_info_s_v01_ei,
6249 },
6250 {
6251 .data_type = QMI_EOTI,
6252 .array_type = NO_ARRAY,
6253 .tlv_type = QMI_COMMON_TLV_TYPE,
6254 },
6255 };
6256 EXPORT_SYMBOL(wlfw_m3_dump_upload_segments_req_ind_msg_v01_ei);
6257
6258 struct qmi_elem_info wlfw_subsys_restart_level_req_msg_v01_ei[] = {
6259 {
6260 .data_type = QMI_OPT_FLAG,
6261 .elem_len = 1,
6262 .elem_size = sizeof(u8),
6263 .array_type = NO_ARRAY,
6264 .tlv_type = 0x10,
6265 .offset = offsetof(struct
6266 wlfw_subsys_restart_level_req_msg_v01,
6267 restart_level_type_valid),
6268 },
6269 {
6270 .data_type = QMI_UNSIGNED_1_BYTE,
6271 .elem_len = 1,
6272 .elem_size = sizeof(u8),
6273 .array_type = NO_ARRAY,
6274 .tlv_type = 0x10,
6275 .offset = offsetof(struct
6276 wlfw_subsys_restart_level_req_msg_v01,
6277 restart_level_type),
6278 },
6279 {
6280 .data_type = QMI_EOTI,
6281 .array_type = NO_ARRAY,
6282 .tlv_type = QMI_COMMON_TLV_TYPE,
6283 },
6284 };
6285 EXPORT_SYMBOL(wlfw_subsys_restart_level_req_msg_v01_ei);
6286
6287 struct qmi_elem_info wlfw_subsys_restart_level_resp_msg_v01_ei[] = {
6288 {
6289 .data_type = QMI_STRUCT,
6290 .elem_len = 1,
6291 .elem_size = sizeof(struct qmi_response_type_v01),
6292 .array_type = NO_ARRAY,
6293 .tlv_type = 0x02,
6294 .offset = offsetof(struct
6295 wlfw_subsys_restart_level_resp_msg_v01,
6296 resp),
6297 .ei_array = qmi_response_type_v01_ei,
6298 },
6299 {
6300 .data_type = QMI_EOTI,
6301 .array_type = NO_ARRAY,
6302 .tlv_type = QMI_COMMON_TLV_TYPE,
6303 },
6304 };
6305 EXPORT_SYMBOL(wlfw_subsys_restart_level_resp_msg_v01_ei);
6306
6307 struct qmi_elem_info wlfw_ini_file_download_req_msg_v01_ei[] = {
6308 {
6309 .data_type = QMI_OPT_FLAG,
6310 .elem_len = 1,
6311 .elem_size = sizeof(u8),
6312 .array_type = NO_ARRAY,
6313 .tlv_type = 0x10,
6314 .offset = offsetof(struct
6315 wlfw_ini_file_download_req_msg_v01,
6316 file_type_valid),
6317 },
6318 {
6319 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6320 .elem_len = 1,
6321 .elem_size = sizeof(enum wlfw_ini_file_type_v01),
6322 .array_type = NO_ARRAY,
6323 .tlv_type = 0x10,
6324 .offset = offsetof(struct
6325 wlfw_ini_file_download_req_msg_v01,
6326 file_type),
6327 },
6328 {
6329 .data_type = QMI_OPT_FLAG,
6330 .elem_len = 1,
6331 .elem_size = sizeof(u8),
6332 .array_type = NO_ARRAY,
6333 .tlv_type = 0x11,
6334 .offset = offsetof(struct
6335 wlfw_ini_file_download_req_msg_v01,
6336 total_size_valid),
6337 },
6338 {
6339 .data_type = QMI_UNSIGNED_4_BYTE,
6340 .elem_len = 1,
6341 .elem_size = sizeof(u32),
6342 .array_type = NO_ARRAY,
6343 .tlv_type = 0x11,
6344 .offset = offsetof(struct
6345 wlfw_ini_file_download_req_msg_v01,
6346 total_size),
6347 },
6348 {
6349 .data_type = QMI_OPT_FLAG,
6350 .elem_len = 1,
6351 .elem_size = sizeof(u8),
6352 .array_type = NO_ARRAY,
6353 .tlv_type = 0x12,
6354 .offset = offsetof(struct
6355 wlfw_ini_file_download_req_msg_v01,
6356 seg_id_valid),
6357 },
6358 {
6359 .data_type = QMI_UNSIGNED_4_BYTE,
6360 .elem_len = 1,
6361 .elem_size = sizeof(u32),
6362 .array_type = NO_ARRAY,
6363 .tlv_type = 0x12,
6364 .offset = offsetof(struct
6365 wlfw_ini_file_download_req_msg_v01,
6366 seg_id),
6367 },
6368 {
6369 .data_type = QMI_OPT_FLAG,
6370 .elem_len = 1,
6371 .elem_size = sizeof(u8),
6372 .array_type = NO_ARRAY,
6373 .tlv_type = 0x13,
6374 .offset = offsetof(struct
6375 wlfw_ini_file_download_req_msg_v01,
6376 data_valid),
6377 },
6378 {
6379 .data_type = QMI_DATA_LEN,
6380 .elem_len = 1,
6381 .elem_size = sizeof(u16),
6382 .array_type = NO_ARRAY,
6383 .tlv_type = 0x13,
6384 .offset = offsetof(struct
6385 wlfw_ini_file_download_req_msg_v01,
6386 data_len),
6387 },
6388 {
6389 .data_type = QMI_UNSIGNED_1_BYTE,
6390 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
6391 .elem_size = sizeof(u8),
6392 .array_type = VAR_LEN_ARRAY,
6393 .tlv_type = 0x13,
6394 .offset = offsetof(struct
6395 wlfw_ini_file_download_req_msg_v01,
6396 data),
6397 },
6398 {
6399 .data_type = QMI_OPT_FLAG,
6400 .elem_len = 1,
6401 .elem_size = sizeof(u8),
6402 .array_type = NO_ARRAY,
6403 .tlv_type = 0x14,
6404 .offset = offsetof(struct
6405 wlfw_ini_file_download_req_msg_v01,
6406 end_valid),
6407 },
6408 {
6409 .data_type = QMI_UNSIGNED_1_BYTE,
6410 .elem_len = 1,
6411 .elem_size = sizeof(u8),
6412 .array_type = NO_ARRAY,
6413 .tlv_type = 0x14,
6414 .offset = offsetof(struct
6415 wlfw_ini_file_download_req_msg_v01,
6416 end),
6417 },
6418 {
6419 .data_type = QMI_EOTI,
6420 .array_type = NO_ARRAY,
6421 .tlv_type = QMI_COMMON_TLV_TYPE,
6422 },
6423 };
6424 EXPORT_SYMBOL(wlfw_ini_file_download_req_msg_v01_ei);
6425
6426 struct qmi_elem_info wlfw_ini_file_download_resp_msg_v01_ei[] = {
6427 {
6428 .data_type = QMI_STRUCT,
6429 .elem_len = 1,
6430 .elem_size = sizeof(struct qmi_response_type_v01),
6431 .array_type = NO_ARRAY,
6432 .tlv_type = 0x02,
6433 .offset = offsetof(struct
6434 wlfw_ini_file_download_resp_msg_v01,
6435 resp),
6436 .ei_array = qmi_response_type_v01_ei,
6437 },
6438 {
6439 .data_type = QMI_EOTI,
6440 .array_type = NO_ARRAY,
6441 .tlv_type = QMI_COMMON_TLV_TYPE,
6442 },
6443 };
6444 EXPORT_SYMBOL(wlfw_ini_file_download_resp_msg_v01_ei);
6445
6446 struct qmi_elem_info wlfw_phy_cap_req_msg_v01_ei[] = {
6447 {
6448 .data_type = QMI_EOTI,
6449 .array_type = NO_ARRAY,
6450 .tlv_type = QMI_COMMON_TLV_TYPE,
6451 },
6452 };
6453 EXPORT_SYMBOL(wlfw_phy_cap_req_msg_v01_ei);
6454
6455 struct qmi_elem_info wlfw_phy_cap_resp_msg_v01_ei[] = {
6456 {
6457 .data_type = QMI_STRUCT,
6458 .elem_len = 1,
6459 .elem_size = sizeof(struct qmi_response_type_v01),
6460 .array_type = NO_ARRAY,
6461 .tlv_type = 0x02,
6462 .offset = offsetof(struct
6463 wlfw_phy_cap_resp_msg_v01,
6464 resp),
6465 .ei_array = qmi_response_type_v01_ei,
6466 },
6467 {
6468 .data_type = QMI_OPT_FLAG,
6469 .elem_len = 1,
6470 .elem_size = sizeof(u8),
6471 .array_type = NO_ARRAY,
6472 .tlv_type = 0x10,
6473 .offset = offsetof(struct
6474 wlfw_phy_cap_resp_msg_v01,
6475 num_phy_valid),
6476 },
6477 {
6478 .data_type = QMI_UNSIGNED_1_BYTE,
6479 .elem_len = 1,
6480 .elem_size = sizeof(u8),
6481 .array_type = NO_ARRAY,
6482 .tlv_type = 0x10,
6483 .offset = offsetof(struct
6484 wlfw_phy_cap_resp_msg_v01,
6485 num_phy),
6486 },
6487 {
6488 .data_type = QMI_OPT_FLAG,
6489 .elem_len = 1,
6490 .elem_size = sizeof(u8),
6491 .array_type = NO_ARRAY,
6492 .tlv_type = 0x11,
6493 .offset = offsetof(struct
6494 wlfw_phy_cap_resp_msg_v01,
6495 board_id_valid),
6496 },
6497 {
6498 .data_type = QMI_UNSIGNED_4_BYTE,
6499 .elem_len = 1,
6500 .elem_size = sizeof(u32),
6501 .array_type = NO_ARRAY,
6502 .tlv_type = 0x11,
6503 .offset = offsetof(struct
6504 wlfw_phy_cap_resp_msg_v01,
6505 board_id),
6506 },
6507 {
6508 .data_type = QMI_OPT_FLAG,
6509 .elem_len = 1,
6510 .elem_size = sizeof(u8),
6511 .array_type = NO_ARRAY,
6512 .tlv_type = 0x12,
6513 .offset = offsetof(struct
6514 wlfw_phy_cap_resp_msg_v01,
6515 mlo_cap_v2_support_valid),
6516 },
6517 {
6518 .data_type = QMI_UNSIGNED_4_BYTE,
6519 .elem_len = 1,
6520 .elem_size = sizeof(u32),
6521 .array_type = NO_ARRAY,
6522 .tlv_type = 0x12,
6523 .offset = offsetof(struct
6524 wlfw_phy_cap_resp_msg_v01,
6525 mlo_cap_v2_support),
6526 },
6527 {
6528 .data_type = QMI_OPT_FLAG,
6529 .elem_len = 1,
6530 .elem_size = sizeof(u8),
6531 .array_type = NO_ARRAY,
6532 .tlv_type = 0x13,
6533 .offset = offsetof(struct
6534 wlfw_phy_cap_resp_msg_v01,
6535 single_chip_mlo_support_valid),
6536 },
6537 {
6538 .data_type = QMI_UNSIGNED_1_BYTE,
6539 .elem_len = 1,
6540 .elem_size = sizeof(u8),
6541 .array_type = NO_ARRAY,
6542 .tlv_type = 0x13,
6543 .offset = offsetof(struct
6544 wlfw_phy_cap_resp_msg_v01,
6545 single_chip_mlo_support),
6546 },
6547 {
6548 .data_type = QMI_EOTI,
6549 .array_type = NO_ARRAY,
6550 .tlv_type = QMI_COMMON_TLV_TYPE,
6551 },
6552 };
6553 EXPORT_SYMBOL(wlfw_phy_cap_resp_msg_v01_ei);
6554
6555 struct qmi_elem_info wlfw_wlan_hw_init_cfg_req_msg_v01_ei[] = {
6556 {
6557 .data_type = QMI_OPT_FLAG,
6558 .elem_len = 1,
6559 .elem_size = sizeof(u8),
6560 .array_type = NO_ARRAY,
6561 .tlv_type = 0x10,
6562 .offset = offsetof(struct
6563 wlfw_wlan_hw_init_cfg_req_msg_v01,
6564 rf_subtype_valid),
6565 },
6566 {
6567 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6568 .elem_len = 1,
6569 .elem_size = sizeof(enum wlfw_wlan_rf_subtype_v01),
6570 .array_type = NO_ARRAY,
6571 .tlv_type = 0x10,
6572 .offset = offsetof(struct
6573 wlfw_wlan_hw_init_cfg_req_msg_v01,
6574 rf_subtype),
6575 },
6576 {
6577 .data_type = QMI_EOTI,
6578 .array_type = NO_ARRAY,
6579 .tlv_type = QMI_COMMON_TLV_TYPE,
6580 },
6581 };
6582 EXPORT_SYMBOL(wlfw_wlan_hw_init_cfg_req_msg_v01_ei);
6583
6584 struct qmi_elem_info wlfw_wlan_hw_init_cfg_resp_msg_v01_ei[] = {
6585 {
6586 .data_type = QMI_STRUCT,
6587 .elem_len = 1,
6588 .elem_size = sizeof(struct qmi_response_type_v01),
6589 .array_type = NO_ARRAY,
6590 .tlv_type = 0x02,
6591 .offset = offsetof(struct
6592 wlfw_wlan_hw_init_cfg_resp_msg_v01,
6593 resp),
6594 .ei_array = qmi_response_type_v01_ei,
6595 },
6596 {
6597 .data_type = QMI_EOTI,
6598 .array_type = NO_ARRAY,
6599 .tlv_type = QMI_COMMON_TLV_TYPE,
6600 },
6601 };
6602 EXPORT_SYMBOL(wlfw_wlan_hw_init_cfg_resp_msg_v01_ei);
6603
6604 struct qmi_elem_info wlfw_pcie_link_ctrl_req_msg_v01_ei[] = {
6605 {
6606 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6607 .elem_len = 1,
6608 .elem_size = sizeof(enum wlfw_pcie_link_state_enum_v01),
6609 .array_type = NO_ARRAY,
6610 .tlv_type = 0x01,
6611 .offset = offsetof(struct
6612 wlfw_pcie_link_ctrl_req_msg_v01,
6613 link_state_req),
6614 },
6615 {
6616 .data_type = QMI_EOTI,
6617 .array_type = NO_ARRAY,
6618 .tlv_type = QMI_COMMON_TLV_TYPE,
6619 },
6620 };
6621 EXPORT_SYMBOL(wlfw_pcie_link_ctrl_req_msg_v01_ei);
6622
6623 struct qmi_elem_info wlfw_pcie_link_ctrl_resp_msg_v01_ei[] = {
6624 {
6625 .data_type = QMI_STRUCT,
6626 .elem_len = 1,
6627 .elem_size = sizeof(struct qmi_response_type_v01),
6628 .array_type = NO_ARRAY,
6629 .tlv_type = 0x02,
6630 .offset = offsetof(struct
6631 wlfw_pcie_link_ctrl_resp_msg_v01,
6632 resp),
6633 .ei_array = qmi_response_type_v01_ei,
6634 },
6635 {
6636 .data_type = QMI_EOTI,
6637 .array_type = NO_ARRAY,
6638 .tlv_type = QMI_COMMON_TLV_TYPE,
6639 },
6640 };
6641 EXPORT_SYMBOL(wlfw_pcie_link_ctrl_resp_msg_v01_ei);
6642
6643 struct qmi_elem_info wlfw_aux_uc_info_req_msg_v01_ei[] = {
6644 {
6645 .data_type = QMI_UNSIGNED_8_BYTE,
6646 .elem_len = 1,
6647 .elem_size = sizeof(u64),
6648 .array_type = NO_ARRAY,
6649 .tlv_type = 0x01,
6650 .offset = offsetof(struct
6651 wlfw_aux_uc_info_req_msg_v01,
6652 addr),
6653 },
6654 {
6655 .data_type = QMI_UNSIGNED_4_BYTE,
6656 .elem_len = 1,
6657 .elem_size = sizeof(u32),
6658 .array_type = NO_ARRAY,
6659 .tlv_type = 0x02,
6660 .offset = offsetof(struct
6661 wlfw_aux_uc_info_req_msg_v01,
6662 size),
6663 },
6664 {
6665 .data_type = QMI_EOTI,
6666 .array_type = NO_ARRAY,
6667 .tlv_type = QMI_COMMON_TLV_TYPE,
6668 },
6669 };
6670 EXPORT_SYMBOL(wlfw_aux_uc_info_req_msg_v01_ei);
6671
6672 struct qmi_elem_info wlfw_aux_uc_info_resp_msg_v01_ei[] = {
6673 {
6674 .data_type = QMI_STRUCT,
6675 .elem_len = 1,
6676 .elem_size = sizeof(struct qmi_response_type_v01),
6677 .array_type = NO_ARRAY,
6678 .tlv_type = 0x02,
6679 .offset = offsetof(struct
6680 wlfw_aux_uc_info_resp_msg_v01,
6681 resp),
6682 .ei_array = qmi_response_type_v01_ei,
6683 },
6684 {
6685 .data_type = QMI_EOTI,
6686 .array_type = NO_ARRAY,
6687 .tlv_type = QMI_COMMON_TLV_TYPE,
6688 },
6689 };
6690 EXPORT_SYMBOL(wlfw_aux_uc_info_resp_msg_v01_ei);
6691
6692 struct qmi_elem_info wlfw_tme_lite_info_req_msg_v01_ei[] = {
6693 {
6694 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6695 .elem_len = 1,
6696 .elem_size = sizeof(enum wlfw_tme_lite_file_type_v01),
6697 .array_type = NO_ARRAY,
6698 .tlv_type = 0x01,
6699 .offset = offsetof(struct
6700 wlfw_tme_lite_info_req_msg_v01,
6701 tme_file),
6702 },
6703 {
6704 .data_type = QMI_UNSIGNED_8_BYTE,
6705 .elem_len = 1,
6706 .elem_size = sizeof(u64),
6707 .array_type = NO_ARRAY,
6708 .tlv_type = 0x02,
6709 .offset = offsetof(struct
6710 wlfw_tme_lite_info_req_msg_v01,
6711 addr),
6712 },
6713 {
6714 .data_type = QMI_UNSIGNED_4_BYTE,
6715 .elem_len = 1,
6716 .elem_size = sizeof(u32),
6717 .array_type = NO_ARRAY,
6718 .tlv_type = 0x03,
6719 .offset = offsetof(struct
6720 wlfw_tme_lite_info_req_msg_v01,
6721 size),
6722 },
6723 {
6724 .data_type = QMI_EOTI,
6725 .array_type = NO_ARRAY,
6726 .tlv_type = QMI_COMMON_TLV_TYPE,
6727 },
6728 };
6729 EXPORT_SYMBOL(wlfw_tme_lite_info_req_msg_v01_ei);
6730
6731 struct qmi_elem_info wlfw_tme_lite_info_resp_msg_v01_ei[] = {
6732 {
6733 .data_type = QMI_STRUCT,
6734 .elem_len = 1,
6735 .elem_size = sizeof(struct qmi_response_type_v01),
6736 .array_type = NO_ARRAY,
6737 .tlv_type = 0x02,
6738 .offset = offsetof(struct
6739 wlfw_tme_lite_info_resp_msg_v01,
6740 resp),
6741 .ei_array = qmi_response_type_v01_ei,
6742 },
6743 {
6744 .data_type = QMI_EOTI,
6745 .array_type = NO_ARRAY,
6746 .tlv_type = QMI_COMMON_TLV_TYPE,
6747 },
6748 };
6749 EXPORT_SYMBOL(wlfw_tme_lite_info_resp_msg_v01_ei);
6750
6751 struct qmi_elem_info wlfw_soft_sku_info_req_msg_v01_ei[] = {
6752 {
6753 .data_type = QMI_UNSIGNED_8_BYTE,
6754 .elem_len = 1,
6755 .elem_size = sizeof(u64),
6756 .array_type = NO_ARRAY,
6757 .tlv_type = 0x01,
6758 .offset = offsetof(struct
6759 wlfw_soft_sku_info_req_msg_v01,
6760 addr),
6761 },
6762 {
6763 .data_type = QMI_UNSIGNED_4_BYTE,
6764 .elem_len = 1,
6765 .elem_size = sizeof(u32),
6766 .array_type = NO_ARRAY,
6767 .tlv_type = 0x02,
6768 .offset = offsetof(struct
6769 wlfw_soft_sku_info_req_msg_v01,
6770 size),
6771 },
6772 {
6773 .data_type = QMI_EOTI,
6774 .array_type = NO_ARRAY,
6775 .tlv_type = QMI_COMMON_TLV_TYPE,
6776 },
6777 };
6778 EXPORT_SYMBOL(wlfw_soft_sku_info_req_msg_v01_ei);
6779
6780 struct qmi_elem_info wlfw_soft_sku_info_resp_msg_v01_ei[] = {
6781 {
6782 .data_type = QMI_STRUCT,
6783 .elem_len = 1,
6784 .elem_size = sizeof(struct qmi_response_type_v01),
6785 .array_type = NO_ARRAY,
6786 .tlv_type = 0x02,
6787 .offset = offsetof(struct
6788 wlfw_soft_sku_info_resp_msg_v01,
6789 resp),
6790 .ei_array = qmi_response_type_v01_ei,
6791 },
6792 {
6793 .data_type = QMI_EOTI,
6794 .array_type = NO_ARRAY,
6795 .tlv_type = QMI_COMMON_TLV_TYPE,
6796 },
6797 };
6798 EXPORT_SYMBOL(wlfw_soft_sku_info_resp_msg_v01_ei);
6799
6800 struct qmi_elem_info wlfw_fw_ssr_ind_msg_v01_ei[] = {
6801 {
6802 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6803 .elem_len = 1,
6804 .elem_size = sizeof(enum wlfw_fw_ssr_reason_v01),
6805 .array_type = NO_ARRAY,
6806 .tlv_type = 0x01,
6807 .offset = offsetof(struct
6808 wlfw_fw_ssr_ind_msg_v01,
6809 reason_code),
6810 },
6811 {
6812 .data_type = QMI_EOTI,
6813 .array_type = NO_ARRAY,
6814 .tlv_type = QMI_COMMON_TLV_TYPE,
6815 },
6816 };
6817 EXPORT_SYMBOL(wlfw_fw_ssr_ind_msg_v01_ei);
6818
6819 struct qmi_elem_info wlfw_bmps_ctrl_req_msg_v01_ei[] = {
6820 {
6821 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6822 .elem_len = 1,
6823 .elem_size = sizeof(enum wlfw_bmps_state_enum_v01),
6824 .array_type = NO_ARRAY,
6825 .tlv_type = 0x01,
6826 .offset = offsetof(struct
6827 wlfw_bmps_ctrl_req_msg_v01,
6828 bmps_state),
6829 },
6830 {
6831 .data_type = QMI_EOTI,
6832 .array_type = NO_ARRAY,
6833 .tlv_type = QMI_COMMON_TLV_TYPE,
6834 },
6835 };
6836 EXPORT_SYMBOL(wlfw_bmps_ctrl_req_msg_v01_ei);
6837
6838 struct qmi_elem_info wlfw_bmps_ctrl_resp_msg_v01_ei[] = {
6839 {
6840 .data_type = QMI_STRUCT,
6841 .elem_len = 1,
6842 .elem_size = sizeof(struct qmi_response_type_v01),
6843 .array_type = NO_ARRAY,
6844 .tlv_type = 0x02,
6845 .offset = offsetof(struct
6846 wlfw_bmps_ctrl_resp_msg_v01,
6847 resp),
6848 .ei_array = qmi_response_type_v01_ei,
6849 },
6850 {
6851 .data_type = QMI_EOTI,
6852 .array_type = NO_ARRAY,
6853 .tlv_type = QMI_COMMON_TLV_TYPE,
6854 },
6855 };
6856 EXPORT_SYMBOL(wlfw_bmps_ctrl_resp_msg_v01_ei);
6857
6858 struct qmi_elem_info wlfw_lpass_ssr_req_msg_v01_ei[] = {
6859 {
6860 .data_type = QMI_SIGNED_4_BYTE_ENUM,
6861 .elem_len = 1,
6862 .elem_size = sizeof(enum wlfw_lpass_ssr_reason_v01),
6863 .array_type = NO_ARRAY,
6864 .tlv_type = 0x01,
6865 .offset = offsetof(struct
6866 wlfw_lpass_ssr_req_msg_v01,
6867 reason_code),
6868 },
6869 {
6870 .data_type = QMI_EOTI,
6871 .array_type = NO_ARRAY,
6872 .tlv_type = QMI_COMMON_TLV_TYPE,
6873 },
6874 };
6875 EXPORT_SYMBOL(wlfw_lpass_ssr_req_msg_v01_ei);
6876
6877 struct qmi_elem_info wlfw_lpass_ssr_resp_msg_v01_ei[] = {
6878 {
6879 .data_type = QMI_STRUCT,
6880 .elem_len = 1,
6881 .elem_size = sizeof(struct qmi_response_type_v01),
6882 .array_type = NO_ARRAY,
6883 .tlv_type = 0x02,
6884 .offset = offsetof(struct
6885 wlfw_lpass_ssr_resp_msg_v01,
6886 resp),
6887 .ei_array = qmi_response_type_v01_ei,
6888 },
6889 {
6890 .data_type = QMI_EOTI,
6891 .array_type = NO_ARRAY,
6892 .tlv_type = QMI_COMMON_TLV_TYPE,
6893 },
6894 };
6895 EXPORT_SYMBOL(wlfw_lpass_ssr_resp_msg_v01_ei);
6896
6897 struct qmi_elem_info wlfw_mlo_reconfig_info_req_msg_v01_ei[] = {
6898 {
6899 .data_type = QMI_OPT_FLAG,
6900 .elem_len = 1,
6901 .elem_size = sizeof(u8),
6902 .array_type = NO_ARRAY,
6903 .tlv_type = 0x10,
6904 .offset = offsetof(struct
6905 wlfw_mlo_reconfig_info_req_msg_v01,
6906 mlo_capable_valid),
6907 },
6908 {
6909 .data_type = QMI_UNSIGNED_1_BYTE,
6910 .elem_len = 1,
6911 .elem_size = sizeof(u8),
6912 .array_type = NO_ARRAY,
6913 .tlv_type = 0x10,
6914 .offset = offsetof(struct
6915 wlfw_mlo_reconfig_info_req_msg_v01,
6916 mlo_capable),
6917 },
6918 {
6919 .data_type = QMI_OPT_FLAG,
6920 .elem_len = 1,
6921 .elem_size = sizeof(u8),
6922 .array_type = NO_ARRAY,
6923 .tlv_type = 0x11,
6924 .offset = offsetof(struct
6925 wlfw_mlo_reconfig_info_req_msg_v01,
6926 mlo_chip_id_valid),
6927 },
6928 {
6929 .data_type = QMI_UNSIGNED_2_BYTE,
6930 .elem_len = 1,
6931 .elem_size = sizeof(u16),
6932 .array_type = NO_ARRAY,
6933 .tlv_type = 0x11,
6934 .offset = offsetof(struct
6935 wlfw_mlo_reconfig_info_req_msg_v01,
6936 mlo_chip_id),
6937 },
6938 {
6939 .data_type = QMI_OPT_FLAG,
6940 .elem_len = 1,
6941 .elem_size = sizeof(u8),
6942 .array_type = NO_ARRAY,
6943 .tlv_type = 0x12,
6944 .offset = offsetof(struct
6945 wlfw_mlo_reconfig_info_req_msg_v01,
6946 mlo_group_id_valid),
6947 },
6948 {
6949 .data_type = QMI_UNSIGNED_1_BYTE,
6950 .elem_len = 1,
6951 .elem_size = sizeof(u8),
6952 .array_type = NO_ARRAY,
6953 .tlv_type = 0x12,
6954 .offset = offsetof(struct
6955 wlfw_mlo_reconfig_info_req_msg_v01,
6956 mlo_group_id),
6957 },
6958 {
6959 .data_type = QMI_OPT_FLAG,
6960 .elem_len = 1,
6961 .elem_size = sizeof(u8),
6962 .array_type = NO_ARRAY,
6963 .tlv_type = 0x13,
6964 .offset = offsetof(struct
6965 wlfw_mlo_reconfig_info_req_msg_v01,
6966 max_mlo_peer_valid),
6967 },
6968 {
6969 .data_type = QMI_UNSIGNED_2_BYTE,
6970 .elem_len = 1,
6971 .elem_size = sizeof(u16),
6972 .array_type = NO_ARRAY,
6973 .tlv_type = 0x13,
6974 .offset = offsetof(struct
6975 wlfw_mlo_reconfig_info_req_msg_v01,
6976 max_mlo_peer),
6977 },
6978 {
6979 .data_type = QMI_OPT_FLAG,
6980 .elem_len = 1,
6981 .elem_size = sizeof(u8),
6982 .array_type = NO_ARRAY,
6983 .tlv_type = 0x14,
6984 .offset = offsetof(struct
6985 wlfw_mlo_reconfig_info_req_msg_v01,
6986 mlo_num_chips_valid),
6987 },
6988 {
6989 .data_type = QMI_UNSIGNED_1_BYTE,
6990 .elem_len = 1,
6991 .elem_size = sizeof(u8),
6992 .array_type = NO_ARRAY,
6993 .tlv_type = 0x14,
6994 .offset = offsetof(struct
6995 wlfw_mlo_reconfig_info_req_msg_v01,
6996 mlo_num_chips),
6997 },
6998 {
6999 .data_type = QMI_OPT_FLAG,
7000 .elem_len = 1,
7001 .elem_size = sizeof(u8),
7002 .array_type = NO_ARRAY,
7003 .tlv_type = 0x15,
7004 .offset = offsetof(struct
7005 wlfw_mlo_reconfig_info_req_msg_v01,
7006 mlo_chip_info_valid),
7007 },
7008 {
7009 .data_type = QMI_STRUCT,
7010 .elem_len = QMI_WLFW_MAX_MLO_CHIP_V01,
7011 .elem_size = sizeof(struct mlo_chip_info_s_v01),
7012 .array_type = STATIC_ARRAY,
7013 .tlv_type = 0x15,
7014 .offset = offsetof(struct
7015 wlfw_mlo_reconfig_info_req_msg_v01,
7016 mlo_chip_info),
7017 .ei_array = mlo_chip_info_s_v01_ei,
7018 },
7019 {
7020 .data_type = QMI_OPT_FLAG,
7021 .elem_len = 1,
7022 .elem_size = sizeof(u8),
7023 .array_type = NO_ARRAY,
7024 .tlv_type = 0x16,
7025 .offset = offsetof(struct
7026 wlfw_mlo_reconfig_info_req_msg_v01,
7027 mlo_chip_v2_info_valid),
7028 },
7029 {
7030 .data_type = QMI_STRUCT,
7031 .elem_len = QMI_WLFW_MLO_V2_CHP_V01,
7032 .elem_size = sizeof(struct mlo_chip_v2_info_s_v01),
7033 .array_type = STATIC_ARRAY,
7034 .tlv_type = 0x16,
7035 .offset = offsetof(struct
7036 wlfw_mlo_reconfig_info_req_msg_v01,
7037 mlo_chip_v2_info),
7038 .ei_array = mlo_chip_v2_info_s_v01_ei,
7039 },
7040 {
7041 .data_type = QMI_EOTI,
7042 .array_type = NO_ARRAY,
7043 .tlv_type = QMI_COMMON_TLV_TYPE,
7044 },
7045 };
7046 EXPORT_SYMBOL(wlfw_mlo_reconfig_info_req_msg_v01_ei);
7047
7048 struct qmi_elem_info wlfw_mlo_reconfig_info_resp_msg_v01_ei[] = {
7049 {
7050 .data_type = QMI_STRUCT,
7051 .elem_len = 1,
7052 .elem_size = sizeof(struct qmi_response_type_v01),
7053 .array_type = NO_ARRAY,
7054 .tlv_type = 0x02,
7055 .offset = offsetof(struct
7056 wlfw_mlo_reconfig_info_resp_msg_v01,
7057 resp),
7058 .ei_array = qmi_response_type_v01_ei,
7059 },
7060 {
7061 .data_type = QMI_EOTI,
7062 .array_type = NO_ARRAY,
7063 .tlv_type = QMI_COMMON_TLV_TYPE,
7064 },
7065 };
7066 EXPORT_SYMBOL(wlfw_mlo_reconfig_info_resp_msg_v01_ei);
7067
7068 struct qmi_elem_info wlfw_driver_async_data_ind_msg_v01_ei[] = {
7069 {
7070 .data_type = QMI_DATA_LEN,
7071 .elem_len = 1,
7072 .elem_size = sizeof(u16),
7073 .array_type = NO_ARRAY,
7074 .tlv_type = 0x01,
7075 .offset = offsetof(struct
7076 wlfw_driver_async_data_ind_msg_v01,
7077 data_len),
7078 },
7079 {
7080 .data_type = QMI_UNSIGNED_1_BYTE,
7081 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
7082 .elem_size = sizeof(u8),
7083 .array_type = VAR_LEN_ARRAY,
7084 .tlv_type = 0x01,
7085 .offset = offsetof(struct
7086 wlfw_driver_async_data_ind_msg_v01,
7087 data),
7088 },
7089 {
7090 .data_type = QMI_UNSIGNED_2_BYTE,
7091 .elem_len = 1,
7092 .elem_size = sizeof(u16),
7093 .array_type = NO_ARRAY,
7094 .tlv_type = 0x02,
7095 .offset = offsetof(struct
7096 wlfw_driver_async_data_ind_msg_v01,
7097 type),
7098 },
7099 {
7100 .data_type = QMI_EOTI,
7101 .array_type = NO_ARRAY,
7102 .tlv_type = QMI_COMMON_TLV_TYPE,
7103 },
7104 };
7105 EXPORT_SYMBOL(wlfw_driver_async_data_ind_msg_v01_ei);
7106
7107 /**
7108 * wlfw_is_valid_dt_node_found - Check if valid device tree node present
7109 *
7110 * Valid device tree node means a node with "qcom,wlan" property present and
7111 * "status" property not disabled.
7112 *
7113 * Return: true if valid device tree node found, false if not found
7114 */
wlfw_is_valid_dt_node_found(void)7115 static bool wlfw_is_valid_dt_node_found(void)
7116 {
7117 struct device_node *dn = NULL;
7118
7119 for_each_node_with_property(dn, "qcom,wlan") {
7120 if (of_device_is_available(dn))
7121 break;
7122 }
7123
7124 if (dn)
7125 return true;
7126
7127 return false;
7128 }
7129
wlfw_init(void)7130 static int __init wlfw_init(void)
7131 {
7132 if (!wlfw_is_valid_dt_node_found())
7133 return -ENODEV;
7134
7135 return 0;
7136 }
7137
7138 module_init(wlfw_init);
7139 MODULE_LICENSE("GPL v2");
7140 MODULE_DESCRIPTION("WLAN FW QMI service");
7141