xref: /openbmc/linux/drivers/net/ipa/ipa_qmi_msg.c (revision 6ec7a9c2)
1530f9216SAlex Elder // SPDX-License-Identifier: GPL-2.0
2530f9216SAlex Elder 
3530f9216SAlex Elder /* Copyright (c) 2018, The Linux Foundation. All rights reserved.
4530f9216SAlex Elder  * Copyright (C) 2018-2020 Linaro Ltd.
5530f9216SAlex Elder  */
6530f9216SAlex Elder #include <linux/stddef.h>
7530f9216SAlex Elder #include <linux/soc/qcom/qmi.h>
8530f9216SAlex Elder 
9530f9216SAlex Elder #include "ipa_qmi_msg.h"
10530f9216SAlex Elder 
11530f9216SAlex Elder /* QMI message structure definition for struct ipa_indication_register_req */
12530f9216SAlex Elder struct qmi_elem_info ipa_indication_register_req_ei[] = {
13530f9216SAlex Elder 	{
14530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
15530f9216SAlex Elder 		.elem_len	= 1,
16530f9216SAlex Elder 		.elem_size	=
17530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
18530f9216SAlex Elder 				     master_driver_init_complete_valid),
19530f9216SAlex Elder 		.tlv_type	= 0x10,
20530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
21530f9216SAlex Elder 					   master_driver_init_complete_valid),
22530f9216SAlex Elder 	},
23530f9216SAlex Elder 	{
24530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
25530f9216SAlex Elder 		.elem_len	= 1,
26530f9216SAlex Elder 		.elem_size	=
27530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
28530f9216SAlex Elder 				     master_driver_init_complete),
29530f9216SAlex Elder 		.tlv_type	= 0x10,
30530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
31530f9216SAlex Elder 					   master_driver_init_complete),
32530f9216SAlex Elder 	},
33530f9216SAlex Elder 	{
34530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
35530f9216SAlex Elder 		.elem_len	= 1,
36530f9216SAlex Elder 		.elem_size	=
37530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
38530f9216SAlex Elder 				     data_usage_quota_reached_valid),
39530f9216SAlex Elder 		.tlv_type	= 0x11,
40530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
41530f9216SAlex Elder 					   data_usage_quota_reached_valid),
42530f9216SAlex Elder 	},
43530f9216SAlex Elder 	{
44530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
45530f9216SAlex Elder 		.elem_len	= 1,
46530f9216SAlex Elder 		.elem_size	=
47530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
48530f9216SAlex Elder 				     data_usage_quota_reached),
49530f9216SAlex Elder 		.tlv_type	= 0x11,
50530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
51530f9216SAlex Elder 					   data_usage_quota_reached),
52530f9216SAlex Elder 	},
53530f9216SAlex Elder 	{
54530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
55530f9216SAlex Elder 		.elem_len	= 1,
56530f9216SAlex Elder 		.elem_size	=
57530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
58530f9216SAlex Elder 				     ipa_mhi_ready_ind_valid),
598aa68304SAlex Elder 		.tlv_type	= 0x12,
60530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
61530f9216SAlex Elder 					   ipa_mhi_ready_ind_valid),
62530f9216SAlex Elder 	},
63530f9216SAlex Elder 	{
64530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
65530f9216SAlex Elder 		.elem_len	= 1,
66530f9216SAlex Elder 		.elem_size	=
67530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
68530f9216SAlex Elder 				     ipa_mhi_ready_ind),
698aa68304SAlex Elder 		.tlv_type	= 0x12,
70530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
71530f9216SAlex Elder 					   ipa_mhi_ready_ind),
72530f9216SAlex Elder 	},
73530f9216SAlex Elder 	{
74*6ec7a9c2SAlex Elder 		.data_type	= QMI_OPT_FLAG,
75*6ec7a9c2SAlex Elder 		.elem_len	= 1,
76*6ec7a9c2SAlex Elder 		.elem_size	=
77*6ec7a9c2SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
78*6ec7a9c2SAlex Elder 				     endpoint_desc_ind_valid),
79*6ec7a9c2SAlex Elder 		.tlv_type	= 0x13,
80*6ec7a9c2SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
81*6ec7a9c2SAlex Elder 					   endpoint_desc_ind_valid),
82*6ec7a9c2SAlex Elder 	},
83*6ec7a9c2SAlex Elder 	{
84*6ec7a9c2SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
85*6ec7a9c2SAlex Elder 		.elem_len	= 1,
86*6ec7a9c2SAlex Elder 		.elem_size	=
87*6ec7a9c2SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
88*6ec7a9c2SAlex Elder 				     endpoint_desc_ind),
89*6ec7a9c2SAlex Elder 		.tlv_type	= 0x13,
90*6ec7a9c2SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
91*6ec7a9c2SAlex Elder 					   endpoint_desc_ind),
92*6ec7a9c2SAlex Elder 	},
93*6ec7a9c2SAlex Elder 	{
94*6ec7a9c2SAlex Elder 		.data_type	= QMI_OPT_FLAG,
95*6ec7a9c2SAlex Elder 		.elem_len	= 1,
96*6ec7a9c2SAlex Elder 		.elem_size	=
97*6ec7a9c2SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
98*6ec7a9c2SAlex Elder 				     bw_change_ind_valid),
99*6ec7a9c2SAlex Elder 		.tlv_type	= 0x14,
100*6ec7a9c2SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
101*6ec7a9c2SAlex Elder 					   bw_change_ind_valid),
102*6ec7a9c2SAlex Elder 	},
103*6ec7a9c2SAlex Elder 	{
104*6ec7a9c2SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
105*6ec7a9c2SAlex Elder 		.elem_len	= 1,
106*6ec7a9c2SAlex Elder 		.elem_size	=
107*6ec7a9c2SAlex Elder 			sizeof_field(struct ipa_indication_register_req,
108*6ec7a9c2SAlex Elder 				     bw_change_ind),
109*6ec7a9c2SAlex Elder 		.tlv_type	= 0x14,
110*6ec7a9c2SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_req,
111*6ec7a9c2SAlex Elder 					   bw_change_ind),
112*6ec7a9c2SAlex Elder 	},
113*6ec7a9c2SAlex Elder 	{
114530f9216SAlex Elder 		.data_type	= QMI_EOTI,
115530f9216SAlex Elder 	},
116530f9216SAlex Elder };
117530f9216SAlex Elder 
118530f9216SAlex Elder /* QMI message structure definition for struct ipa_indication_register_rsp */
119530f9216SAlex Elder struct qmi_elem_info ipa_indication_register_rsp_ei[] = {
120530f9216SAlex Elder 	{
121530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
122530f9216SAlex Elder 		.elem_len	= 1,
123530f9216SAlex Elder 		.elem_size	=
124530f9216SAlex Elder 			sizeof_field(struct ipa_indication_register_rsp,
125530f9216SAlex Elder 				     rsp),
126530f9216SAlex Elder 		.tlv_type	= 0x02,
127530f9216SAlex Elder 		.offset		= offsetof(struct ipa_indication_register_rsp,
128530f9216SAlex Elder 					   rsp),
129530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
130530f9216SAlex Elder 	},
131530f9216SAlex Elder 	{
132530f9216SAlex Elder 		.data_type	= QMI_EOTI,
133530f9216SAlex Elder 	},
134530f9216SAlex Elder };
135530f9216SAlex Elder 
136530f9216SAlex Elder /* QMI message structure definition for struct ipa_driver_init_complete_req */
137530f9216SAlex Elder struct qmi_elem_info ipa_driver_init_complete_req_ei[] = {
138530f9216SAlex Elder 	{
139530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
140530f9216SAlex Elder 		.elem_len	= 1,
141530f9216SAlex Elder 		.elem_size	=
142530f9216SAlex Elder 			sizeof_field(struct ipa_driver_init_complete_req,
143530f9216SAlex Elder 				     status),
144530f9216SAlex Elder 		.tlv_type	= 0x01,
145530f9216SAlex Elder 		.offset		= offsetof(struct ipa_driver_init_complete_req,
146530f9216SAlex Elder 					   status),
147530f9216SAlex Elder 	},
148530f9216SAlex Elder 	{
149530f9216SAlex Elder 		.data_type	= QMI_EOTI,
150530f9216SAlex Elder 	},
151530f9216SAlex Elder };
152530f9216SAlex Elder 
153530f9216SAlex Elder /* QMI message structure definition for struct ipa_driver_init_complete_rsp */
154530f9216SAlex Elder struct qmi_elem_info ipa_driver_init_complete_rsp_ei[] = {
155530f9216SAlex Elder 	{
156530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
157530f9216SAlex Elder 		.elem_len	= 1,
158530f9216SAlex Elder 		.elem_size	=
159530f9216SAlex Elder 			sizeof_field(struct ipa_driver_init_complete_rsp,
160530f9216SAlex Elder 				     rsp),
161530f9216SAlex Elder 		.tlv_type	= 0x02,
16274478ea4SAlex Elder 		.offset		= offsetof(struct ipa_driver_init_complete_rsp,
163530f9216SAlex Elder 					   rsp),
164530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
165530f9216SAlex Elder 	},
166530f9216SAlex Elder 	{
167530f9216SAlex Elder 		.data_type	= QMI_EOTI,
168530f9216SAlex Elder 	},
169530f9216SAlex Elder };
170530f9216SAlex Elder 
171530f9216SAlex Elder /* QMI message structure definition for struct ipa_init_complete_ind */
172530f9216SAlex Elder struct qmi_elem_info ipa_init_complete_ind_ei[] = {
173530f9216SAlex Elder 	{
174530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
175530f9216SAlex Elder 		.elem_len	= 1,
176530f9216SAlex Elder 		.elem_size	=
177530f9216SAlex Elder 			sizeof_field(struct ipa_init_complete_ind,
178530f9216SAlex Elder 				     status),
179530f9216SAlex Elder 		.tlv_type	= 0x02,
18074478ea4SAlex Elder 		.offset		= offsetof(struct ipa_init_complete_ind,
181530f9216SAlex Elder 					   status),
182530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
183530f9216SAlex Elder 	},
184530f9216SAlex Elder 	{
185530f9216SAlex Elder 		.data_type	= QMI_EOTI,
186530f9216SAlex Elder 	},
187530f9216SAlex Elder };
188530f9216SAlex Elder 
189530f9216SAlex Elder /* QMI message structure definition for struct ipa_mem_bounds */
190530f9216SAlex Elder struct qmi_elem_info ipa_mem_bounds_ei[] = {
191530f9216SAlex Elder 	{
192530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
193530f9216SAlex Elder 		.elem_len	= 1,
194530f9216SAlex Elder 		.elem_size	=
195530f9216SAlex Elder 			sizeof_field(struct ipa_mem_bounds, start),
196530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_bounds, start),
197530f9216SAlex Elder 	},
198530f9216SAlex Elder 	{
199530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
200530f9216SAlex Elder 		.elem_len	= 1,
201530f9216SAlex Elder 		.elem_size	=
202530f9216SAlex Elder 			sizeof_field(struct ipa_mem_bounds, end),
203530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_bounds, end),
204530f9216SAlex Elder 	},
205530f9216SAlex Elder 	{
206530f9216SAlex Elder 		.data_type	= QMI_EOTI,
207530f9216SAlex Elder 	},
208530f9216SAlex Elder };
209530f9216SAlex Elder 
210530f9216SAlex Elder /* QMI message structure definition for struct ipa_mem_array */
211530f9216SAlex Elder struct qmi_elem_info ipa_mem_array_ei[] = {
212530f9216SAlex Elder 	{
213530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
214530f9216SAlex Elder 		.elem_len	= 1,
215530f9216SAlex Elder 		.elem_size	=
216530f9216SAlex Elder 			sizeof_field(struct ipa_mem_array, start),
217530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_array, start),
218530f9216SAlex Elder 	},
219530f9216SAlex Elder 	{
220530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
221530f9216SAlex Elder 		.elem_len	= 1,
222530f9216SAlex Elder 		.elem_size	=
223530f9216SAlex Elder 			sizeof_field(struct ipa_mem_array, count),
224530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_array, count),
225530f9216SAlex Elder 	},
226530f9216SAlex Elder 	{
227530f9216SAlex Elder 		.data_type	= QMI_EOTI,
228530f9216SAlex Elder 	},
229530f9216SAlex Elder };
230530f9216SAlex Elder 
231530f9216SAlex Elder /* QMI message structure definition for struct ipa_mem_range */
232530f9216SAlex Elder struct qmi_elem_info ipa_mem_range_ei[] = {
233530f9216SAlex Elder 	{
234530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
235530f9216SAlex Elder 		.elem_len	= 1,
236530f9216SAlex Elder 		.elem_size	=
237530f9216SAlex Elder 			sizeof_field(struct ipa_mem_range, start),
238530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_range, start),
239530f9216SAlex Elder 	},
240530f9216SAlex Elder 	{
241530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
242530f9216SAlex Elder 		.elem_len	= 1,
243530f9216SAlex Elder 		.elem_size	=
244530f9216SAlex Elder 			sizeof_field(struct ipa_mem_range, size),
245530f9216SAlex Elder 		.offset		= offsetof(struct ipa_mem_range, size),
246530f9216SAlex Elder 	},
247530f9216SAlex Elder 	{
248530f9216SAlex Elder 		.data_type	= QMI_EOTI,
249530f9216SAlex Elder 	},
250530f9216SAlex Elder };
251530f9216SAlex Elder 
252530f9216SAlex Elder /* QMI message structure definition for struct ipa_init_modem_driver_req */
253530f9216SAlex Elder struct qmi_elem_info ipa_init_modem_driver_req_ei[] = {
254530f9216SAlex Elder 	{
255530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
256530f9216SAlex Elder 		.elem_len	= 1,
257530f9216SAlex Elder 		.elem_size	=
258530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
259530f9216SAlex Elder 				     platform_type_valid),
260530f9216SAlex Elder 		.tlv_type	= 0x10,
26174478ea4SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
262530f9216SAlex Elder 					   platform_type_valid),
263530f9216SAlex Elder 	},
264530f9216SAlex Elder 	{
265530f9216SAlex Elder 		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
266530f9216SAlex Elder 		.elem_len	= 1,
267530f9216SAlex Elder 		.elem_size	=
268530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
269530f9216SAlex Elder 				     platform_type),
270530f9216SAlex Elder 		.tlv_type	= 0x10,
271530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
272530f9216SAlex Elder 					   platform_type),
273530f9216SAlex Elder 	},
274530f9216SAlex Elder 	{
275530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
276530f9216SAlex Elder 		.elem_len	= 1,
277530f9216SAlex Elder 		.elem_size	=
278530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
279530f9216SAlex Elder 				     hdr_tbl_info_valid),
280530f9216SAlex Elder 		.tlv_type	= 0x11,
281530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
282530f9216SAlex Elder 					   hdr_tbl_info_valid),
283530f9216SAlex Elder 	},
284530f9216SAlex Elder 	{
285530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
286530f9216SAlex Elder 		.elem_len	= 1,
287530f9216SAlex Elder 		.elem_size	=
288530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
289530f9216SAlex Elder 				     hdr_tbl_info),
290530f9216SAlex Elder 		.tlv_type	= 0x11,
291530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
292530f9216SAlex Elder 					   hdr_tbl_info),
293530f9216SAlex Elder 		.ei_array	= ipa_mem_bounds_ei,
294530f9216SAlex Elder 	},
295530f9216SAlex Elder 	{
296530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
297530f9216SAlex Elder 		.elem_len	= 1,
298530f9216SAlex Elder 		.elem_size	=
299530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
300530f9216SAlex Elder 				     v4_route_tbl_info_valid),
301530f9216SAlex Elder 		.tlv_type	= 0x12,
302530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
303530f9216SAlex Elder 					   v4_route_tbl_info_valid),
304530f9216SAlex Elder 	},
305530f9216SAlex Elder 	{
306530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
307530f9216SAlex Elder 		.elem_len	= 1,
308530f9216SAlex Elder 		.elem_size	=
309530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
310530f9216SAlex Elder 				     v4_route_tbl_info),
311530f9216SAlex Elder 		.tlv_type	= 0x12,
312530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
313530f9216SAlex Elder 					   v4_route_tbl_info),
314530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
315530f9216SAlex Elder 	},
316530f9216SAlex Elder 	{
317530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
318530f9216SAlex Elder 		.elem_len	= 1,
319530f9216SAlex Elder 		.elem_size	=
320530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
321530f9216SAlex Elder 				     v6_route_tbl_info_valid),
322530f9216SAlex Elder 		.tlv_type	= 0x13,
323530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
324530f9216SAlex Elder 					   v6_route_tbl_info_valid),
325530f9216SAlex Elder 	},
326530f9216SAlex Elder 	{
327530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
328530f9216SAlex Elder 		.elem_len	= 1,
329530f9216SAlex Elder 		.elem_size	=
330530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
331530f9216SAlex Elder 				     v6_route_tbl_info),
332530f9216SAlex Elder 		.tlv_type	= 0x13,
333530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
334530f9216SAlex Elder 					   v6_route_tbl_info),
335530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
336530f9216SAlex Elder 	},
337530f9216SAlex Elder 	{
338530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
339530f9216SAlex Elder 		.elem_len	= 1,
340530f9216SAlex Elder 		.elem_size	=
341530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
342530f9216SAlex Elder 				     v4_filter_tbl_start_valid),
343530f9216SAlex Elder 		.tlv_type	= 0x14,
344530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
345530f9216SAlex Elder 					   v4_filter_tbl_start_valid),
346530f9216SAlex Elder 	},
347530f9216SAlex Elder 	{
348530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
349530f9216SAlex Elder 		.elem_len	= 1,
350530f9216SAlex Elder 		.elem_size	=
351530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
352530f9216SAlex Elder 				     v4_filter_tbl_start),
353530f9216SAlex Elder 		.tlv_type	= 0x14,
354530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
355530f9216SAlex Elder 					   v4_filter_tbl_start),
356530f9216SAlex Elder 	},
357530f9216SAlex Elder 	{
358530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
359530f9216SAlex Elder 		.elem_len	= 1,
360530f9216SAlex Elder 		.elem_size	=
361530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
362530f9216SAlex Elder 				     v6_filter_tbl_start_valid),
363530f9216SAlex Elder 		.tlv_type	= 0x15,
364530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
365530f9216SAlex Elder 					   v6_filter_tbl_start_valid),
366530f9216SAlex Elder 	},
367530f9216SAlex Elder 	{
368530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
369530f9216SAlex Elder 		.elem_len	= 1,
370530f9216SAlex Elder 		.elem_size	=
371530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
372530f9216SAlex Elder 				     v6_filter_tbl_start),
373530f9216SAlex Elder 		.tlv_type	= 0x15,
374530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
375530f9216SAlex Elder 					   v6_filter_tbl_start),
376530f9216SAlex Elder 	},
377530f9216SAlex Elder 	{
378530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
379530f9216SAlex Elder 		.elem_len	= 1,
380530f9216SAlex Elder 		.elem_size	=
381530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
382530f9216SAlex Elder 				     modem_mem_info_valid),
383530f9216SAlex Elder 		.tlv_type	= 0x16,
384530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
385530f9216SAlex Elder 					   modem_mem_info_valid),
386530f9216SAlex Elder 	},
387530f9216SAlex Elder 	{
388530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
389530f9216SAlex Elder 		.elem_len	= 1,
390530f9216SAlex Elder 		.elem_size	=
391530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
392530f9216SAlex Elder 				     modem_mem_info),
393530f9216SAlex Elder 		.tlv_type	= 0x16,
394530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
395530f9216SAlex Elder 					   modem_mem_info),
396530f9216SAlex Elder 		.ei_array	= ipa_mem_range_ei,
397530f9216SAlex Elder 	},
398530f9216SAlex Elder 	{
399530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
400530f9216SAlex Elder 		.elem_len	= 1,
401530f9216SAlex Elder 		.elem_size	=
402530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
403530f9216SAlex Elder 				     ctrl_comm_dest_end_pt_valid),
404530f9216SAlex Elder 		.tlv_type	= 0x17,
405530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
406530f9216SAlex Elder 					   ctrl_comm_dest_end_pt_valid),
407530f9216SAlex Elder 	},
408530f9216SAlex Elder 	{
409530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
410530f9216SAlex Elder 		.elem_len	= 1,
411530f9216SAlex Elder 		.elem_size	=
412530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
413530f9216SAlex Elder 				     ctrl_comm_dest_end_pt),
414530f9216SAlex Elder 		.tlv_type	= 0x17,
415530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
416530f9216SAlex Elder 					   ctrl_comm_dest_end_pt),
417530f9216SAlex Elder 	},
418530f9216SAlex Elder 	{
419530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
420530f9216SAlex Elder 		.elem_len	= 1,
421530f9216SAlex Elder 		.elem_size	=
422530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
423530f9216SAlex Elder 				     skip_uc_load_valid),
424530f9216SAlex Elder 		.tlv_type	= 0x18,
425530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
426530f9216SAlex Elder 					   skip_uc_load_valid),
427530f9216SAlex Elder 	},
428530f9216SAlex Elder 	{
429530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
430530f9216SAlex Elder 		.elem_len	= 1,
431530f9216SAlex Elder 		.elem_size	=
432530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
433530f9216SAlex Elder 				     skip_uc_load),
434530f9216SAlex Elder 		.tlv_type	= 0x18,
435530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
436530f9216SAlex Elder 					   skip_uc_load),
437530f9216SAlex Elder 	},
438530f9216SAlex Elder 	{
439530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
440530f9216SAlex Elder 		.elem_len	= 1,
441530f9216SAlex Elder 		.elem_size	=
442530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
443530f9216SAlex Elder 				     hdr_proc_ctx_tbl_info_valid),
444530f9216SAlex Elder 		.tlv_type	= 0x19,
445530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
446530f9216SAlex Elder 					   hdr_proc_ctx_tbl_info_valid),
447530f9216SAlex Elder 	},
448530f9216SAlex Elder 	{
449530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
450530f9216SAlex Elder 		.elem_len	= 1,
451530f9216SAlex Elder 		.elem_size	=
452530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
453530f9216SAlex Elder 				     hdr_proc_ctx_tbl_info),
454530f9216SAlex Elder 		.tlv_type	= 0x19,
455530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
456530f9216SAlex Elder 					   hdr_proc_ctx_tbl_info),
457530f9216SAlex Elder 		.ei_array	= ipa_mem_bounds_ei,
458530f9216SAlex Elder 	},
459530f9216SAlex Elder 	{
460530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
461530f9216SAlex Elder 		.elem_len	= 1,
462530f9216SAlex Elder 		.elem_size	=
463530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
464530f9216SAlex Elder 				     zip_tbl_info_valid),
465530f9216SAlex Elder 		.tlv_type	= 0x1a,
466530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
467530f9216SAlex Elder 					   zip_tbl_info_valid),
468530f9216SAlex Elder 	},
469530f9216SAlex Elder 	{
470530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
471530f9216SAlex Elder 		.elem_len	= 1,
472530f9216SAlex Elder 		.elem_size	=
473530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
474530f9216SAlex Elder 				     zip_tbl_info),
475530f9216SAlex Elder 		.tlv_type	= 0x1a,
476530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
477530f9216SAlex Elder 					   zip_tbl_info),
478530f9216SAlex Elder 		.ei_array	= ipa_mem_bounds_ei,
479530f9216SAlex Elder 	},
480530f9216SAlex Elder 	{
481530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
482530f9216SAlex Elder 		.elem_len	= 1,
483530f9216SAlex Elder 		.elem_size	=
484530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
485530f9216SAlex Elder 				     v4_hash_route_tbl_info_valid),
486530f9216SAlex Elder 		.tlv_type	= 0x1b,
487530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
488530f9216SAlex Elder 					   v4_hash_route_tbl_info_valid),
489530f9216SAlex Elder 	},
490530f9216SAlex Elder 	{
491530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
492530f9216SAlex Elder 		.elem_len	= 1,
493530f9216SAlex Elder 		.elem_size	=
494530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
495530f9216SAlex Elder 				     v4_hash_route_tbl_info),
496530f9216SAlex Elder 		.tlv_type	= 0x1b,
497530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
498530f9216SAlex Elder 					   v4_hash_route_tbl_info),
499530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
500530f9216SAlex Elder 	},
501530f9216SAlex Elder 	{
502530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
503530f9216SAlex Elder 		.elem_len	= 1,
504530f9216SAlex Elder 		.elem_size	=
505530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
506530f9216SAlex Elder 				     v6_hash_route_tbl_info_valid),
507530f9216SAlex Elder 		.tlv_type	= 0x1c,
508530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
509530f9216SAlex Elder 					   v6_hash_route_tbl_info_valid),
510530f9216SAlex Elder 	},
511530f9216SAlex Elder 	{
512530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
513530f9216SAlex Elder 		.elem_len	= 1,
514530f9216SAlex Elder 		.elem_size	=
515530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
516530f9216SAlex Elder 				     v6_hash_route_tbl_info),
517530f9216SAlex Elder 		.tlv_type	= 0x1c,
518530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
519530f9216SAlex Elder 					   v6_hash_route_tbl_info),
520530f9216SAlex Elder 		.ei_array	= ipa_mem_array_ei,
521530f9216SAlex Elder 	},
522530f9216SAlex Elder 	{
523530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
524530f9216SAlex Elder 		.elem_len	= 1,
525530f9216SAlex Elder 		.elem_size	=
526530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
527530f9216SAlex Elder 				     v4_hash_filter_tbl_start_valid),
528530f9216SAlex Elder 		.tlv_type	= 0x1d,
529530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
530530f9216SAlex Elder 					   v4_hash_filter_tbl_start_valid),
531530f9216SAlex Elder 	},
532530f9216SAlex Elder 	{
533530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
534530f9216SAlex Elder 		.elem_len	= 1,
535530f9216SAlex Elder 		.elem_size	=
536530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
537530f9216SAlex Elder 				     v4_hash_filter_tbl_start),
538530f9216SAlex Elder 		.tlv_type	= 0x1d,
539530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
540530f9216SAlex Elder 					   v4_hash_filter_tbl_start),
541530f9216SAlex Elder 	},
542530f9216SAlex Elder 	{
543530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
544530f9216SAlex Elder 		.elem_len	= 1,
545530f9216SAlex Elder 		.elem_size	=
546530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
547530f9216SAlex Elder 				     v6_hash_filter_tbl_start_valid),
548530f9216SAlex Elder 		.tlv_type	= 0x1e,
549530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
550530f9216SAlex Elder 					   v6_hash_filter_tbl_start_valid),
551530f9216SAlex Elder 	},
552530f9216SAlex Elder 	{
553530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
554530f9216SAlex Elder 		.elem_len	= 1,
555530f9216SAlex Elder 		.elem_size	=
556530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
557530f9216SAlex Elder 				     v6_hash_filter_tbl_start),
558530f9216SAlex Elder 		.tlv_type	= 0x1e,
559530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
560530f9216SAlex Elder 					   v6_hash_filter_tbl_start),
561530f9216SAlex Elder 	},
562530f9216SAlex Elder 	{
563530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
564530f9216SAlex Elder 		.elem_len	= 1,
565530f9216SAlex Elder 		.elem_size	=
566530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
567530f9216SAlex Elder 				     hw_stats_quota_base_addr_valid),
568530f9216SAlex Elder 		.tlv_type	= 0x1f,
569530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
570530f9216SAlex Elder 					   hw_stats_quota_base_addr_valid),
571530f9216SAlex Elder 	},
572530f9216SAlex Elder 	{
5737ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
574530f9216SAlex Elder 		.elem_len	= 1,
575530f9216SAlex Elder 		.elem_size	=
576530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
577530f9216SAlex Elder 				     hw_stats_quota_base_addr),
578530f9216SAlex Elder 		.tlv_type	= 0x1f,
579530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
580530f9216SAlex Elder 					   hw_stats_quota_base_addr),
581530f9216SAlex Elder 	},
582530f9216SAlex Elder 	{
583530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
584530f9216SAlex Elder 		.elem_len	= 1,
585530f9216SAlex Elder 		.elem_size	=
586530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
587530f9216SAlex Elder 				     hw_stats_quota_size_valid),
5887ac629e3SAlex Elder 		.tlv_type	= 0x20,
589530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
590530f9216SAlex Elder 					   hw_stats_quota_size_valid),
591530f9216SAlex Elder 	},
592530f9216SAlex Elder 	{
5937ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
594530f9216SAlex Elder 		.elem_len	= 1,
595530f9216SAlex Elder 		.elem_size	=
596530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
597530f9216SAlex Elder 				     hw_stats_quota_size),
5987ac629e3SAlex Elder 		.tlv_type	= 0x20,
599530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
600530f9216SAlex Elder 					   hw_stats_quota_size),
601530f9216SAlex Elder 	},
602530f9216SAlex Elder 	{
603530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
604530f9216SAlex Elder 		.elem_len	= 1,
605530f9216SAlex Elder 		.elem_size	=
606530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
6077ac629e3SAlex Elder 				     hw_stats_drop_base_addr_valid),
6087ac629e3SAlex Elder 		.tlv_type	= 0x21,
6097ac629e3SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
6107ac629e3SAlex Elder 					   hw_stats_drop_base_addr_valid),
6117ac629e3SAlex Elder 	},
6127ac629e3SAlex Elder 	{
6137ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
6147ac629e3SAlex Elder 		.elem_len	= 1,
6157ac629e3SAlex Elder 		.elem_size	=
6167ac629e3SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
6177ac629e3SAlex Elder 				     hw_stats_drop_base_addr),
6187ac629e3SAlex Elder 		.tlv_type	= 0x21,
6197ac629e3SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
6207ac629e3SAlex Elder 					   hw_stats_drop_base_addr),
6217ac629e3SAlex Elder 	},
6227ac629e3SAlex Elder 	{
6237ac629e3SAlex Elder 		.data_type	= QMI_OPT_FLAG,
6247ac629e3SAlex Elder 		.elem_len	= 1,
6257ac629e3SAlex Elder 		.elem_size	=
6267ac629e3SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
627530f9216SAlex Elder 				     hw_stats_drop_size_valid),
6287ac629e3SAlex Elder 		.tlv_type	= 0x22,
629530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
630530f9216SAlex Elder 					   hw_stats_drop_size_valid),
631530f9216SAlex Elder 	},
632530f9216SAlex Elder 	{
6337ac629e3SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
634530f9216SAlex Elder 		.elem_len	= 1,
635530f9216SAlex Elder 		.elem_size	=
636530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_req,
637530f9216SAlex Elder 				     hw_stats_drop_size),
6387ac629e3SAlex Elder 		.tlv_type	= 0x22,
639530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_req,
640530f9216SAlex Elder 					   hw_stats_drop_size),
641530f9216SAlex Elder 	},
642530f9216SAlex Elder 	{
643530f9216SAlex Elder 		.data_type	= QMI_EOTI,
644530f9216SAlex Elder 	},
645530f9216SAlex Elder };
646530f9216SAlex Elder 
647530f9216SAlex Elder /* QMI message structure definition for struct ipa_init_modem_driver_rsp */
648530f9216SAlex Elder struct qmi_elem_info ipa_init_modem_driver_rsp_ei[] = {
649530f9216SAlex Elder 	{
650530f9216SAlex Elder 		.data_type	= QMI_STRUCT,
651530f9216SAlex Elder 		.elem_len	= 1,
652530f9216SAlex Elder 		.elem_size	=
653530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
654530f9216SAlex Elder 				     rsp),
655530f9216SAlex Elder 		.tlv_type	= 0x02,
656530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
657530f9216SAlex Elder 					   rsp),
658530f9216SAlex Elder 		.ei_array	= qmi_response_type_v01_ei,
659530f9216SAlex Elder 	},
660530f9216SAlex Elder 	{
661530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
662530f9216SAlex Elder 		.elem_len	= 1,
663530f9216SAlex Elder 		.elem_size	=
664530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
665530f9216SAlex Elder 				     ctrl_comm_dest_end_pt_valid),
666530f9216SAlex Elder 		.tlv_type	= 0x10,
667530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
668530f9216SAlex Elder 					   ctrl_comm_dest_end_pt_valid),
669530f9216SAlex Elder 	},
670530f9216SAlex Elder 	{
671530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
672530f9216SAlex Elder 		.elem_len	= 1,
673530f9216SAlex Elder 		.elem_size	=
674530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
675530f9216SAlex Elder 				     ctrl_comm_dest_end_pt),
676530f9216SAlex Elder 		.tlv_type	= 0x10,
677530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
678530f9216SAlex Elder 					   ctrl_comm_dest_end_pt),
679530f9216SAlex Elder 	},
680530f9216SAlex Elder 	{
681530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
682530f9216SAlex Elder 		.elem_len	= 1,
683530f9216SAlex Elder 		.elem_size	=
684530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
685530f9216SAlex Elder 				     default_end_pt_valid),
686530f9216SAlex Elder 		.tlv_type	= 0x11,
687530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
688530f9216SAlex Elder 					   default_end_pt_valid),
689530f9216SAlex Elder 	},
690530f9216SAlex Elder 	{
691530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_4_BYTE,
692530f9216SAlex Elder 		.elem_len	= 1,
693530f9216SAlex Elder 		.elem_size	=
694530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
695530f9216SAlex Elder 				     default_end_pt),
696530f9216SAlex Elder 		.tlv_type	= 0x11,
697530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
698530f9216SAlex Elder 					   default_end_pt),
699530f9216SAlex Elder 	},
700530f9216SAlex Elder 	{
701530f9216SAlex Elder 		.data_type	= QMI_OPT_FLAG,
702530f9216SAlex Elder 		.elem_len	= 1,
703530f9216SAlex Elder 		.elem_size	=
704530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
705530f9216SAlex Elder 				     modem_driver_init_pending_valid),
706530f9216SAlex Elder 		.tlv_type	= 0x12,
707530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
708530f9216SAlex Elder 					   modem_driver_init_pending_valid),
709530f9216SAlex Elder 	},
710530f9216SAlex Elder 	{
711530f9216SAlex Elder 		.data_type	= QMI_UNSIGNED_1_BYTE,
712530f9216SAlex Elder 		.elem_len	= 1,
713530f9216SAlex Elder 		.elem_size	=
714530f9216SAlex Elder 			sizeof_field(struct ipa_init_modem_driver_rsp,
715530f9216SAlex Elder 				     modem_driver_init_pending),
716530f9216SAlex Elder 		.tlv_type	= 0x12,
717530f9216SAlex Elder 		.offset		= offsetof(struct ipa_init_modem_driver_rsp,
718530f9216SAlex Elder 					   modem_driver_init_pending),
719530f9216SAlex Elder 	},
720530f9216SAlex Elder 	{
721530f9216SAlex Elder 		.data_type	= QMI_EOTI,
722530f9216SAlex Elder 	},
723530f9216SAlex Elder };
724