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