1// SPDX-License-Identifier: GPL-2.0
2
3/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
4 * Copyright (C) 2018-2020 Linaro Ltd.
5 */
6#include <linux/stddef.h>
7#include <linux/soc/qcom/qmi.h>
8
9#include "ipa_qmi_msg.h"
10
11/* QMI message structure definition for struct ipa_indication_register_req */
12struct qmi_elem_info ipa_indication_register_req_ei[] = {
13	{
14		.data_type	= QMI_OPT_FLAG,
15		.elem_len	= 1,
16		.elem_size	=
17			sizeof_field(struct ipa_indication_register_req,
18				     master_driver_init_complete_valid),
19		.tlv_type	= 0x10,
20		.offset		= offsetof(struct ipa_indication_register_req,
21					   master_driver_init_complete_valid),
22	},
23	{
24		.data_type	= QMI_UNSIGNED_1_BYTE,
25		.elem_len	= 1,
26		.elem_size	=
27			sizeof_field(struct ipa_indication_register_req,
28				     master_driver_init_complete),
29		.tlv_type	= 0x10,
30		.offset		= offsetof(struct ipa_indication_register_req,
31					   master_driver_init_complete),
32	},
33	{
34		.data_type	= QMI_OPT_FLAG,
35		.elem_len	= 1,
36		.elem_size	=
37			sizeof_field(struct ipa_indication_register_req,
38				     data_usage_quota_reached_valid),
39		.tlv_type	= 0x11,
40		.offset		= offsetof(struct ipa_indication_register_req,
41					   data_usage_quota_reached_valid),
42	},
43	{
44		.data_type	= QMI_UNSIGNED_1_BYTE,
45		.elem_len	= 1,
46		.elem_size	=
47			sizeof_field(struct ipa_indication_register_req,
48				     data_usage_quota_reached),
49		.tlv_type	= 0x11,
50		.offset		= offsetof(struct ipa_indication_register_req,
51					   data_usage_quota_reached),
52	},
53	{
54		.data_type	= QMI_OPT_FLAG,
55		.elem_len	= 1,
56		.elem_size	=
57			sizeof_field(struct ipa_indication_register_req,
58				     ipa_mhi_ready_ind_valid),
59		.tlv_type	= 0x11,
60		.offset		= offsetof(struct ipa_indication_register_req,
61					   ipa_mhi_ready_ind_valid),
62	},
63	{
64		.data_type	= QMI_UNSIGNED_1_BYTE,
65		.elem_len	= 1,
66		.elem_size	=
67			sizeof_field(struct ipa_indication_register_req,
68				     ipa_mhi_ready_ind),
69		.tlv_type	= 0x11,
70		.offset		= offsetof(struct ipa_indication_register_req,
71					   ipa_mhi_ready_ind),
72	},
73	{
74		.data_type	= QMI_EOTI,
75	},
76};
77
78/* QMI message structure definition for struct ipa_indication_register_rsp */
79struct qmi_elem_info ipa_indication_register_rsp_ei[] = {
80	{
81		.data_type	= QMI_STRUCT,
82		.elem_len	= 1,
83		.elem_size	=
84			sizeof_field(struct ipa_indication_register_rsp,
85				     rsp),
86		.tlv_type	= 0x02,
87		.offset		= offsetof(struct ipa_indication_register_rsp,
88					   rsp),
89		.ei_array	= qmi_response_type_v01_ei,
90	},
91	{
92		.data_type	= QMI_EOTI,
93	},
94};
95
96/* QMI message structure definition for struct ipa_driver_init_complete_req */
97struct qmi_elem_info ipa_driver_init_complete_req_ei[] = {
98	{
99		.data_type	= QMI_UNSIGNED_1_BYTE,
100		.elem_len	= 1,
101		.elem_size	=
102			sizeof_field(struct ipa_driver_init_complete_req,
103				     status),
104		.tlv_type	= 0x01,
105		.offset		= offsetof(struct ipa_driver_init_complete_req,
106					   status),
107	},
108	{
109		.data_type	= QMI_EOTI,
110	},
111};
112
113/* QMI message structure definition for struct ipa_driver_init_complete_rsp */
114struct qmi_elem_info ipa_driver_init_complete_rsp_ei[] = {
115	{
116		.data_type	= QMI_STRUCT,
117		.elem_len	= 1,
118		.elem_size	=
119			sizeof_field(struct ipa_driver_init_complete_rsp,
120				     rsp),
121		.tlv_type	= 0x02,
122		.offset		= offsetof(struct ipa_driver_init_complete_rsp,
123					   rsp),
124		.ei_array	= qmi_response_type_v01_ei,
125	},
126	{
127		.data_type	= QMI_EOTI,
128	},
129};
130
131/* QMI message structure definition for struct ipa_init_complete_ind */
132struct qmi_elem_info ipa_init_complete_ind_ei[] = {
133	{
134		.data_type	= QMI_STRUCT,
135		.elem_len	= 1,
136		.elem_size	=
137			sizeof_field(struct ipa_init_complete_ind,
138				     status),
139		.tlv_type	= 0x02,
140		.offset		= offsetof(struct ipa_init_complete_ind,
141					   status),
142		.ei_array	= qmi_response_type_v01_ei,
143	},
144	{
145		.data_type	= QMI_EOTI,
146	},
147};
148
149/* QMI message structure definition for struct ipa_mem_bounds */
150struct qmi_elem_info ipa_mem_bounds_ei[] = {
151	{
152		.data_type	= QMI_UNSIGNED_4_BYTE,
153		.elem_len	= 1,
154		.elem_size	=
155			sizeof_field(struct ipa_mem_bounds, start),
156		.offset		= offsetof(struct ipa_mem_bounds, start),
157	},
158	{
159		.data_type	= QMI_UNSIGNED_4_BYTE,
160		.elem_len	= 1,
161		.elem_size	=
162			sizeof_field(struct ipa_mem_bounds, end),
163		.offset		= offsetof(struct ipa_mem_bounds, end),
164	},
165	{
166		.data_type	= QMI_EOTI,
167	},
168};
169
170/* QMI message structure definition for struct ipa_mem_array */
171struct qmi_elem_info ipa_mem_array_ei[] = {
172	{
173		.data_type	= QMI_UNSIGNED_4_BYTE,
174		.elem_len	= 1,
175		.elem_size	=
176			sizeof_field(struct ipa_mem_array, start),
177		.offset		= offsetof(struct ipa_mem_array, start),
178	},
179	{
180		.data_type	= QMI_UNSIGNED_4_BYTE,
181		.elem_len	= 1,
182		.elem_size	=
183			sizeof_field(struct ipa_mem_array, count),
184		.offset		= offsetof(struct ipa_mem_array, count),
185	},
186	{
187		.data_type	= QMI_EOTI,
188	},
189};
190
191/* QMI message structure definition for struct ipa_mem_range */
192struct qmi_elem_info ipa_mem_range_ei[] = {
193	{
194		.data_type	= QMI_UNSIGNED_4_BYTE,
195		.elem_len	= 1,
196		.elem_size	=
197			sizeof_field(struct ipa_mem_range, start),
198		.offset		= offsetof(struct ipa_mem_range, start),
199	},
200	{
201		.data_type	= QMI_UNSIGNED_4_BYTE,
202		.elem_len	= 1,
203		.elem_size	=
204			sizeof_field(struct ipa_mem_range, size),
205		.offset		= offsetof(struct ipa_mem_range, size),
206	},
207	{
208		.data_type	= QMI_EOTI,
209	},
210};
211
212/* QMI message structure definition for struct ipa_init_modem_driver_req */
213struct qmi_elem_info ipa_init_modem_driver_req_ei[] = {
214	{
215		.data_type	= QMI_OPT_FLAG,
216		.elem_len	= 1,
217		.elem_size	=
218			sizeof_field(struct ipa_init_modem_driver_req,
219				     platform_type_valid),
220		.tlv_type	= 0x10,
221		.offset		= offsetof(struct ipa_init_modem_driver_req,
222					   platform_type_valid),
223	},
224	{
225		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
226		.elem_len	= 1,
227		.elem_size	=
228			sizeof_field(struct ipa_init_modem_driver_req,
229				     platform_type),
230		.tlv_type	= 0x10,
231		.offset		= offsetof(struct ipa_init_modem_driver_req,
232					   platform_type),
233	},
234	{
235		.data_type	= QMI_OPT_FLAG,
236		.elem_len	= 1,
237		.elem_size	=
238			sizeof_field(struct ipa_init_modem_driver_req,
239				     hdr_tbl_info_valid),
240		.tlv_type	= 0x11,
241		.offset		= offsetof(struct ipa_init_modem_driver_req,
242					   hdr_tbl_info_valid),
243	},
244	{
245		.data_type	= QMI_STRUCT,
246		.elem_len	= 1,
247		.elem_size	=
248			sizeof_field(struct ipa_init_modem_driver_req,
249				     hdr_tbl_info),
250		.tlv_type	= 0x11,
251		.offset		= offsetof(struct ipa_init_modem_driver_req,
252					   hdr_tbl_info),
253		.ei_array	= ipa_mem_bounds_ei,
254	},
255	{
256		.data_type	= QMI_OPT_FLAG,
257		.elem_len	= 1,
258		.elem_size	=
259			sizeof_field(struct ipa_init_modem_driver_req,
260				     v4_route_tbl_info_valid),
261		.tlv_type	= 0x12,
262		.offset		= offsetof(struct ipa_init_modem_driver_req,
263					   v4_route_tbl_info_valid),
264	},
265	{
266		.data_type	= QMI_STRUCT,
267		.elem_len	= 1,
268		.elem_size	=
269			sizeof_field(struct ipa_init_modem_driver_req,
270				     v4_route_tbl_info),
271		.tlv_type	= 0x12,
272		.offset		= offsetof(struct ipa_init_modem_driver_req,
273					   v4_route_tbl_info),
274		.ei_array	= ipa_mem_bounds_ei,
275	},
276	{
277		.data_type	= QMI_OPT_FLAG,
278		.elem_len	= 1,
279		.elem_size	=
280			sizeof_field(struct ipa_init_modem_driver_req,
281				     v6_route_tbl_info_valid),
282		.tlv_type	= 0x13,
283		.offset		= offsetof(struct ipa_init_modem_driver_req,
284					   v6_route_tbl_info_valid),
285	},
286	{
287		.data_type	= QMI_STRUCT,
288		.elem_len	= 1,
289		.elem_size	=
290			sizeof_field(struct ipa_init_modem_driver_req,
291				     v6_route_tbl_info),
292		.tlv_type	= 0x13,
293		.offset		= offsetof(struct ipa_init_modem_driver_req,
294					   v6_route_tbl_info),
295		.ei_array	= ipa_mem_bounds_ei,
296	},
297	{
298		.data_type	= QMI_OPT_FLAG,
299		.elem_len	= 1,
300		.elem_size	=
301			sizeof_field(struct ipa_init_modem_driver_req,
302				     v4_filter_tbl_start_valid),
303		.tlv_type	= 0x14,
304		.offset		= offsetof(struct ipa_init_modem_driver_req,
305					   v4_filter_tbl_start_valid),
306	},
307	{
308		.data_type	= QMI_UNSIGNED_4_BYTE,
309		.elem_len	= 1,
310		.elem_size	=
311			sizeof_field(struct ipa_init_modem_driver_req,
312				     v4_filter_tbl_start),
313		.tlv_type	= 0x14,
314		.offset		= offsetof(struct ipa_init_modem_driver_req,
315					   v4_filter_tbl_start),
316	},
317	{
318		.data_type	= QMI_OPT_FLAG,
319		.elem_len	= 1,
320		.elem_size	=
321			sizeof_field(struct ipa_init_modem_driver_req,
322				     v6_filter_tbl_start_valid),
323		.tlv_type	= 0x15,
324		.offset		= offsetof(struct ipa_init_modem_driver_req,
325					   v6_filter_tbl_start_valid),
326	},
327	{
328		.data_type	= QMI_UNSIGNED_4_BYTE,
329		.elem_len	= 1,
330		.elem_size	=
331			sizeof_field(struct ipa_init_modem_driver_req,
332				     v6_filter_tbl_start),
333		.tlv_type	= 0x15,
334		.offset		= offsetof(struct ipa_init_modem_driver_req,
335					   v6_filter_tbl_start),
336	},
337	{
338		.data_type	= QMI_OPT_FLAG,
339		.elem_len	= 1,
340		.elem_size	=
341			sizeof_field(struct ipa_init_modem_driver_req,
342				     modem_mem_info_valid),
343		.tlv_type	= 0x16,
344		.offset		= offsetof(struct ipa_init_modem_driver_req,
345					   modem_mem_info_valid),
346	},
347	{
348		.data_type	= QMI_STRUCT,
349		.elem_len	= 1,
350		.elem_size	=
351			sizeof_field(struct ipa_init_modem_driver_req,
352				     modem_mem_info),
353		.tlv_type	= 0x16,
354		.offset		= offsetof(struct ipa_init_modem_driver_req,
355					   modem_mem_info),
356		.ei_array	= ipa_mem_range_ei,
357	},
358	{
359		.data_type	= QMI_OPT_FLAG,
360		.elem_len	= 1,
361		.elem_size	=
362			sizeof_field(struct ipa_init_modem_driver_req,
363				     ctrl_comm_dest_end_pt_valid),
364		.tlv_type	= 0x17,
365		.offset		= offsetof(struct ipa_init_modem_driver_req,
366					   ctrl_comm_dest_end_pt_valid),
367	},
368	{
369		.data_type	= QMI_UNSIGNED_4_BYTE,
370		.elem_len	= 1,
371		.elem_size	=
372			sizeof_field(struct ipa_init_modem_driver_req,
373				     ctrl_comm_dest_end_pt),
374		.tlv_type	= 0x17,
375		.offset		= offsetof(struct ipa_init_modem_driver_req,
376					   ctrl_comm_dest_end_pt),
377	},
378	{
379		.data_type	= QMI_OPT_FLAG,
380		.elem_len	= 1,
381		.elem_size	=
382			sizeof_field(struct ipa_init_modem_driver_req,
383				     skip_uc_load_valid),
384		.tlv_type	= 0x18,
385		.offset		= offsetof(struct ipa_init_modem_driver_req,
386					   skip_uc_load_valid),
387	},
388	{
389		.data_type	= QMI_UNSIGNED_1_BYTE,
390		.elem_len	= 1,
391		.elem_size	=
392			sizeof_field(struct ipa_init_modem_driver_req,
393				     skip_uc_load),
394		.tlv_type	= 0x18,
395		.offset		= offsetof(struct ipa_init_modem_driver_req,
396					   skip_uc_load),
397	},
398	{
399		.data_type	= QMI_OPT_FLAG,
400		.elem_len	= 1,
401		.elem_size	=
402			sizeof_field(struct ipa_init_modem_driver_req,
403				     hdr_proc_ctx_tbl_info_valid),
404		.tlv_type	= 0x19,
405		.offset		= offsetof(struct ipa_init_modem_driver_req,
406					   hdr_proc_ctx_tbl_info_valid),
407	},
408	{
409		.data_type	= QMI_STRUCT,
410		.elem_len	= 1,
411		.elem_size	=
412			sizeof_field(struct ipa_init_modem_driver_req,
413				     hdr_proc_ctx_tbl_info),
414		.tlv_type	= 0x19,
415		.offset		= offsetof(struct ipa_init_modem_driver_req,
416					   hdr_proc_ctx_tbl_info),
417		.ei_array	= ipa_mem_bounds_ei,
418	},
419	{
420		.data_type	= QMI_OPT_FLAG,
421		.elem_len	= 1,
422		.elem_size	=
423			sizeof_field(struct ipa_init_modem_driver_req,
424				     zip_tbl_info_valid),
425		.tlv_type	= 0x1a,
426		.offset		= offsetof(struct ipa_init_modem_driver_req,
427					   zip_tbl_info_valid),
428	},
429	{
430		.data_type	= QMI_STRUCT,
431		.elem_len	= 1,
432		.elem_size	=
433			sizeof_field(struct ipa_init_modem_driver_req,
434				     zip_tbl_info),
435		.tlv_type	= 0x1a,
436		.offset		= offsetof(struct ipa_init_modem_driver_req,
437					   zip_tbl_info),
438		.ei_array	= ipa_mem_bounds_ei,
439	},
440	{
441		.data_type	= QMI_OPT_FLAG,
442		.elem_len	= 1,
443		.elem_size	=
444			sizeof_field(struct ipa_init_modem_driver_req,
445				     v4_hash_route_tbl_info_valid),
446		.tlv_type	= 0x1b,
447		.offset		= offsetof(struct ipa_init_modem_driver_req,
448					   v4_hash_route_tbl_info_valid),
449	},
450	{
451		.data_type	= QMI_STRUCT,
452		.elem_len	= 1,
453		.elem_size	=
454			sizeof_field(struct ipa_init_modem_driver_req,
455				     v4_hash_route_tbl_info),
456		.tlv_type	= 0x1b,
457		.offset		= offsetof(struct ipa_init_modem_driver_req,
458					   v4_hash_route_tbl_info),
459		.ei_array	= ipa_mem_bounds_ei,
460	},
461	{
462		.data_type	= QMI_OPT_FLAG,
463		.elem_len	= 1,
464		.elem_size	=
465			sizeof_field(struct ipa_init_modem_driver_req,
466				     v6_hash_route_tbl_info_valid),
467		.tlv_type	= 0x1c,
468		.offset		= offsetof(struct ipa_init_modem_driver_req,
469					   v6_hash_route_tbl_info_valid),
470	},
471	{
472		.data_type	= QMI_STRUCT,
473		.elem_len	= 1,
474		.elem_size	=
475			sizeof_field(struct ipa_init_modem_driver_req,
476				     v6_hash_route_tbl_info),
477		.tlv_type	= 0x1c,
478		.offset		= offsetof(struct ipa_init_modem_driver_req,
479					   v6_hash_route_tbl_info),
480		.ei_array	= ipa_mem_bounds_ei,
481	},
482	{
483		.data_type	= QMI_OPT_FLAG,
484		.elem_len	= 1,
485		.elem_size	=
486			sizeof_field(struct ipa_init_modem_driver_req,
487				     v4_hash_filter_tbl_start_valid),
488		.tlv_type	= 0x1d,
489		.offset		= offsetof(struct ipa_init_modem_driver_req,
490					   v4_hash_filter_tbl_start_valid),
491	},
492	{
493		.data_type	= QMI_UNSIGNED_4_BYTE,
494		.elem_len	= 1,
495		.elem_size	=
496			sizeof_field(struct ipa_init_modem_driver_req,
497				     v4_hash_filter_tbl_start),
498		.tlv_type	= 0x1d,
499		.offset		= offsetof(struct ipa_init_modem_driver_req,
500					   v4_hash_filter_tbl_start),
501	},
502	{
503		.data_type	= QMI_OPT_FLAG,
504		.elem_len	= 1,
505		.elem_size	=
506			sizeof_field(struct ipa_init_modem_driver_req,
507				     v6_hash_filter_tbl_start_valid),
508		.tlv_type	= 0x1e,
509		.offset		= offsetof(struct ipa_init_modem_driver_req,
510					   v6_hash_filter_tbl_start_valid),
511	},
512	{
513		.data_type	= QMI_UNSIGNED_4_BYTE,
514		.elem_len	= 1,
515		.elem_size	=
516			sizeof_field(struct ipa_init_modem_driver_req,
517				     v6_hash_filter_tbl_start),
518		.tlv_type	= 0x1e,
519		.offset		= offsetof(struct ipa_init_modem_driver_req,
520					   v6_hash_filter_tbl_start),
521	},
522	{
523		.data_type	= QMI_OPT_FLAG,
524		.elem_len	= 1,
525		.elem_size	=
526			sizeof_field(struct ipa_init_modem_driver_req,
527				     hw_stats_quota_base_addr_valid),
528		.tlv_type	= 0x1f,
529		.offset		= offsetof(struct ipa_init_modem_driver_req,
530					   hw_stats_quota_base_addr_valid),
531	},
532	{
533		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
534		.elem_len	= 1,
535		.elem_size	=
536			sizeof_field(struct ipa_init_modem_driver_req,
537				     hw_stats_quota_base_addr),
538		.tlv_type	= 0x1f,
539		.offset		= offsetof(struct ipa_init_modem_driver_req,
540					   hw_stats_quota_base_addr),
541	},
542	{
543		.data_type	= QMI_OPT_FLAG,
544		.elem_len	= 1,
545		.elem_size	=
546			sizeof_field(struct ipa_init_modem_driver_req,
547				     hw_stats_quota_size_valid),
548		.tlv_type	= 0x1f,
549		.offset		= offsetof(struct ipa_init_modem_driver_req,
550					   hw_stats_quota_size_valid),
551	},
552	{
553		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
554		.elem_len	= 1,
555		.elem_size	=
556			sizeof_field(struct ipa_init_modem_driver_req,
557				     hw_stats_quota_size),
558		.tlv_type	= 0x1f,
559		.offset		= offsetof(struct ipa_init_modem_driver_req,
560					   hw_stats_quota_size),
561	},
562	{
563		.data_type	= QMI_OPT_FLAG,
564		.elem_len	= 1,
565		.elem_size	=
566			sizeof_field(struct ipa_init_modem_driver_req,
567				     hw_stats_drop_size_valid),
568		.tlv_type	= 0x1f,
569		.offset		= offsetof(struct ipa_init_modem_driver_req,
570					   hw_stats_drop_size_valid),
571	},
572	{
573		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
574		.elem_len	= 1,
575		.elem_size	=
576			sizeof_field(struct ipa_init_modem_driver_req,
577				     hw_stats_drop_size),
578		.tlv_type	= 0x1f,
579		.offset		= offsetof(struct ipa_init_modem_driver_req,
580					   hw_stats_drop_size),
581	},
582	{
583		.data_type	= QMI_EOTI,
584	},
585};
586
587/* QMI message structure definition for struct ipa_init_modem_driver_rsp */
588struct qmi_elem_info ipa_init_modem_driver_rsp_ei[] = {
589	{
590		.data_type	= QMI_STRUCT,
591		.elem_len	= 1,
592		.elem_size	=
593			sizeof_field(struct ipa_init_modem_driver_rsp,
594				     rsp),
595		.tlv_type	= 0x02,
596		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
597					   rsp),
598		.ei_array	= qmi_response_type_v01_ei,
599	},
600	{
601		.data_type	= QMI_OPT_FLAG,
602		.elem_len	= 1,
603		.elem_size	=
604			sizeof_field(struct ipa_init_modem_driver_rsp,
605				     ctrl_comm_dest_end_pt_valid),
606		.tlv_type	= 0x10,
607		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
608					   ctrl_comm_dest_end_pt_valid),
609	},
610	{
611		.data_type	= QMI_UNSIGNED_4_BYTE,
612		.elem_len	= 1,
613		.elem_size	=
614			sizeof_field(struct ipa_init_modem_driver_rsp,
615				     ctrl_comm_dest_end_pt),
616		.tlv_type	= 0x10,
617		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
618					   ctrl_comm_dest_end_pt),
619	},
620	{
621		.data_type	= QMI_OPT_FLAG,
622		.elem_len	= 1,
623		.elem_size	=
624			sizeof_field(struct ipa_init_modem_driver_rsp,
625				     default_end_pt_valid),
626		.tlv_type	= 0x11,
627		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
628					   default_end_pt_valid),
629	},
630	{
631		.data_type	= QMI_UNSIGNED_4_BYTE,
632		.elem_len	= 1,
633		.elem_size	=
634			sizeof_field(struct ipa_init_modem_driver_rsp,
635				     default_end_pt),
636		.tlv_type	= 0x11,
637		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
638					   default_end_pt),
639	},
640	{
641		.data_type	= QMI_OPT_FLAG,
642		.elem_len	= 1,
643		.elem_size	=
644			sizeof_field(struct ipa_init_modem_driver_rsp,
645				     modem_driver_init_pending_valid),
646		.tlv_type	= 0x12,
647		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
648					   modem_driver_init_pending_valid),
649	},
650	{
651		.data_type	= QMI_UNSIGNED_1_BYTE,
652		.elem_len	= 1,
653		.elem_size	=
654			sizeof_field(struct ipa_init_modem_driver_rsp,
655				     modem_driver_init_pending),
656		.tlv_type	= 0x12,
657		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
658					   modem_driver_init_pending),
659	},
660	{
661		.data_type	= QMI_EOTI,
662	},
663};
664