1// SPDX-License-Identifier: ISC
2/*
3 * Copyright (c) 2018 The Linux Foundation. All rights reserved.
4 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
5 */
6
7#include <linux/soc/qcom/qmi.h>
8#include <linux/types.h>
9#include "qmi_wlfw_v01.h"
10
11static const struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
12 {
13 .data_type = QMI_UNSIGNED_4_BYTE,
14 .elem_len = 1,
15 .elem_size = sizeof(u32),
16 .array_type = NO_ARRAY,
17 .tlv_type = 0,
18 .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
19 pipe_num),
20 },
21 {
22 .data_type = QMI_SIGNED_4_BYTE_ENUM,
23 .elem_len = 1,
24 .elem_size = sizeof(enum wlfw_pipedir_enum_v01),
25 .array_type = NO_ARRAY,
26 .tlv_type = 0,
27 .offset = offsetof(struct 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 wlfw_ce_tgt_pipe_cfg_s_v01,
37 nentries),
38 },
39 {
40 .data_type = QMI_UNSIGNED_4_BYTE,
41 .elem_len = 1,
42 .elem_size = sizeof(u32),
43 .array_type = NO_ARRAY,
44 .tlv_type = 0,
45 .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
46 nbytes_max),
47 },
48 {
49 .data_type = QMI_UNSIGNED_4_BYTE,
50 .elem_len = 1,
51 .elem_size = sizeof(u32),
52 .array_type = NO_ARRAY,
53 .tlv_type = 0,
54 .offset = offsetof(struct wlfw_ce_tgt_pipe_cfg_s_v01,
55 flags),
56 },
57 {}
58};
59
60static const struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
61 {
62 .data_type = QMI_UNSIGNED_4_BYTE,
63 .elem_len = 1,
64 .elem_size = sizeof(u32),
65 .array_type = NO_ARRAY,
66 .tlv_type = 0,
67 .offset = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
68 service_id),
69 },
70 {
71 .data_type = QMI_SIGNED_4_BYTE_ENUM,
72 .elem_len = 1,
73 .elem_size = sizeof(enum wlfw_pipedir_enum_v01),
74 .array_type = NO_ARRAY,
75 .tlv_type = 0,
76 .offset = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
77 pipe_dir),
78 },
79 {
80 .data_type = QMI_UNSIGNED_4_BYTE,
81 .elem_len = 1,
82 .elem_size = sizeof(u32),
83 .array_type = NO_ARRAY,
84 .tlv_type = 0,
85 .offset = offsetof(struct wlfw_ce_svc_pipe_cfg_s_v01,
86 pipe_num),
87 },
88 {}
89};
90
91static const struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
92 {
93 .data_type = QMI_UNSIGNED_2_BYTE,
94 .elem_len = 1,
95 .elem_size = sizeof(u16),
96 .array_type = NO_ARRAY,
97 .tlv_type = 0,
98 .offset = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
99 id),
100 },
101 {
102 .data_type = QMI_UNSIGNED_2_BYTE,
103 .elem_len = 1,
104 .elem_size = sizeof(u16),
105 .array_type = NO_ARRAY,
106 .tlv_type = 0,
107 .offset = offsetof(struct wlfw_shadow_reg_cfg_s_v01,
108 offset),
109 },
110 {}
111};
112
113static const struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
114 {
115 .data_type = QMI_UNSIGNED_4_BYTE,
116 .elem_len = 1,
117 .elem_size = sizeof(u32),
118 .array_type = NO_ARRAY,
119 .tlv_type = 0,
120 .offset = offsetof(struct wlfw_shadow_reg_v2_cfg_s_v01,
121 addr),
122 },
123 {}
124};
125
126static const struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
127 {
128 .data_type = QMI_UNSIGNED_8_BYTE,
129 .elem_len = 1,
130 .elem_size = sizeof(u64),
131 .array_type = NO_ARRAY,
132 .tlv_type = 0,
133 .offset = offsetof(struct wlfw_memory_region_info_s_v01,
134 region_addr),
135 },
136 {
137 .data_type = QMI_UNSIGNED_4_BYTE,
138 .elem_len = 1,
139 .elem_size = sizeof(u32),
140 .array_type = NO_ARRAY,
141 .tlv_type = 0,
142 .offset = offsetof(struct wlfw_memory_region_info_s_v01,
143 size),
144 },
145 {
146 .data_type = QMI_UNSIGNED_1_BYTE,
147 .elem_len = 1,
148 .elem_size = sizeof(u8),
149 .array_type = NO_ARRAY,
150 .tlv_type = 0,
151 .offset = offsetof(struct wlfw_memory_region_info_s_v01,
152 secure_flag),
153 },
154 {}
155};
156
157static const struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
158 {
159 .data_type = QMI_UNSIGNED_8_BYTE,
160 .elem_len = 1,
161 .elem_size = sizeof(u64),
162 .array_type = NO_ARRAY,
163 .tlv_type = 0,
164 .offset = offsetof(struct wlfw_mem_cfg_s_v01,
165 offset),
166 },
167 {
168 .data_type = QMI_UNSIGNED_4_BYTE,
169 .elem_len = 1,
170 .elem_size = sizeof(u32),
171 .array_type = NO_ARRAY,
172 .tlv_type = 0,
173 .offset = offsetof(struct wlfw_mem_cfg_s_v01,
174 size),
175 },
176 {
177 .data_type = QMI_UNSIGNED_1_BYTE,
178 .elem_len = 1,
179 .elem_size = sizeof(u8),
180 .array_type = NO_ARRAY,
181 .tlv_type = 0,
182 .offset = offsetof(struct wlfw_mem_cfg_s_v01,
183 secure_flag),
184 },
185 {}
186};
187
188static const struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
189 {
190 .data_type = QMI_UNSIGNED_4_BYTE,
191 .elem_len = 1,
192 .elem_size = sizeof(u32),
193 .array_type = NO_ARRAY,
194 .tlv_type = 0,
195 .offset = offsetof(struct wlfw_mem_seg_s_v01,
196 size),
197 },
198 {
199 .data_type = QMI_SIGNED_4_BYTE_ENUM,
200 .elem_len = 1,
201 .elem_size = sizeof(enum wlfw_mem_type_enum_v01),
202 .array_type = NO_ARRAY,
203 .tlv_type = 0,
204 .offset = offsetof(struct wlfw_mem_seg_s_v01,
205 type),
206 },
207 {
208 .data_type = QMI_DATA_LEN,
209 .elem_len = 1,
210 .elem_size = sizeof(u8),
211 .array_type = NO_ARRAY,
212 .tlv_type = 0,
213 .offset = offsetof(struct wlfw_mem_seg_s_v01,
214 mem_cfg_len),
215 },
216 {
217 .data_type = QMI_STRUCT,
218 .elem_len = QMI_WLFW_MAX_NUM_MEM_CFG_V01,
219 .elem_size = sizeof(struct wlfw_mem_cfg_s_v01),
220 .array_type = VAR_LEN_ARRAY,
221 .tlv_type = 0,
222 .offset = offsetof(struct wlfw_mem_seg_s_v01,
223 mem_cfg),
224 .ei_array = wlfw_mem_cfg_s_v01_ei,
225 },
226 {}
227};
228
229static const struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
230 {
231 .data_type = QMI_UNSIGNED_8_BYTE,
232 .elem_len = 1,
233 .elem_size = sizeof(u64),
234 .array_type = NO_ARRAY,
235 .tlv_type = 0,
236 .offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
237 addr),
238 },
239 {
240 .data_type = QMI_UNSIGNED_4_BYTE,
241 .elem_len = 1,
242 .elem_size = sizeof(u32),
243 .array_type = NO_ARRAY,
244 .tlv_type = 0,
245 .offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
246 size),
247 },
248 {
249 .data_type = QMI_SIGNED_4_BYTE_ENUM,
250 .elem_len = 1,
251 .elem_size = sizeof(enum wlfw_mem_type_enum_v01),
252 .array_type = NO_ARRAY,
253 .tlv_type = 0,
254 .offset = offsetof(struct wlfw_mem_seg_resp_s_v01,
255 type),
256 },
257 {}
258};
259
260static const struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
261 {
262 .data_type = QMI_UNSIGNED_4_BYTE,
263 .elem_len = 1,
264 .elem_size = sizeof(u32),
265 .array_type = NO_ARRAY,
266 .tlv_type = 0,
267 .offset = offsetof(struct wlfw_rf_chip_info_s_v01,
268 chip_id),
269 },
270 {
271 .data_type = QMI_UNSIGNED_4_BYTE,
272 .elem_len = 1,
273 .elem_size = sizeof(u32),
274 .array_type = NO_ARRAY,
275 .tlv_type = 0,
276 .offset = offsetof(struct wlfw_rf_chip_info_s_v01,
277 chip_family),
278 },
279 {}
280};
281
282static const struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
283 {
284 .data_type = QMI_UNSIGNED_4_BYTE,
285 .elem_len = 1,
286 .elem_size = sizeof(u32),
287 .array_type = NO_ARRAY,
288 .tlv_type = 0,
289 .offset = offsetof(struct wlfw_rf_board_info_s_v01,
290 board_id),
291 },
292 {}
293};
294
295static const struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
296 {
297 .data_type = QMI_UNSIGNED_4_BYTE,
298 .elem_len = 1,
299 .elem_size = sizeof(u32),
300 .array_type = NO_ARRAY,
301 .tlv_type = 0,
302 .offset = offsetof(struct wlfw_soc_info_s_v01,
303 soc_id),
304 },
305 {}
306};
307
308static const struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
309 {
310 .data_type = QMI_UNSIGNED_4_BYTE,
311 .elem_len = 1,
312 .elem_size = sizeof(u32),
313 .array_type = NO_ARRAY,
314 .tlv_type = 0,
315 .offset = offsetof(struct wlfw_fw_version_info_s_v01,
316 fw_version),
317 },
318 {
319 .data_type = QMI_STRING,
320 .elem_len = QMI_WLFW_MAX_TIMESTAMP_LEN_V01 + 1,
321 .elem_size = sizeof(char),
322 .array_type = NO_ARRAY,
323 .tlv_type = 0,
324 .offset = offsetof(struct wlfw_fw_version_info_s_v01,
325 fw_build_timestamp),
326 },
327 {}
328};
329
330const struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
331 {
332 .data_type = QMI_OPT_FLAG,
333 .elem_len = 1,
334 .elem_size = sizeof(u8),
335 .array_type = NO_ARRAY,
336 .tlv_type = 0x10,
337 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
338 fw_ready_enable_valid),
339 },
340 {
341 .data_type = QMI_UNSIGNED_1_BYTE,
342 .elem_len = 1,
343 .elem_size = sizeof(u8),
344 .array_type = NO_ARRAY,
345 .tlv_type = 0x10,
346 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
347 fw_ready_enable),
348 },
349 {
350 .data_type = QMI_OPT_FLAG,
351 .elem_len = 1,
352 .elem_size = sizeof(u8),
353 .array_type = NO_ARRAY,
354 .tlv_type = 0x11,
355 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
356 initiate_cal_download_enable_valid),
357 },
358 {
359 .data_type = QMI_UNSIGNED_1_BYTE,
360 .elem_len = 1,
361 .elem_size = sizeof(u8),
362 .array_type = NO_ARRAY,
363 .tlv_type = 0x11,
364 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
365 initiate_cal_download_enable),
366 },
367 {
368 .data_type = QMI_OPT_FLAG,
369 .elem_len = 1,
370 .elem_size = sizeof(u8),
371 .array_type = NO_ARRAY,
372 .tlv_type = 0x12,
373 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
374 initiate_cal_update_enable_valid),
375 },
376 {
377 .data_type = QMI_UNSIGNED_1_BYTE,
378 .elem_len = 1,
379 .elem_size = sizeof(u8),
380 .array_type = NO_ARRAY,
381 .tlv_type = 0x12,
382 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
383 initiate_cal_update_enable),
384 },
385 {
386 .data_type = QMI_OPT_FLAG,
387 .elem_len = 1,
388 .elem_size = sizeof(u8),
389 .array_type = NO_ARRAY,
390 .tlv_type = 0x13,
391 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
392 msa_ready_enable_valid),
393 },
394 {
395 .data_type = QMI_UNSIGNED_1_BYTE,
396 .elem_len = 1,
397 .elem_size = sizeof(u8),
398 .array_type = NO_ARRAY,
399 .tlv_type = 0x13,
400 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
401 msa_ready_enable),
402 },
403 {
404 .data_type = QMI_OPT_FLAG,
405 .elem_len = 1,
406 .elem_size = sizeof(u8),
407 .array_type = NO_ARRAY,
408 .tlv_type = 0x14,
409 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
410 pin_connect_result_enable_valid),
411 },
412 {
413 .data_type = QMI_UNSIGNED_1_BYTE,
414 .elem_len = 1,
415 .elem_size = sizeof(u8),
416 .array_type = NO_ARRAY,
417 .tlv_type = 0x14,
418 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
419 pin_connect_result_enable),
420 },
421 {
422 .data_type = QMI_OPT_FLAG,
423 .elem_len = 1,
424 .elem_size = sizeof(u8),
425 .array_type = NO_ARRAY,
426 .tlv_type = 0x15,
427 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
428 client_id_valid),
429 },
430 {
431 .data_type = QMI_UNSIGNED_4_BYTE,
432 .elem_len = 1,
433 .elem_size = sizeof(u32),
434 .array_type = NO_ARRAY,
435 .tlv_type = 0x15,
436 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
437 client_id),
438 },
439 {
440 .data_type = QMI_OPT_FLAG,
441 .elem_len = 1,
442 .elem_size = sizeof(u8),
443 .array_type = NO_ARRAY,
444 .tlv_type = 0x16,
445 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
446 request_mem_enable_valid),
447 },
448 {
449 .data_type = QMI_UNSIGNED_1_BYTE,
450 .elem_len = 1,
451 .elem_size = sizeof(u8),
452 .array_type = NO_ARRAY,
453 .tlv_type = 0x16,
454 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
455 request_mem_enable),
456 },
457 {
458 .data_type = QMI_OPT_FLAG,
459 .elem_len = 1,
460 .elem_size = sizeof(u8),
461 .array_type = NO_ARRAY,
462 .tlv_type = 0x17,
463 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
464 mem_ready_enable_valid),
465 },
466 {
467 .data_type = QMI_UNSIGNED_1_BYTE,
468 .elem_len = 1,
469 .elem_size = sizeof(u8),
470 .array_type = NO_ARRAY,
471 .tlv_type = 0x17,
472 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
473 mem_ready_enable),
474 },
475 {
476 .data_type = QMI_OPT_FLAG,
477 .elem_len = 1,
478 .elem_size = sizeof(u8),
479 .array_type = NO_ARRAY,
480 .tlv_type = 0x18,
481 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
482 fw_init_done_enable_valid),
483 },
484 {
485 .data_type = QMI_UNSIGNED_1_BYTE,
486 .elem_len = 1,
487 .elem_size = sizeof(u8),
488 .array_type = NO_ARRAY,
489 .tlv_type = 0x18,
490 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
491 fw_init_done_enable),
492 },
493 {
494 .data_type = QMI_OPT_FLAG,
495 .elem_len = 1,
496 .elem_size = sizeof(u8),
497 .array_type = NO_ARRAY,
498 .tlv_type = 0x19,
499 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
500 rejuvenate_enable_valid),
501 },
502 {
503 .data_type = QMI_UNSIGNED_4_BYTE,
504 .elem_len = 1,
505 .elem_size = sizeof(u32),
506 .array_type = NO_ARRAY,
507 .tlv_type = 0x19,
508 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
509 rejuvenate_enable),
510 },
511 {
512 .data_type = QMI_OPT_FLAG,
513 .elem_len = 1,
514 .elem_size = sizeof(u8),
515 .array_type = NO_ARRAY,
516 .tlv_type = 0x1A,
517 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
518 xo_cal_enable_valid),
519 },
520 {
521 .data_type = QMI_UNSIGNED_1_BYTE,
522 .elem_len = 1,
523 .elem_size = sizeof(u8),
524 .array_type = NO_ARRAY,
525 .tlv_type = 0x1A,
526 .offset = offsetof(struct wlfw_ind_register_req_msg_v01,
527 xo_cal_enable),
528 },
529 {}
530};
531
532const struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
533 {
534 .data_type = QMI_STRUCT,
535 .elem_len = 1,
536 .elem_size = sizeof(struct qmi_response_type_v01),
537 .array_type = NO_ARRAY,
538 .tlv_type = 0x02,
539 .offset = offsetof(struct wlfw_ind_register_resp_msg_v01,
540 resp),
541 .ei_array = qmi_response_type_v01_ei,
542 },
543 {
544 .data_type = QMI_OPT_FLAG,
545 .elem_len = 1,
546 .elem_size = sizeof(u8),
547 .array_type = NO_ARRAY,
548 .tlv_type = 0x10,
549 .offset = offsetof(struct wlfw_ind_register_resp_msg_v01,
550 fw_status_valid),
551 },
552 {
553 .data_type = QMI_UNSIGNED_8_BYTE,
554 .elem_len = 1,
555 .elem_size = sizeof(u64),
556 .array_type = NO_ARRAY,
557 .tlv_type = 0x10,
558 .offset = offsetof(struct wlfw_ind_register_resp_msg_v01,
559 fw_status),
560 },
561 {}
562};
563
564const struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
565 {}
566};
567
568const struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
569 {}
570};
571
572const struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
573 {
574 .data_type = QMI_OPT_FLAG,
575 .elem_len = 1,
576 .elem_size = sizeof(u8),
577 .array_type = NO_ARRAY,
578 .tlv_type = 0x10,
579 .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
580 pwr_pin_result_valid),
581 },
582 {
583 .data_type = QMI_UNSIGNED_4_BYTE,
584 .elem_len = 1,
585 .elem_size = sizeof(u32),
586 .array_type = NO_ARRAY,
587 .tlv_type = 0x10,
588 .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
589 pwr_pin_result),
590 },
591 {
592 .data_type = QMI_OPT_FLAG,
593 .elem_len = 1,
594 .elem_size = sizeof(u8),
595 .array_type = NO_ARRAY,
596 .tlv_type = 0x11,
597 .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
598 phy_io_pin_result_valid),
599 },
600 {
601 .data_type = QMI_UNSIGNED_4_BYTE,
602 .elem_len = 1,
603 .elem_size = sizeof(u32),
604 .array_type = NO_ARRAY,
605 .tlv_type = 0x11,
606 .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
607 phy_io_pin_result),
608 },
609 {
610 .data_type = QMI_OPT_FLAG,
611 .elem_len = 1,
612 .elem_size = sizeof(u8),
613 .array_type = NO_ARRAY,
614 .tlv_type = 0x12,
615 .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
616 rf_pin_result_valid),
617 },
618 {
619 .data_type = QMI_UNSIGNED_4_BYTE,
620 .elem_len = 1,
621 .elem_size = sizeof(u32),
622 .array_type = NO_ARRAY,
623 .tlv_type = 0x12,
624 .offset = offsetof(struct wlfw_pin_connect_result_ind_msg_v01,
625 rf_pin_result),
626 },
627 {}
628};
629
630const struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
631 {
632 .data_type = QMI_SIGNED_4_BYTE_ENUM,
633 .elem_len = 1,
634 .elem_size = sizeof(enum wlfw_driver_mode_enum_v01),
635 .array_type = NO_ARRAY,
636 .tlv_type = 0x01,
637 .offset = offsetof(struct wlfw_wlan_mode_req_msg_v01,
638 mode),
639 },
640 {
641 .data_type = QMI_OPT_FLAG,
642 .elem_len = 1,
643 .elem_size = sizeof(u8),
644 .array_type = NO_ARRAY,
645 .tlv_type = 0x10,
646 .offset = offsetof(struct wlfw_wlan_mode_req_msg_v01,
647 hw_debug_valid),
648 },
649 {
650 .data_type = QMI_UNSIGNED_1_BYTE,
651 .elem_len = 1,
652 .elem_size = sizeof(u8),
653 .array_type = NO_ARRAY,
654 .tlv_type = 0x10,
655 .offset = offsetof(struct wlfw_wlan_mode_req_msg_v01,
656 hw_debug),
657 },
658 {}
659};
660
661const struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
662 {
663 .data_type = QMI_STRUCT,
664 .elem_len = 1,
665 .elem_size = sizeof(struct qmi_response_type_v01),
666 .array_type = NO_ARRAY,
667 .tlv_type = 0x02,
668 .offset = offsetof(struct wlfw_wlan_mode_resp_msg_v01,
669 resp),
670 .ei_array = qmi_response_type_v01_ei,
671 },
672 {}
673};
674
675const struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
676 {
677 .data_type = QMI_OPT_FLAG,
678 .elem_len = 1,
679 .elem_size = sizeof(u8),
680 .array_type = NO_ARRAY,
681 .tlv_type = 0x10,
682 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
683 host_version_valid),
684 },
685 {
686 .data_type = QMI_STRING,
687 .elem_len = QMI_WLFW_MAX_STR_LEN_V01 + 1,
688 .elem_size = sizeof(char),
689 .array_type = NO_ARRAY,
690 .tlv_type = 0x10,
691 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
692 host_version),
693 },
694 {
695 .data_type = QMI_OPT_FLAG,
696 .elem_len = 1,
697 .elem_size = sizeof(u8),
698 .array_type = NO_ARRAY,
699 .tlv_type = 0x11,
700 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
701 tgt_cfg_valid),
702 },
703 {
704 .data_type = QMI_DATA_LEN,
705 .elem_len = 1,
706 .elem_size = sizeof(u8),
707 .array_type = NO_ARRAY,
708 .tlv_type = 0x11,
709 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
710 tgt_cfg_len),
711 },
712 {
713 .data_type = QMI_STRUCT,
714 .elem_len = QMI_WLFW_MAX_NUM_CE_V01,
715 .elem_size = sizeof(struct wlfw_ce_tgt_pipe_cfg_s_v01),
716 .array_type = VAR_LEN_ARRAY,
717 .tlv_type = 0x11,
718 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
719 tgt_cfg),
720 .ei_array = wlfw_ce_tgt_pipe_cfg_s_v01_ei,
721 },
722 {
723 .data_type = QMI_OPT_FLAG,
724 .elem_len = 1,
725 .elem_size = sizeof(u8),
726 .array_type = NO_ARRAY,
727 .tlv_type = 0x12,
728 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
729 svc_cfg_valid),
730 },
731 {
732 .data_type = QMI_DATA_LEN,
733 .elem_len = 1,
734 .elem_size = sizeof(u8),
735 .array_type = NO_ARRAY,
736 .tlv_type = 0x12,
737 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
738 svc_cfg_len),
739 },
740 {
741 .data_type = QMI_STRUCT,
742 .elem_len = QMI_WLFW_MAX_NUM_SVC_V01,
743 .elem_size = sizeof(struct wlfw_ce_svc_pipe_cfg_s_v01),
744 .array_type = VAR_LEN_ARRAY,
745 .tlv_type = 0x12,
746 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
747 svc_cfg),
748 .ei_array = wlfw_ce_svc_pipe_cfg_s_v01_ei,
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 = 0x13,
756 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
757 shadow_reg_valid),
758 },
759 {
760 .data_type = QMI_DATA_LEN,
761 .elem_len = 1,
762 .elem_size = sizeof(u8),
763 .array_type = NO_ARRAY,
764 .tlv_type = 0x13,
765 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
766 shadow_reg_len),
767 },
768 {
769 .data_type = QMI_STRUCT,
770 .elem_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V01,
771 .elem_size = sizeof(struct wlfw_shadow_reg_cfg_s_v01),
772 .array_type = VAR_LEN_ARRAY,
773 .tlv_type = 0x13,
774 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
775 shadow_reg),
776 .ei_array = wlfw_shadow_reg_cfg_s_v01_ei,
777 },
778 {
779 .data_type = QMI_OPT_FLAG,
780 .elem_len = 1,
781 .elem_size = sizeof(u8),
782 .array_type = NO_ARRAY,
783 .tlv_type = 0x14,
784 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
785 shadow_reg_v2_valid),
786 },
787 {
788 .data_type = QMI_DATA_LEN,
789 .elem_len = 1,
790 .elem_size = sizeof(u8),
791 .array_type = NO_ARRAY,
792 .tlv_type = 0x14,
793 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
794 shadow_reg_v2_len),
795 },
796 {
797 .data_type = QMI_STRUCT,
798 .elem_len = QMI_WLFW_MAX_SHADOW_REG_V2,
799 .elem_size = sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01),
800 .array_type = VAR_LEN_ARRAY,
801 .tlv_type = 0x14,
802 .offset = offsetof(struct wlfw_wlan_cfg_req_msg_v01,
803 shadow_reg_v2),
804 .ei_array = wlfw_shadow_reg_v2_cfg_s_v01_ei,
805 },
806 {}
807};
808
809const struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
810 {
811 .data_type = QMI_STRUCT,
812 .elem_len = 1,
813 .elem_size = sizeof(struct qmi_response_type_v01),
814 .array_type = NO_ARRAY,
815 .tlv_type = 0x02,
816 .offset = offsetof(struct wlfw_wlan_cfg_resp_msg_v01,
817 resp),
818 .ei_array = qmi_response_type_v01_ei,
819 },
820 {}
821};
822
823const struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
824 {}
825};
826
827const struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
828 {
829 .data_type = QMI_STRUCT,
830 .elem_len = 1,
831 .elem_size = sizeof(struct qmi_response_type_v01),
832 .array_type = NO_ARRAY,
833 .tlv_type = 0x02,
834 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
835 resp),
836 .ei_array = qmi_response_type_v01_ei,
837 },
838 {
839 .data_type = QMI_OPT_FLAG,
840 .elem_len = 1,
841 .elem_size = sizeof(u8),
842 .array_type = NO_ARRAY,
843 .tlv_type = 0x10,
844 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
845 chip_info_valid),
846 },
847 {
848 .data_type = QMI_STRUCT,
849 .elem_len = 1,
850 .elem_size = sizeof(struct wlfw_rf_chip_info_s_v01),
851 .array_type = NO_ARRAY,
852 .tlv_type = 0x10,
853 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
854 chip_info),
855 .ei_array = wlfw_rf_chip_info_s_v01_ei,
856 },
857 {
858 .data_type = QMI_OPT_FLAG,
859 .elem_len = 1,
860 .elem_size = sizeof(u8),
861 .array_type = NO_ARRAY,
862 .tlv_type = 0x11,
863 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
864 board_info_valid),
865 },
866 {
867 .data_type = QMI_STRUCT,
868 .elem_len = 1,
869 .elem_size = sizeof(struct wlfw_rf_board_info_s_v01),
870 .array_type = NO_ARRAY,
871 .tlv_type = 0x11,
872 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
873 board_info),
874 .ei_array = wlfw_rf_board_info_s_v01_ei,
875 },
876 {
877 .data_type = QMI_OPT_FLAG,
878 .elem_len = 1,
879 .elem_size = sizeof(u8),
880 .array_type = NO_ARRAY,
881 .tlv_type = 0x12,
882 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
883 soc_info_valid),
884 },
885 {
886 .data_type = QMI_STRUCT,
887 .elem_len = 1,
888 .elem_size = sizeof(struct wlfw_soc_info_s_v01),
889 .array_type = NO_ARRAY,
890 .tlv_type = 0x12,
891 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
892 soc_info),
893 .ei_array = wlfw_soc_info_s_v01_ei,
894 },
895 {
896 .data_type = QMI_OPT_FLAG,
897 .elem_len = 1,
898 .elem_size = sizeof(u8),
899 .array_type = NO_ARRAY,
900 .tlv_type = 0x13,
901 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
902 fw_version_info_valid),
903 },
904 {
905 .data_type = QMI_STRUCT,
906 .elem_len = 1,
907 .elem_size = sizeof(struct wlfw_fw_version_info_s_v01),
908 .array_type = NO_ARRAY,
909 .tlv_type = 0x13,
910 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
911 fw_version_info),
912 .ei_array = wlfw_fw_version_info_s_v01_ei,
913 },
914 {
915 .data_type = QMI_OPT_FLAG,
916 .elem_len = 1,
917 .elem_size = sizeof(u8),
918 .array_type = NO_ARRAY,
919 .tlv_type = 0x14,
920 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
921 fw_build_id_valid),
922 },
923 {
924 .data_type = QMI_STRING,
925 .elem_len = QMI_WLFW_MAX_BUILD_ID_LEN_V01 + 1,
926 .elem_size = sizeof(char),
927 .array_type = NO_ARRAY,
928 .tlv_type = 0x14,
929 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
930 fw_build_id),
931 },
932 {
933 .data_type = QMI_OPT_FLAG,
934 .elem_len = 1,
935 .elem_size = sizeof(u8),
936 .array_type = NO_ARRAY,
937 .tlv_type = 0x15,
938 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
939 num_macs_valid),
940 },
941 {
942 .data_type = QMI_UNSIGNED_1_BYTE,
943 .elem_len = 1,
944 .elem_size = sizeof(u8),
945 .array_type = NO_ARRAY,
946 .tlv_type = 0x15,
947 .offset = offsetof(struct wlfw_cap_resp_msg_v01,
948 num_macs),
949 },
950 {}
951};
952
953const struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
954 {
955 .data_type = QMI_UNSIGNED_1_BYTE,
956 .elem_len = 1,
957 .elem_size = sizeof(u8),
958 .array_type = NO_ARRAY,
959 .tlv_type = 0x01,
960 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
961 valid),
962 },
963 {
964 .data_type = QMI_OPT_FLAG,
965 .elem_len = 1,
966 .elem_size = sizeof(u8),
967 .array_type = NO_ARRAY,
968 .tlv_type = 0x10,
969 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
970 file_id_valid),
971 },
972 {
973 .data_type = QMI_SIGNED_4_BYTE_ENUM,
974 .elem_len = 1,
975 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
976 .array_type = NO_ARRAY,
977 .tlv_type = 0x10,
978 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
979 file_id),
980 },
981 {
982 .data_type = QMI_OPT_FLAG,
983 .elem_len = 1,
984 .elem_size = sizeof(u8),
985 .array_type = NO_ARRAY,
986 .tlv_type = 0x11,
987 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
988 total_size_valid),
989 },
990 {
991 .data_type = QMI_UNSIGNED_4_BYTE,
992 .elem_len = 1,
993 .elem_size = sizeof(u32),
994 .array_type = NO_ARRAY,
995 .tlv_type = 0x11,
996 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
997 total_size),
998 },
999 {
1000 .data_type = QMI_OPT_FLAG,
1001 .elem_len = 1,
1002 .elem_size = sizeof(u8),
1003 .array_type = NO_ARRAY,
1004 .tlv_type = 0x12,
1005 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1006 seg_id_valid),
1007 },
1008 {
1009 .data_type = QMI_UNSIGNED_4_BYTE,
1010 .elem_len = 1,
1011 .elem_size = sizeof(u32),
1012 .array_type = NO_ARRAY,
1013 .tlv_type = 0x12,
1014 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1015 seg_id),
1016 },
1017 {
1018 .data_type = QMI_OPT_FLAG,
1019 .elem_len = 1,
1020 .elem_size = sizeof(u8),
1021 .array_type = NO_ARRAY,
1022 .tlv_type = 0x13,
1023 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1024 data_valid),
1025 },
1026 {
1027 .data_type = QMI_DATA_LEN,
1028 .elem_len = 1,
1029 .elem_size = sizeof(u16),
1030 .array_type = NO_ARRAY,
1031 .tlv_type = 0x13,
1032 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1033 data_len),
1034 },
1035 {
1036 .data_type = QMI_UNSIGNED_1_BYTE,
1037 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
1038 .elem_size = sizeof(u8),
1039 .array_type = VAR_LEN_ARRAY,
1040 .tlv_type = 0x13,
1041 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1042 data),
1043 },
1044 {
1045 .data_type = QMI_OPT_FLAG,
1046 .elem_len = 1,
1047 .elem_size = sizeof(u8),
1048 .array_type = NO_ARRAY,
1049 .tlv_type = 0x14,
1050 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1051 end_valid),
1052 },
1053 {
1054 .data_type = QMI_UNSIGNED_1_BYTE,
1055 .elem_len = 1,
1056 .elem_size = sizeof(u8),
1057 .array_type = NO_ARRAY,
1058 .tlv_type = 0x14,
1059 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1060 end),
1061 },
1062 {
1063 .data_type = QMI_OPT_FLAG,
1064 .elem_len = 1,
1065 .elem_size = sizeof(u8),
1066 .array_type = NO_ARRAY,
1067 .tlv_type = 0x15,
1068 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1069 bdf_type_valid),
1070 },
1071 {
1072 .data_type = QMI_UNSIGNED_1_BYTE,
1073 .elem_len = 1,
1074 .elem_size = sizeof(u8),
1075 .array_type = NO_ARRAY,
1076 .tlv_type = 0x15,
1077 .offset = offsetof(struct wlfw_bdf_download_req_msg_v01,
1078 bdf_type),
1079 },
1080 {}
1081};
1082
1083const struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
1084 {
1085 .data_type = QMI_STRUCT,
1086 .elem_len = 1,
1087 .elem_size = sizeof(struct qmi_response_type_v01),
1088 .array_type = NO_ARRAY,
1089 .tlv_type = 0x02,
1090 .offset = offsetof(struct wlfw_bdf_download_resp_msg_v01,
1091 resp),
1092 .ei_array = qmi_response_type_v01_ei,
1093 },
1094 {}
1095};
1096
1097const struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
1098 {
1099 .data_type = QMI_DATA_LEN,
1100 .elem_len = 1,
1101 .elem_size = sizeof(u8),
1102 .array_type = NO_ARRAY,
1103 .tlv_type = 0x01,
1104 .offset = offsetof(struct wlfw_cal_report_req_msg_v01,
1105 meta_data_len),
1106 },
1107 {
1108 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1109 .elem_len = QMI_WLFW_MAX_NUM_CAL_V01,
1110 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
1111 .array_type = VAR_LEN_ARRAY,
1112 .tlv_type = 0x01,
1113 .offset = offsetof(struct wlfw_cal_report_req_msg_v01,
1114 meta_data),
1115 },
1116 {
1117 .data_type = QMI_OPT_FLAG,
1118 .elem_len = 1,
1119 .elem_size = sizeof(u8),
1120 .array_type = NO_ARRAY,
1121 .tlv_type = 0x10,
1122 .offset = offsetof(struct wlfw_cal_report_req_msg_v01,
1123 xo_cal_data_valid),
1124 },
1125 {
1126 .data_type = QMI_UNSIGNED_1_BYTE,
1127 .elem_len = 1,
1128 .elem_size = sizeof(u8),
1129 .array_type = NO_ARRAY,
1130 .tlv_type = 0x10,
1131 .offset = offsetof(struct wlfw_cal_report_req_msg_v01,
1132 xo_cal_data),
1133 },
1134 {}
1135};
1136
1137const struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
1138 {
1139 .data_type = QMI_STRUCT,
1140 .elem_len = 1,
1141 .elem_size = sizeof(struct qmi_response_type_v01),
1142 .array_type = NO_ARRAY,
1143 .tlv_type = 0x02,
1144 .offset = offsetof(struct wlfw_cal_report_resp_msg_v01,
1145 resp),
1146 .ei_array = qmi_response_type_v01_ei,
1147 },
1148 {}
1149};
1150
1151const struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
1152 {
1153 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1154 .elem_len = 1,
1155 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
1156 .array_type = NO_ARRAY,
1157 .tlv_type = 0x01,
1158 .offset = offsetof(struct wlfw_initiate_cal_download_ind_msg_v01,
1159 cal_id),
1160 },
1161 {}
1162};
1163
1164const struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
1165 {
1166 .data_type = QMI_UNSIGNED_1_BYTE,
1167 .elem_len = 1,
1168 .elem_size = sizeof(u8),
1169 .array_type = NO_ARRAY,
1170 .tlv_type = 0x01,
1171 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1172 valid),
1173 },
1174 {
1175 .data_type = QMI_OPT_FLAG,
1176 .elem_len = 1,
1177 .elem_size = sizeof(u8),
1178 .array_type = NO_ARRAY,
1179 .tlv_type = 0x10,
1180 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1181 file_id_valid),
1182 },
1183 {
1184 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1185 .elem_len = 1,
1186 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
1187 .array_type = NO_ARRAY,
1188 .tlv_type = 0x10,
1189 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1190 file_id),
1191 },
1192 {
1193 .data_type = QMI_OPT_FLAG,
1194 .elem_len = 1,
1195 .elem_size = sizeof(u8),
1196 .array_type = NO_ARRAY,
1197 .tlv_type = 0x11,
1198 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1199 total_size_valid),
1200 },
1201 {
1202 .data_type = QMI_UNSIGNED_4_BYTE,
1203 .elem_len = 1,
1204 .elem_size = sizeof(u32),
1205 .array_type = NO_ARRAY,
1206 .tlv_type = 0x11,
1207 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1208 total_size),
1209 },
1210 {
1211 .data_type = QMI_OPT_FLAG,
1212 .elem_len = 1,
1213 .elem_size = sizeof(u8),
1214 .array_type = NO_ARRAY,
1215 .tlv_type = 0x12,
1216 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1217 seg_id_valid),
1218 },
1219 {
1220 .data_type = QMI_UNSIGNED_4_BYTE,
1221 .elem_len = 1,
1222 .elem_size = sizeof(u32),
1223 .array_type = NO_ARRAY,
1224 .tlv_type = 0x12,
1225 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1226 seg_id),
1227 },
1228 {
1229 .data_type = QMI_OPT_FLAG,
1230 .elem_len = 1,
1231 .elem_size = sizeof(u8),
1232 .array_type = NO_ARRAY,
1233 .tlv_type = 0x13,
1234 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1235 data_valid),
1236 },
1237 {
1238 .data_type = QMI_DATA_LEN,
1239 .elem_len = 1,
1240 .elem_size = sizeof(u16),
1241 .array_type = NO_ARRAY,
1242 .tlv_type = 0x13,
1243 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1244 data_len),
1245 },
1246 {
1247 .data_type = QMI_UNSIGNED_1_BYTE,
1248 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
1249 .elem_size = sizeof(u8),
1250 .array_type = VAR_LEN_ARRAY,
1251 .tlv_type = 0x13,
1252 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1253 data),
1254 },
1255 {
1256 .data_type = QMI_OPT_FLAG,
1257 .elem_len = 1,
1258 .elem_size = sizeof(u8),
1259 .array_type = NO_ARRAY,
1260 .tlv_type = 0x14,
1261 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1262 end_valid),
1263 },
1264 {
1265 .data_type = QMI_UNSIGNED_1_BYTE,
1266 .elem_len = 1,
1267 .elem_size = sizeof(u8),
1268 .array_type = NO_ARRAY,
1269 .tlv_type = 0x14,
1270 .offset = offsetof(struct wlfw_cal_download_req_msg_v01,
1271 end),
1272 },
1273 {}
1274};
1275
1276const struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
1277 {
1278 .data_type = QMI_STRUCT,
1279 .elem_len = 1,
1280 .elem_size = sizeof(struct qmi_response_type_v01),
1281 .array_type = NO_ARRAY,
1282 .tlv_type = 0x02,
1283 .offset = offsetof(struct wlfw_cal_download_resp_msg_v01,
1284 resp),
1285 .ei_array = qmi_response_type_v01_ei,
1286 },
1287 {}
1288};
1289
1290const struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
1291 {
1292 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1293 .elem_len = 1,
1294 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
1295 .array_type = NO_ARRAY,
1296 .tlv_type = 0x01,
1297 .offset = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01,
1298 cal_id),
1299 },
1300 {
1301 .data_type = QMI_UNSIGNED_4_BYTE,
1302 .elem_len = 1,
1303 .elem_size = sizeof(u32),
1304 .array_type = NO_ARRAY,
1305 .tlv_type = 0x02,
1306 .offset = offsetof(struct wlfw_initiate_cal_update_ind_msg_v01,
1307 total_size),
1308 },
1309 {}
1310};
1311
1312const struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
1313 {
1314 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1315 .elem_len = 1,
1316 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
1317 .array_type = NO_ARRAY,
1318 .tlv_type = 0x01,
1319 .offset = offsetof(struct wlfw_cal_update_req_msg_v01,
1320 cal_id),
1321 },
1322 {
1323 .data_type = QMI_UNSIGNED_4_BYTE,
1324 .elem_len = 1,
1325 .elem_size = sizeof(u32),
1326 .array_type = NO_ARRAY,
1327 .tlv_type = 0x02,
1328 .offset = offsetof(struct wlfw_cal_update_req_msg_v01,
1329 seg_id),
1330 },
1331 {}
1332};
1333
1334const struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
1335 {
1336 .data_type = QMI_STRUCT,
1337 .elem_len = 1,
1338 .elem_size = sizeof(struct qmi_response_type_v01),
1339 .array_type = NO_ARRAY,
1340 .tlv_type = 0x02,
1341 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1342 resp),
1343 .ei_array = qmi_response_type_v01_ei,
1344 },
1345 {
1346 .data_type = QMI_OPT_FLAG,
1347 .elem_len = 1,
1348 .elem_size = sizeof(u8),
1349 .array_type = NO_ARRAY,
1350 .tlv_type = 0x10,
1351 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1352 file_id_valid),
1353 },
1354 {
1355 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1356 .elem_len = 1,
1357 .elem_size = sizeof(enum wlfw_cal_temp_id_enum_v01),
1358 .array_type = NO_ARRAY,
1359 .tlv_type = 0x10,
1360 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1361 file_id),
1362 },
1363 {
1364 .data_type = QMI_OPT_FLAG,
1365 .elem_len = 1,
1366 .elem_size = sizeof(u8),
1367 .array_type = NO_ARRAY,
1368 .tlv_type = 0x11,
1369 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1370 total_size_valid),
1371 },
1372 {
1373 .data_type = QMI_UNSIGNED_4_BYTE,
1374 .elem_len = 1,
1375 .elem_size = sizeof(u32),
1376 .array_type = NO_ARRAY,
1377 .tlv_type = 0x11,
1378 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1379 total_size),
1380 },
1381 {
1382 .data_type = QMI_OPT_FLAG,
1383 .elem_len = 1,
1384 .elem_size = sizeof(u8),
1385 .array_type = NO_ARRAY,
1386 .tlv_type = 0x12,
1387 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1388 seg_id_valid),
1389 },
1390 {
1391 .data_type = QMI_UNSIGNED_4_BYTE,
1392 .elem_len = 1,
1393 .elem_size = sizeof(u32),
1394 .array_type = NO_ARRAY,
1395 .tlv_type = 0x12,
1396 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1397 seg_id),
1398 },
1399 {
1400 .data_type = QMI_OPT_FLAG,
1401 .elem_len = 1,
1402 .elem_size = sizeof(u8),
1403 .array_type = NO_ARRAY,
1404 .tlv_type = 0x13,
1405 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1406 data_valid),
1407 },
1408 {
1409 .data_type = QMI_DATA_LEN,
1410 .elem_len = 1,
1411 .elem_size = sizeof(u16),
1412 .array_type = NO_ARRAY,
1413 .tlv_type = 0x13,
1414 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1415 data_len),
1416 },
1417 {
1418 .data_type = QMI_UNSIGNED_1_BYTE,
1419 .elem_len = QMI_WLFW_MAX_DATA_SIZE_V01,
1420 .elem_size = sizeof(u8),
1421 .array_type = VAR_LEN_ARRAY,
1422 .tlv_type = 0x13,
1423 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1424 data),
1425 },
1426 {
1427 .data_type = QMI_OPT_FLAG,
1428 .elem_len = 1,
1429 .elem_size = sizeof(u8),
1430 .array_type = NO_ARRAY,
1431 .tlv_type = 0x14,
1432 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1433 end_valid),
1434 },
1435 {
1436 .data_type = QMI_UNSIGNED_1_BYTE,
1437 .elem_len = 1,
1438 .elem_size = sizeof(u8),
1439 .array_type = NO_ARRAY,
1440 .tlv_type = 0x14,
1441 .offset = offsetof(struct wlfw_cal_update_resp_msg_v01,
1442 end),
1443 },
1444 {}
1445};
1446
1447const struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
1448 {
1449 .data_type = QMI_UNSIGNED_8_BYTE,
1450 .elem_len = 1,
1451 .elem_size = sizeof(u64),
1452 .array_type = NO_ARRAY,
1453 .tlv_type = 0x01,
1454 .offset = offsetof(struct wlfw_msa_info_req_msg_v01,
1455 msa_addr),
1456 },
1457 {
1458 .data_type = QMI_UNSIGNED_4_BYTE,
1459 .elem_len = 1,
1460 .elem_size = sizeof(u32),
1461 .array_type = NO_ARRAY,
1462 .tlv_type = 0x02,
1463 .offset = offsetof(struct wlfw_msa_info_req_msg_v01,
1464 size),
1465 },
1466 {}
1467};
1468
1469const struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
1470 {
1471 .data_type = QMI_STRUCT,
1472 .elem_len = 1,
1473 .elem_size = sizeof(struct qmi_response_type_v01),
1474 .array_type = NO_ARRAY,
1475 .tlv_type = 0x02,
1476 .offset = offsetof(struct wlfw_msa_info_resp_msg_v01,
1477 resp),
1478 .ei_array = qmi_response_type_v01_ei,
1479 },
1480 {
1481 .data_type = QMI_DATA_LEN,
1482 .elem_len = 1,
1483 .elem_size = sizeof(u8),
1484 .array_type = NO_ARRAY,
1485 .tlv_type = 0x03,
1486 .offset = offsetof(struct wlfw_msa_info_resp_msg_v01,
1487 mem_region_info_len),
1488 },
1489 {
1490 .data_type = QMI_STRUCT,
1491 .elem_len = QMI_WLFW_MAX_MEM_REG_V01,
1492 .elem_size = sizeof(struct wlfw_memory_region_info_s_v01),
1493 .array_type = VAR_LEN_ARRAY,
1494 .tlv_type = 0x03,
1495 .offset = offsetof(struct wlfw_msa_info_resp_msg_v01,
1496 mem_region_info),
1497 .ei_array = wlfw_memory_region_info_s_v01_ei,
1498 },
1499 {}
1500};
1501
1502const struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
1503 {}
1504};
1505
1506const struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
1507 {
1508 .data_type = QMI_STRUCT,
1509 .elem_len = 1,
1510 .elem_size = sizeof(struct qmi_response_type_v01),
1511 .array_type = NO_ARRAY,
1512 .tlv_type = 0x02,
1513 .offset = offsetof(struct wlfw_msa_ready_resp_msg_v01,
1514 resp),
1515 .ei_array = qmi_response_type_v01_ei,
1516 },
1517 {}
1518};
1519
1520const struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
1521 {
1522 .data_type = QMI_OPT_FLAG,
1523 .elem_len = 1,
1524 .elem_size = sizeof(u8),
1525 .array_type = NO_ARRAY,
1526 .tlv_type = 0x10,
1527 .offset = offsetof(struct wlfw_ini_req_msg_v01,
1528 enablefwlog_valid),
1529 },
1530 {
1531 .data_type = QMI_UNSIGNED_1_BYTE,
1532 .elem_len = 1,
1533 .elem_size = sizeof(u8),
1534 .array_type = NO_ARRAY,
1535 .tlv_type = 0x10,
1536 .offset = offsetof(struct wlfw_ini_req_msg_v01,
1537 enablefwlog),
1538 },
1539 {}
1540};
1541
1542const struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
1543 {
1544 .data_type = QMI_STRUCT,
1545 .elem_len = 1,
1546 .elem_size = sizeof(struct qmi_response_type_v01),
1547 .array_type = NO_ARRAY,
1548 .tlv_type = 0x02,
1549 .offset = offsetof(struct wlfw_ini_resp_msg_v01,
1550 resp),
1551 .ei_array = qmi_response_type_v01_ei,
1552 },
1553 {}
1554};
1555
1556const struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
1557 {
1558 .data_type = QMI_UNSIGNED_4_BYTE,
1559 .elem_len = 1,
1560 .elem_size = sizeof(u32),
1561 .array_type = NO_ARRAY,
1562 .tlv_type = 0x01,
1563 .offset = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1564 offset),
1565 },
1566 {
1567 .data_type = QMI_UNSIGNED_4_BYTE,
1568 .elem_len = 1,
1569 .elem_size = sizeof(u32),
1570 .array_type = NO_ARRAY,
1571 .tlv_type = 0x02,
1572 .offset = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1573 mem_type),
1574 },
1575 {
1576 .data_type = QMI_UNSIGNED_4_BYTE,
1577 .elem_len = 1,
1578 .elem_size = sizeof(u32),
1579 .array_type = NO_ARRAY,
1580 .tlv_type = 0x03,
1581 .offset = offsetof(struct wlfw_athdiag_read_req_msg_v01,
1582 data_len),
1583 },
1584 {}
1585};
1586
1587const struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
1588 {
1589 .data_type = QMI_STRUCT,
1590 .elem_len = 1,
1591 .elem_size = sizeof(struct qmi_response_type_v01),
1592 .array_type = NO_ARRAY,
1593 .tlv_type = 0x02,
1594 .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1595 resp),
1596 .ei_array = qmi_response_type_v01_ei,
1597 },
1598 {
1599 .data_type = QMI_OPT_FLAG,
1600 .elem_len = 1,
1601 .elem_size = sizeof(u8),
1602 .array_type = NO_ARRAY,
1603 .tlv_type = 0x10,
1604 .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1605 data_valid),
1606 },
1607 {
1608 .data_type = QMI_DATA_LEN,
1609 .elem_len = 1,
1610 .elem_size = sizeof(u16),
1611 .array_type = NO_ARRAY,
1612 .tlv_type = 0x10,
1613 .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1614 data_len),
1615 },
1616 {
1617 .data_type = QMI_UNSIGNED_1_BYTE,
1618 .elem_len = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
1619 .elem_size = sizeof(u8),
1620 .array_type = VAR_LEN_ARRAY,
1621 .tlv_type = 0x10,
1622 .offset = offsetof(struct wlfw_athdiag_read_resp_msg_v01,
1623 data),
1624 },
1625 {}
1626};
1627
1628const struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
1629 {
1630 .data_type = QMI_UNSIGNED_4_BYTE,
1631 .elem_len = 1,
1632 .elem_size = sizeof(u32),
1633 .array_type = NO_ARRAY,
1634 .tlv_type = 0x01,
1635 .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1636 offset),
1637 },
1638 {
1639 .data_type = QMI_UNSIGNED_4_BYTE,
1640 .elem_len = 1,
1641 .elem_size = sizeof(u32),
1642 .array_type = NO_ARRAY,
1643 .tlv_type = 0x02,
1644 .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1645 mem_type),
1646 },
1647 {
1648 .data_type = QMI_DATA_LEN,
1649 .elem_len = 1,
1650 .elem_size = sizeof(u16),
1651 .array_type = NO_ARRAY,
1652 .tlv_type = 0x03,
1653 .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1654 data_len),
1655 },
1656 {
1657 .data_type = QMI_UNSIGNED_1_BYTE,
1658 .elem_len = QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01,
1659 .elem_size = sizeof(u8),
1660 .array_type = VAR_LEN_ARRAY,
1661 .tlv_type = 0x03,
1662 .offset = offsetof(struct wlfw_athdiag_write_req_msg_v01,
1663 data),
1664 },
1665 {}
1666};
1667
1668const struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
1669 {
1670 .data_type = QMI_STRUCT,
1671 .elem_len = 1,
1672 .elem_size = sizeof(struct qmi_response_type_v01),
1673 .array_type = NO_ARRAY,
1674 .tlv_type = 0x02,
1675 .offset = offsetof(struct wlfw_athdiag_write_resp_msg_v01,
1676 resp),
1677 .ei_array = qmi_response_type_v01_ei,
1678 },
1679 {}
1680};
1681
1682const struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
1683 {
1684 .data_type = QMI_UNSIGNED_8_BYTE,
1685 .elem_len = 1,
1686 .elem_size = sizeof(u64),
1687 .array_type = NO_ARRAY,
1688 .tlv_type = 0x01,
1689 .offset = offsetof(struct wlfw_vbatt_req_msg_v01,
1690 voltage_uv),
1691 },
1692 {}
1693};
1694
1695const struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
1696 {
1697 .data_type = QMI_STRUCT,
1698 .elem_len = 1,
1699 .elem_size = sizeof(struct qmi_response_type_v01),
1700 .array_type = NO_ARRAY,
1701 .tlv_type = 0x02,
1702 .offset = offsetof(struct wlfw_vbatt_resp_msg_v01,
1703 resp),
1704 .ei_array = qmi_response_type_v01_ei,
1705 },
1706 {}
1707};
1708
1709const struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
1710 {
1711 .data_type = QMI_OPT_FLAG,
1712 .elem_len = 1,
1713 .elem_size = sizeof(u8),
1714 .array_type = NO_ARRAY,
1715 .tlv_type = 0x10,
1716 .offset = offsetof(struct wlfw_mac_addr_req_msg_v01,
1717 mac_addr_valid),
1718 },
1719 {
1720 .data_type = QMI_UNSIGNED_1_BYTE,
1721 .elem_len = QMI_WLFW_MAC_ADDR_SIZE_V01,
1722 .elem_size = sizeof(u8),
1723 .array_type = STATIC_ARRAY,
1724 .tlv_type = 0x10,
1725 .offset = offsetof(struct wlfw_mac_addr_req_msg_v01,
1726 mac_addr),
1727 },
1728 {}
1729};
1730
1731const struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
1732 {
1733 .data_type = QMI_STRUCT,
1734 .elem_len = 1,
1735 .elem_size = sizeof(struct qmi_response_type_v01),
1736 .array_type = NO_ARRAY,
1737 .tlv_type = 0x02,
1738 .offset = offsetof(struct wlfw_mac_addr_resp_msg_v01,
1739 resp),
1740 .ei_array = qmi_response_type_v01_ei,
1741 },
1742 {}
1743};
1744
1745const struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
1746 {
1747 .data_type = QMI_OPT_FLAG,
1748 .elem_len = 1,
1749 .elem_size = sizeof(u8),
1750 .array_type = NO_ARRAY,
1751 .tlv_type = 0x10,
1752 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1753 daemon_support_valid),
1754 },
1755 {
1756 .data_type = QMI_UNSIGNED_4_BYTE,
1757 .elem_len = 1,
1758 .elem_size = sizeof(u32),
1759 .array_type = NO_ARRAY,
1760 .tlv_type = 0x10,
1761 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1762 daemon_support),
1763 },
1764 {
1765 .data_type = QMI_OPT_FLAG,
1766 .elem_len = 1,
1767 .elem_size = sizeof(u8),
1768 .array_type = NO_ARRAY,
1769 .tlv_type = 0x11,
1770 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1771 wake_msi_valid),
1772 },
1773 {
1774 .data_type = QMI_UNSIGNED_4_BYTE,
1775 .elem_len = 1,
1776 .elem_size = sizeof(u32),
1777 .array_type = NO_ARRAY,
1778 .tlv_type = 0x11,
1779 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1780 wake_msi),
1781 },
1782 {
1783 .data_type = QMI_OPT_FLAG,
1784 .elem_len = 1,
1785 .elem_size = sizeof(u8),
1786 .array_type = NO_ARRAY,
1787 .tlv_type = 0x12,
1788 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1789 gpios_valid),
1790 },
1791 {
1792 .data_type = QMI_DATA_LEN,
1793 .elem_len = 1,
1794 .elem_size = sizeof(u32),
1795 .array_type = NO_ARRAY,
1796 .tlv_type = 0x12,
1797 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1798 gpios_len),
1799 },
1800 {
1801 .data_type = QMI_UNSIGNED_4_BYTE,
1802 .elem_len = QMI_WLFW_MAX_NUM_GPIO_V01,
1803 .elem_size = sizeof(u32),
1804 .array_type = VAR_LEN_ARRAY,
1805 .tlv_type = 0x12,
1806 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1807 gpios),
1808 },
1809 {
1810 .data_type = QMI_OPT_FLAG,
1811 .elem_len = 1,
1812 .elem_size = sizeof(u8),
1813 .array_type = NO_ARRAY,
1814 .tlv_type = 0x13,
1815 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1816 nm_modem_valid),
1817 },
1818 {
1819 .data_type = QMI_UNSIGNED_1_BYTE,
1820 .elem_len = 1,
1821 .elem_size = sizeof(u8),
1822 .array_type = NO_ARRAY,
1823 .tlv_type = 0x13,
1824 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1825 nm_modem),
1826 },
1827 {
1828 .data_type = QMI_OPT_FLAG,
1829 .elem_len = 1,
1830 .elem_size = sizeof(u8),
1831 .array_type = NO_ARRAY,
1832 .tlv_type = 0x14,
1833 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1834 bdf_support_valid),
1835 },
1836 {
1837 .data_type = QMI_UNSIGNED_1_BYTE,
1838 .elem_len = 1,
1839 .elem_size = sizeof(u8),
1840 .array_type = NO_ARRAY,
1841 .tlv_type = 0x14,
1842 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1843 bdf_support),
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 = 0x15,
1851 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1852 bdf_cache_support_valid),
1853 },
1854 {
1855 .data_type = QMI_UNSIGNED_1_BYTE,
1856 .elem_len = 1,
1857 .elem_size = sizeof(u8),
1858 .array_type = NO_ARRAY,
1859 .tlv_type = 0x15,
1860 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1861 bdf_cache_support),
1862 },
1863 {
1864 .data_type = QMI_OPT_FLAG,
1865 .elem_len = 1,
1866 .elem_size = sizeof(u8),
1867 .array_type = NO_ARRAY,
1868 .tlv_type = 0x16,
1869 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1870 m3_support_valid),
1871 },
1872 {
1873 .data_type = QMI_UNSIGNED_1_BYTE,
1874 .elem_len = 1,
1875 .elem_size = sizeof(u8),
1876 .array_type = NO_ARRAY,
1877 .tlv_type = 0x16,
1878 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1879 m3_support),
1880 },
1881 {
1882 .data_type = QMI_OPT_FLAG,
1883 .elem_len = 1,
1884 .elem_size = sizeof(u8),
1885 .array_type = NO_ARRAY,
1886 .tlv_type = 0x17,
1887 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1888 m3_cache_support_valid),
1889 },
1890 {
1891 .data_type = QMI_UNSIGNED_1_BYTE,
1892 .elem_len = 1,
1893 .elem_size = sizeof(u8),
1894 .array_type = NO_ARRAY,
1895 .tlv_type = 0x17,
1896 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1897 m3_cache_support),
1898 },
1899 {
1900 .data_type = QMI_OPT_FLAG,
1901 .elem_len = 1,
1902 .elem_size = sizeof(u8),
1903 .array_type = NO_ARRAY,
1904 .tlv_type = 0x18,
1905 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1906 cal_filesys_support_valid),
1907 },
1908 {
1909 .data_type = QMI_UNSIGNED_1_BYTE,
1910 .elem_len = 1,
1911 .elem_size = sizeof(u8),
1912 .array_type = NO_ARRAY,
1913 .tlv_type = 0x18,
1914 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1915 cal_filesys_support),
1916 },
1917 {
1918 .data_type = QMI_OPT_FLAG,
1919 .elem_len = 1,
1920 .elem_size = sizeof(u8),
1921 .array_type = NO_ARRAY,
1922 .tlv_type = 0x19,
1923 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1924 cal_cache_support_valid),
1925 },
1926 {
1927 .data_type = QMI_UNSIGNED_1_BYTE,
1928 .elem_len = 1,
1929 .elem_size = sizeof(u8),
1930 .array_type = NO_ARRAY,
1931 .tlv_type = 0x19,
1932 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1933 cal_cache_support),
1934 },
1935 {
1936 .data_type = QMI_OPT_FLAG,
1937 .elem_len = 1,
1938 .elem_size = sizeof(u8),
1939 .array_type = NO_ARRAY,
1940 .tlv_type = 0x1A,
1941 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1942 cal_done_valid),
1943 },
1944 {
1945 .data_type = QMI_UNSIGNED_1_BYTE,
1946 .elem_len = 1,
1947 .elem_size = sizeof(u8),
1948 .array_type = NO_ARRAY,
1949 .tlv_type = 0x1A,
1950 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1951 cal_done),
1952 },
1953 {
1954 .data_type = QMI_OPT_FLAG,
1955 .elem_len = 1,
1956 .elem_size = sizeof(u8),
1957 .array_type = NO_ARRAY,
1958 .tlv_type = 0x1B,
1959 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1960 mem_bucket_valid),
1961 },
1962 {
1963 .data_type = QMI_UNSIGNED_4_BYTE,
1964 .elem_len = 1,
1965 .elem_size = sizeof(u32),
1966 .array_type = NO_ARRAY,
1967 .tlv_type = 0x1B,
1968 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1969 mem_bucket),
1970 },
1971 {
1972 .data_type = QMI_OPT_FLAG,
1973 .elem_len = 1,
1974 .elem_size = sizeof(u8),
1975 .array_type = NO_ARRAY,
1976 .tlv_type = 0x1C,
1977 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1978 mem_cfg_mode_valid),
1979 },
1980 {
1981 .data_type = QMI_UNSIGNED_1_BYTE,
1982 .elem_len = 1,
1983 .elem_size = sizeof(u8),
1984 .array_type = NO_ARRAY,
1985 .tlv_type = 0x1C,
1986 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
1987 mem_cfg_mode),
1988 },
1989 {}
1990};
1991
1992const struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = {
1993 {
1994 .data_type = QMI_OPT_FLAG,
1995 .elem_len = 1,
1996 .elem_size = sizeof(u8),
1997 .array_type = NO_ARRAY,
1998 .tlv_type = 0x10,
1999 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
2000 daemon_support_valid),
2001 },
2002 {
2003 .data_type = QMI_UNSIGNED_1_BYTE,
2004 .elem_len = 1,
2005 .elem_size = sizeof(u8),
2006 .array_type = NO_ARRAY,
2007 .tlv_type = 0x10,
2008 .offset = offsetof(struct wlfw_host_cap_req_msg_v01,
2009 daemon_support),
2010 },
2011 {}
2012};
2013
2014const struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
2015 {
2016 .data_type = QMI_STRUCT,
2017 .elem_len = 1,
2018 .elem_size = sizeof(struct qmi_response_type_v01),
2019 .array_type = NO_ARRAY,
2020 .tlv_type = 0x02,
2021 .offset = offsetof(struct wlfw_host_cap_resp_msg_v01,
2022 resp),
2023 .ei_array = qmi_response_type_v01_ei,
2024 },
2025 {}
2026};
2027
2028const struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
2029 {
2030 .data_type = QMI_DATA_LEN,
2031 .elem_len = 1,
2032 .elem_size = sizeof(u8),
2033 .array_type = NO_ARRAY,
2034 .tlv_type = 0x01,
2035 .offset = offsetof(struct wlfw_request_mem_ind_msg_v01,
2036 mem_seg_len),
2037 },
2038 {
2039 .data_type = QMI_STRUCT,
2040 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
2041 .elem_size = sizeof(struct wlfw_mem_seg_s_v01),
2042 .array_type = VAR_LEN_ARRAY,
2043 .tlv_type = 0x01,
2044 .offset = offsetof(struct wlfw_request_mem_ind_msg_v01,
2045 mem_seg),
2046 .ei_array = wlfw_mem_seg_s_v01_ei,
2047 },
2048 {}
2049};
2050
2051const struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
2052 {
2053 .data_type = QMI_DATA_LEN,
2054 .elem_len = 1,
2055 .elem_size = sizeof(u8),
2056 .array_type = NO_ARRAY,
2057 .tlv_type = 0x01,
2058 .offset = offsetof(struct wlfw_respond_mem_req_msg_v01,
2059 mem_seg_len),
2060 },
2061 {
2062 .data_type = QMI_STRUCT,
2063 .elem_len = QMI_WLFW_MAX_NUM_MEM_SEG_V01,
2064 .elem_size = sizeof(struct wlfw_mem_seg_resp_s_v01),
2065 .array_type = VAR_LEN_ARRAY,
2066 .tlv_type = 0x01,
2067 .offset = offsetof(struct wlfw_respond_mem_req_msg_v01,
2068 mem_seg),
2069 .ei_array = wlfw_mem_seg_resp_s_v01_ei,
2070 },
2071 {}
2072};
2073
2074const struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
2075 {
2076 .data_type = QMI_STRUCT,
2077 .elem_len = 1,
2078 .elem_size = sizeof(struct qmi_response_type_v01),
2079 .array_type = NO_ARRAY,
2080 .tlv_type = 0x02,
2081 .offset = offsetof(struct wlfw_respond_mem_resp_msg_v01,
2082 resp),
2083 .ei_array = qmi_response_type_v01_ei,
2084 },
2085 {}
2086};
2087
2088const struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = {
2089 {}
2090};
2091
2092const struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
2093 {}
2094};
2095
2096const struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
2097 {
2098 .data_type = QMI_OPT_FLAG,
2099 .elem_len = 1,
2100 .elem_size = sizeof(u8),
2101 .array_type = NO_ARRAY,
2102 .tlv_type = 0x10,
2103 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2104 cause_for_rejuvenation_valid),
2105 },
2106 {
2107 .data_type = QMI_UNSIGNED_1_BYTE,
2108 .elem_len = 1,
2109 .elem_size = sizeof(u8),
2110 .array_type = NO_ARRAY,
2111 .tlv_type = 0x10,
2112 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2113 cause_for_rejuvenation),
2114 },
2115 {
2116 .data_type = QMI_OPT_FLAG,
2117 .elem_len = 1,
2118 .elem_size = sizeof(u8),
2119 .array_type = NO_ARRAY,
2120 .tlv_type = 0x11,
2121 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2122 requesting_sub_system_valid),
2123 },
2124 {
2125 .data_type = QMI_UNSIGNED_1_BYTE,
2126 .elem_len = 1,
2127 .elem_size = sizeof(u8),
2128 .array_type = NO_ARRAY,
2129 .tlv_type = 0x11,
2130 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2131 requesting_sub_system),
2132 },
2133 {
2134 .data_type = QMI_OPT_FLAG,
2135 .elem_len = 1,
2136 .elem_size = sizeof(u8),
2137 .array_type = NO_ARRAY,
2138 .tlv_type = 0x12,
2139 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2140 line_number_valid),
2141 },
2142 {
2143 .data_type = QMI_UNSIGNED_2_BYTE,
2144 .elem_len = 1,
2145 .elem_size = sizeof(u16),
2146 .array_type = NO_ARRAY,
2147 .tlv_type = 0x12,
2148 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2149 line_number),
2150 },
2151 {
2152 .data_type = QMI_OPT_FLAG,
2153 .elem_len = 1,
2154 .elem_size = sizeof(u8),
2155 .array_type = NO_ARRAY,
2156 .tlv_type = 0x13,
2157 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2158 function_name_valid),
2159 },
2160 {
2161 .data_type = QMI_STRING,
2162 .elem_len = QMI_WLFW_FUNCTION_NAME_LEN_V01 + 1,
2163 .elem_size = sizeof(char),
2164 .array_type = NO_ARRAY,
2165 .tlv_type = 0x13,
2166 .offset = offsetof(struct wlfw_rejuvenate_ind_msg_v01,
2167 function_name),
2168 },
2169 {}
2170};
2171
2172const struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
2173 {}
2174};
2175
2176const struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
2177 {
2178 .data_type = QMI_STRUCT,
2179 .elem_len = 1,
2180 .elem_size = sizeof(struct qmi_response_type_v01),
2181 .array_type = NO_ARRAY,
2182 .tlv_type = 0x02,
2183 .offset = offsetof(struct wlfw_rejuvenate_ack_resp_msg_v01,
2184 resp),
2185 .ei_array = qmi_response_type_v01_ei,
2186 },
2187 {}
2188};
2189
2190const struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
2191 {
2192 .data_type = QMI_OPT_FLAG,
2193 .elem_len = 1,
2194 .elem_size = sizeof(u8),
2195 .array_type = NO_ARRAY,
2196 .tlv_type = 0x10,
2197 .offset = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01,
2198 mask_valid),
2199 },
2200 {
2201 .data_type = QMI_UNSIGNED_8_BYTE,
2202 .elem_len = 1,
2203 .elem_size = sizeof(u64),
2204 .array_type = NO_ARRAY,
2205 .tlv_type = 0x10,
2206 .offset = offsetof(struct wlfw_dynamic_feature_mask_req_msg_v01,
2207 mask),
2208 },
2209 {}
2210};
2211
2212const struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
2213 {
2214 .data_type = QMI_STRUCT,
2215 .elem_len = 1,
2216 .elem_size = sizeof(struct qmi_response_type_v01),
2217 .array_type = NO_ARRAY,
2218 .tlv_type = 0x02,
2219 .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2220 resp),
2221 .ei_array = qmi_response_type_v01_ei,
2222 },
2223 {
2224 .data_type = QMI_OPT_FLAG,
2225 .elem_len = 1,
2226 .elem_size = sizeof(u8),
2227 .array_type = NO_ARRAY,
2228 .tlv_type = 0x10,
2229 .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2230 prev_mask_valid),
2231 },
2232 {
2233 .data_type = QMI_UNSIGNED_8_BYTE,
2234 .elem_len = 1,
2235 .elem_size = sizeof(u64),
2236 .array_type = NO_ARRAY,
2237 .tlv_type = 0x10,
2238 .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2239 prev_mask),
2240 },
2241 {
2242 .data_type = QMI_OPT_FLAG,
2243 .elem_len = 1,
2244 .elem_size = sizeof(u8),
2245 .array_type = NO_ARRAY,
2246 .tlv_type = 0x11,
2247 .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2248 curr_mask_valid),
2249 },
2250 {
2251 .data_type = QMI_UNSIGNED_8_BYTE,
2252 .elem_len = 1,
2253 .elem_size = sizeof(u64),
2254 .array_type = NO_ARRAY,
2255 .tlv_type = 0x11,
2256 .offset = offsetof(struct wlfw_dynamic_feature_mask_resp_msg_v01,
2257 curr_mask),
2258 },
2259 {}
2260};
2261
2262const struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
2263 {
2264 .data_type = QMI_UNSIGNED_8_BYTE,
2265 .elem_len = 1,
2266 .elem_size = sizeof(u64),
2267 .array_type = NO_ARRAY,
2268 .tlv_type = 0x01,
2269 .offset = offsetof(struct wlfw_m3_info_req_msg_v01,
2270 addr),
2271 },
2272 {
2273 .data_type = QMI_UNSIGNED_4_BYTE,
2274 .elem_len = 1,
2275 .elem_size = sizeof(u32),
2276 .array_type = NO_ARRAY,
2277 .tlv_type = 0x02,
2278 .offset = offsetof(struct wlfw_m3_info_req_msg_v01,
2279 size),
2280 },
2281 {}
2282};
2283
2284const struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
2285 {
2286 .data_type = QMI_STRUCT,
2287 .elem_len = 1,
2288 .elem_size = sizeof(struct qmi_response_type_v01),
2289 .array_type = NO_ARRAY,
2290 .tlv_type = 0x02,
2291 .offset = offsetof(struct wlfw_m3_info_resp_msg_v01,
2292 resp),
2293 .ei_array = qmi_response_type_v01_ei,
2294 },
2295 {}
2296};
2297
2298const struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
2299 {
2300 .data_type = QMI_UNSIGNED_1_BYTE,
2301 .elem_len = 1,
2302 .elem_size = sizeof(u8),
2303 .array_type = NO_ARRAY,
2304 .tlv_type = 0x01,
2305 .offset = offsetof(struct wlfw_xo_cal_ind_msg_v01,
2306 xo_cal_data),
2307 },
2308 {}
2309};
2310

source code of linux/drivers/net/wireless/ath/ath10k/qmi_wlfw_v01.c